python:while循环不检查条件

python:while循环不检查条件,python,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 它给出了一个运行时错误 虽然n被分配为6,并且i从0开始,但是为什么当i=6时不结束呢?i的值增加了超过n直到无穷大。n是一个字符串raw_input()返回字符串,并在空格上拆分i是一个整数。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
它给出了一个运行时错误


虽然
n
被分配为6,并且
i
从0开始,但是为什么当i=6时不结束呢?
i
的值增加了超过
n
直到无穷大。

n
是一个字符串
raw_input()
返回字符串,并在空格上拆分
i
是一个整数。Python在比较时不强制字符串为整数,并且总是将数字排序在字符串之前,因此打印n 6. >>>类型(n) >>>打印1>>打印100
n
是一个字符串,不应与数字进行比较。

发生的情况是
split()
函数返回一个字符串,并且在您的条件下

while(i < n):

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

n
w
是字符串。使用
int
将它们转换为整数,很有可能会很好。您必须记住,在Python中,一切都是一个对象。所以字符串不仅仅是一个字符数组,它还是一个对象。Python也是强类型的,因此(通常)必须对所有内容进行类型转换,才能将其视为所需的对象类型。可能是输入错误,但该比较(
int
)将始终返回
True
@TyrantWave edited。谢谢,非英语母语人士:)
>>> 6 < '6'
True
n = int(x[0])
>>> print n
6
>>> type(n)
<type 'str'>
>>> print 1 < n
True
>>> print 100 < n
True
while(i < n):
n = int(x[0])