如何解决如何从用户输入中捕获矩阵并在用户输入时将其打印出来?
我正试图创建一个3x3矩阵的numpy。我想通过用户输入捕获矩阵输入,然后在用户输入时打印出矩阵。
这是我现在拥有的,它抛出一个
ValueError: invalid literal for int() with base 10:
当我运行它时,我不知道为什么。我不会在任何地方输入字母“ a”,而只能输入数字。
def matrix():
row = int(3)
column = int(3)
matrix_input = []
print("Enter the entries in a single line (separated by space): ")
for i in range(row): # A for loop for row entries
entries = []
for j in range(column): # A for loop for column entries
entries.append(int(input()))
matrix_input.append(entries)
# matrix_input = np.array(entries).reshape(row,column)
print(matrix_input)
目标是使用户在三行中输入3个数字。 示例:
130
304
603
然后,程序将按照用户输入的相同格式并完全按照用户键入的内容进行退回。
130
304
603
任何指导将不胜感激。谢谢
解决方法
现在,您的代码分别询问每个元素。如果您输入数字,直到它本身像
111
222
333
444
555
666
777
888
999
程序将返回
[[111,222,333],[444,555,666],[777,888,999]]
之所以会这样,是因为input()
位于最里面的循环中,因此被调用9次。
因此,如果您要按指示输入以空格分隔的值,则可以使用列表推导将其转换为数字列表:
row = int(3)
matrix_input = []
print("Enter the entries in a single line (separated by space): ")
for i in range(row): # A for loop for row entries
matrix_input.append([int(k) for k in input().split(' ')])
for out in matrix_input:
print('{0} {1} {2}'.format(*out))
这将要求三个条目,这些条目沿空格分开并转换为整数。如果要浮动,则可以使用float(k)
代替int(k)
。
print命令使用解包以及for ... in
返回行的事实。
或者,您可以使用' '.join()
,它更灵活:
for out in matrix_input:
print(' '.join([str(el) for el in out]))
这实际上是矩阵构造的逆运算。
,Id Name Old_Id
---------------------
1 Paul null
2 Paul 1
3 Jim null
4 Paul 2
5 Tim null
输入:
def matrix():
row = int(3)
column = int(3)
matrix_input = []
print("Enter the entries in a single line (separated by space): ")
for i in range(row): # A for loop for row entries
ints =input()
entries = []
for a in ints:
entries.append(int(a))
matrix_input.append(entries)
for ele in matrix_input:
for d in ele:
print(d,end='')
print('')
matrix()
输出:
Enter the entries in a single line (separated by space):
130
304
603
,
问题是您正试图将整个字符串(每个int之间带有空格的输入)转换为整数。
相反,您需要拆分输入。见下文:
def matrix():
row = int(3)
column = int(3)
matrix_input = []
print("Enter the entries in a single line (separated by space): ")
input_str = input()
entries = []
entries.extend([int(x) for x in input_str.split(' ')])
for item in entries:
print(item)
,
这可以解决问题。
df = df.replace(np.inf,np.nan)
Out[2]:
A B C D
0 1 2 2.000000 0.500000
1 2 3 1.500000 0.666667
2 3 4 1.333333 0.750000
3 0 5 NaN 0.000000
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。