python - 如何从用户输入中捕获矩阵并在用户输入时将其打印出来?
问题描述
我正在搞乱 numpy 试图创建一个 3x3 矩阵。我想通过用户输入捕获矩阵输入,然后在用户输入矩阵时将其打印出来。
这就是我现在所拥有的,它抛出了一个
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)
. for ... in
print 命令使用解包和返回行的事实。
或者,您可以使用' '.join()
更灵活的方法:
for out in matrix_input:
print(' '.join([str(el) for el in out]))
这实际上是矩阵构造的逆运算。
推荐阅读
- r - R中的双向重复测量方差分析
- r - 如何使用ggplot将轴元素放入框内
- python - 在python中获取spark提交作业的结果
- javascript - 使用正则表达式按键名提取 javascript 对象值
- sql - 创建一个索引,防止客户重复订单
- ios - 钥匙串项目更新时的NSInternalInconsistencyException
- powershell - PowerShell:对 CPU 使用率进行排序以显示占用 2% 及以上的进程
- python - Python Speech_Recognition - “这个音频源已经在上下文管理器中”
- java - 当类在类路径上时,Surefire 抛出 SurefireReflectionException
- python - 如何根据数据帧(pydub/python)中指定的起始/偏移量分割一系列录音