4 回答

TA貢獻1793條經驗 獲得超6個贊
現在,您的代碼分別要求每個元素。如果你輸入數字直到它像這樣結束
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]))
這實際上是構造矩陣的逆運算。

TA貢獻1817條經驗 獲得超14個贊
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
輸出:
130
304
603

TA貢獻1818條經驗 獲得超8個贊
問題是您試圖將整個字符串(每個 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)

TA貢獻1805條經驗 獲得超9個贊
這可以解決問題。
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().split()
while True:
ints = input().split()
if len(ints) == 3:
break
print("Invalid Input Received")
print("Enter the entries in a single line (separated by space): ")
entries = []
for a in ints:
entries.append(int(a))
matrix_input.append(entries)
print("Output")
for ele in matrix_input:
for d in ele:
print(d, end=' ')
print('')
添加回答
舉報