在Python中输入相同的行

时间:2015-02-18 12:20:39

标签: python

我的Python输出有问题

我正在尝试以

形式输入
2
1 10
2 20

2是测试次数,每行代表函数使用的数字

为了能够有一个输出,我将值存储在Python的选项卡中。问题是我的标签没有正确的值。使用之前给出的值,我在查看选项卡时得到以下结果

1 2 20 5

这是我的代码,谢谢:

nbTest = input()
Tab = range(1,2*nbTest + 2)

for i in range(1,nbTest + 1):
  a,b = map(int,sys.stdin.readline().split())
  Tab[i] = a
  Tab[i+1] = b
  i = i + 1

print Tab[1], Tab[2], Tab[3], Tab[4]

2 个答案:

答案 0 :(得分:0)

首先,您不必在python中“初始化”列表,所以

Tab = range(1,2*nbTest + 2)

是不必要的。

第二:行

i = i + 1

不执行任何操作,因为之后会立即重新分配变量i

第三:您应该将值元组附加到输出列表中,如下所示:

nbTest = int(raw_input())
inputs = []

for i in range(0,nbTest):
    a,b = map(int, raw_input().split())
    inputs.append((a,b))

print nbTest
for el in inputs:
    print el[0], el[1]

答案 1 :(得分:0)

您不应该修改循环内的循环变量i。 由于i = i + 1循环重新分配了i,因此for行无效,因此您使用Tab[i+1]覆盖上一次迭代的Tab[i]。如果您希望i在每次迭代时增加2,请使用range(1, nbTest+1, 2)

另请注意,您无需初始化列表大小,只需执行Tab=list(),然后使用Tab += [a,b]

此外,pythons数组从0开始,因此你的范围也必须从0开始。否则,列表的第一个插槽将不会被替换。

注意如果您使用的是python3,如果希望Tab = list(range(1, 2*nbTest+2))成为列表,则必须Tab