Python“if”和“while”条件不起作用

2024-04-19 14:32:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在写一个简单的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的大小。怎么回事?!在


Tags: 文件代码命令程序算法true列表len
1条回答
网友
1楼 · 发布于 2024-04-19 14:32:55

您希望在while循环测试中使用and,而不是or

while i < len(list1) and j < len(list2):

如果其中一个测试是真的,(i < len(list1)) or (j < len(list2))将为真。所以只要i小于len(list1),那么i就没有小于len(list1)False or True仍然是{}。在

接下来,if测试很可能比较字符串,而不是整数。字符串按字典顺序进行比较:

^{pr2}$

第一个字符在测试其他字符之前进行比较,'1''2'之前排序。在

而是比较整数:

if int(list1[i]) < int(list2[j]):

但是,您可能希望在读取文件输入时将其转换为整数。在

相关问题 更多 >