这是我的代码:
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
直到无限。
答案 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()
会返回一个字符串。