我有一个二维6x6数组,A。我希望用户以下列格式或示例输入它的值:
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0其中0表示用户将写入值的位置。
这是我的密码。它返回split()中的一个错误。
def arr_input(x):
for i in range(6):
for j in range(6):
n = int(input().split(' '))
if n>=-9 and n<=9:
x[i][j] = n
print "\n"我不想在一行中输入。请帮帮我!
编辑1我需要的代码已经提供了:D.不过,我学到了一些新的和有帮助的东西。下面是执行我想要的任务的现有代码:
arr = []
for arr_i in xrange(6):
arr_temp = map(int,raw_input().strip().split(' '))
arr.append(arr_temp)发布于 2016-06-09 18:31:24
首先,您使用的是input(),当您在终端中输入数字时返回int。您应该使用raw_input()并逐行获取它。
第二,您正在尝试将列表转换为整数,您应该循环遍历列表值,然后在结果列表上进行转换和插入。
固定代码:
def arr_input(x):
for i in range(6):
num_list = raw_input().split(' ')
for j, str_num in enumerate(num_list):
n = int(str_num)
if n >= -9 and n <= 9:
x[i][j] = n
print "\n"在这里,我使用enumerate()通过每次迭代获得它的索引来循环数字列表。
发布于 2016-06-09 18:33:09
你对待输入的方式有不一致之处。在python 2.7中,and ()函数设计为读取stdin中的一个参数,而且只读取一个参数。
我不太清楚你是怎么读输入的。嵌套的for循环表示您试图逐个读取值,但拆分表明您正在逐行地读取这些值。为了涵盖所有的基础,我会解释这两种情况。其中至少有一个是相关的。
案例1:假设您一直在一个接一个地输入值,即
1
4
9
4
...在本例中,所发生的情况是that ()函数将输入自动解析为整数,当您尝试对整数运行拆分()时,会出现类型错误。Python需要一个字符串,而您正在提供一个int。那会打破的。有一个简单的解决方案--这可以通过简单地将这一行替换为
n = input()案例2:假设您正在逐行输入数字,作为字符串输入。我的意思是:
"1 3 4 5 7 9"
"4 1 8 2 5 1"
...这里发生的是int(.)正在尝试将字符串列表转换为整数。这显然会破坏代码。一个可能的解决方案是通过去掉内部for循环来重构代码。像这样的事情应该有效:
def arr_input(arr):
for i in range(6):
s = input()
nums_s = s.split(' ')
nums = [int(x) for x in nums_s]
arr.append(nums)
print "\n"
return arr
# Usage
a = []
print(a)
a = arr_input(a)
print(a)发布于 2016-06-09 18:54:21
试试看这个单线:
def arr_input(N=6):
print 'Enter %d by %d array, one row per line (elements separated by blanks)' % (N, N)
return [[n if abs(n)<=9 else 0 for n in map(int, raw_input().split())] for i in range(N)]下面的交互式会议演示了它的用法:
>>> A = arr_input(3)
Enter 3 by 3 array, one row per line (elements separated by blanks)
1 2 -3
4 5 -6
8 9 10
>>> A
[[1, 2, -3], [4, 5, -6], [8, 9, 0]]https://stackoverflow.com/questions/37733366
复制相似问题