python:while循环不检查条件

时间:2014-05-21 06:57:31

标签: python

这是我的代码:

l=raw_input()
x=l.split(' ')
n=x[0]
w=x[1]
l=raw_input()
i=0
print n
while(i<n):
    print "1 %d" %i
    i=i+1

之类的输入
6 6
1 2 3 4 5 3

它给出了运行时错误。

虽然为n分配了6并且i从0开始,但为什么在i = 6时没有结束? i的值增加超过n直到无限。

3 个答案:

答案 0 :(得分:5)

n是一个字符串; raw_input()返回字符串,然后将其拆分为空格。 i是一个整数。 Python在比较时不会将字符串强制转换为整数,并且总是在字符串之前对数字进行排序,因此i<n 总是为True:

>>> 6 < '6'
True

n转换为整数:

n = int(x[0])

答案 1 :(得分:2)

>>> print n
6
>>> type(n)
<type 'str'>
>>> print 1 < n
True
>>> print 100 < n
True

n是一个字符串,不应与数字进行比较。

答案 2 :(得分:1)

split()函数会返回字符串,并且条件

while(i < n):

您正在将字符串与整数进行比较。该比较将始终返回True

如何解决?

您可以将n转换为整数:

n = int(x[0])

注意:另外,请记住raw_input()会返回一个字符串。