我在写一个简单的Python程序。它应该从制表符描述的文件中读取两个已排序的列表,并将它们合并到一个单独的已排序列表中。这个算法不是太难,但是Python似乎忽略了循环和if语句中的条件!在
这是我的输入文件:
1 2 3 10
7 9 100
以下是用于调试的打印命令的相关代码:
^{pr2}$程序读取正确的值,但似乎总是在每次迭代时将if条件读为true。在
list1 len =4, list2 len = 3
i = 0
list1[i] = 1
1 < 7
i = 1
list1[i] = 2
2 < 7
i = 2
list1[i] = 3
3 < 7
i = 3
list1[i] = 10
10 < 7
i = 4
Traceback (most recent call last):
File "q2.py", line 22, in <module>
print 'list1[i] = ' + str(list1[i])
IndexError: list index out of range
不仅if语句不起作用(10 < 7
不正确!),它在while
循环中也失败了,因为'i'
达到了4,list1
的大小。怎么回事?!在
您希望在
while
循环测试中使用and
,而不是or
:如果其中一个测试是真的,}。在
(i < len(list1)) or (j < len(list2))
将为真。所以只要i
小于len(list1)
,那么i
就没有小于len(list1)
。False or True
仍然是{接下来,
^{pr2}$if
测试很可能比较字符串,而不是整数。字符串按字典顺序进行比较:第一个字符在测试其他字符之前进行比较,
'1'
在'2'
之前排序。在而是比较整数:
但是,您可能希望在读取文件输入时将其转换为整数。在
相关问题 更多 >
编程相关推荐