Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么这是一个无限循环 a=原始输入(“输入数字”) i=0 数字=[] 而我_Python_Python 2.7 - Fatal编程技术网

Python 为什么这是一个无限循环 a=原始输入(“输入数字”) i=0 数字=[] 而我

Python 为什么这是一个无限循环 a=原始输入(“输入数字”) i=0 数字=[] 而我,python,python-2.7,Python,Python 2.7,所以我在跟踪lpthw,只是在搞乱代码,为什么我使用原始输入并输入一个像6这样的数字,这个循环会变成一个无限循环?i=i+1是否应该阻止这种情况发生?raw\u输入返回一个字符串。变量a是字符串,在python中字符串大于整数。 您需要将a转换为int: a = raw_input ("enter a number") i = 0 numbers = [] while i < a: print "At the top i is %d" % i numbers.append

所以我在跟踪lpthw,只是在搞乱代码,为什么我使用原始输入并输入一个像6这样的数字,这个循环会变成一个无限循环?i=i+1是否应该阻止这种情况发生?

raw\u输入返回一个字符串。变量a是字符串,在python中字符串大于整数。
您需要将a转换为int:

a = raw_input ("enter a number")
i = 0
numbers = []

while i < a:
    print "At the top i is %d" % i
    numbers.append(i)

    i = i + 1
    print "Numbers now:", numbers
    print "At the bottom i is %d" % i

print "The numbers: "

for num in numbers:
    print num   

原始输入返回一个字符串。变量a是字符串,在python中字符串大于整数。
您需要将a转换为int:

a = raw_input ("enter a number")
i = 0
numbers = []

while i < a:
    print "At the top i is %d" % i
    numbers.append(i)

    i = i + 1
    print "Numbers now:", numbers
    print "At the bottom i is %d" % i

print "The numbers: "

for num in numbers:
    print num   

在Python2.7中,
raw_input
返回一个
str
(字符串)。因此,当你比较
i
时,你是在比较一个整数和一个字符串,它会

要解决此问题,请将输入转换为整数:

a = int(raw_input("enter a number"))
注意:正如@AshwiniChaudhary评论的那样,在Python 3.x中比较(与
=
)一个整数和一个字符串将引发一个异常:

a = int(raw_input(...))
TypeError:无序类型:int()str()

在Python2.7中,
raw_input
返回一个
str
(字符串)。因此,当你比较
i
时,你是在比较一个整数和一个字符串,它会

要解决此问题,请将输入转换为整数:

a = int(raw_input("enter a number"))
注意:正如@AshwiniChaudhary评论的那样,在Python 3.x中比较(与
=
)一个整数和一个字符串将引发一个异常:

a = int(raw_input(...))
TypeError:无序类型:int()str()

如果使用
原始输入
,则
a
将是一个字符串。您需要一个
int
,以便
i
比较按预期工作。使用
input
代替
raw\u input


作为将来的参考,Python3中删除了
input
,并将
raw\u input
重命名为
input
,因此在Py3中需要
int(input(…)

如果使用
raw\u input
,那么
a
将是一个字符串。您需要一个
int
,以便
i
比较按预期工作。使用
input
代替
raw\u input


作为将来的参考,Python3中删除了
input
,并将
raw\u input
重命名为
input
,因此您需要在Py3中使用
int(input(…)

您正在做两件事,这会导致无限循环

  • 制表符和空格是混合的,python关心缩进,所以确保i=i+1与数字对齐

  • 它继续运行的实际原因是,当python收集原始输入时,它会将其转换为字符串,而不是整数,因此比较不会像您预期的那样工作。对此进行更改,它将按预期工作:


  • a=int(原始输入(“输入一个数字”)

    您正在做两件事,这两件事可能导致无限循环

  • 制表符和空格是混合的,python关心缩进,所以确保i=i+1与数字对齐

  • 它继续运行的实际原因是,当python收集原始输入时,它会将其转换为字符串,而不是整数,因此比较不会像您预期的那样工作。对此进行更改,它将按预期工作:


  • a=int(原始输入(“输入一个数字”)

    因为在Python2中整数总是小于字符串。我错认为这是答案,但你混合了制表符和空格。这很糟糕。我不知道它为什么会跑;也许这只是复制/粘贴到SO时的一个问题,但请确保只使用空格。顺便说一句,修复缩进。。。这样,代码甚至不会编译。
    i=i+1
    是否在while循环中?请修正你的缩进。最好将其写成
    i+=1
    。因为在Python 2中,整数总是小于字符串。我错认为这是答案,但您将制表符和空格混合在一起。这很糟糕。我不知道它为什么会跑;也许这只是复制/粘贴到SO时的一个问题,但请确保只使用空格。顺便说一句,修复缩进。。。这样,代码甚至不会编译。
    i=i+1
    是否在while循环中?请修正你的缩进。最好将其写成
    i+=1
    。还要提到这样的比较在Python3中会产生错误的事实。还要提到这样的比较在Python3中会产生错误的事实。