我不明白为什么当用户输入“0”时,循环不会退出。
def floatInput():
done = False
while not done:
integerIn = input("Please enter an integer < 0 to finish >: ")
try:
integerIn = int(integerIn)
except:
print("I was expecting an integer number, please try again...")
import sys
sys.exit()
if integerIn == "0":
done = True
else:
integers.append(integerIn)
return integers
答案 0 :(得分:2)
原因是因为integerIn
是一个整数,您将其视为if integerIn=="0"
中的字符串。将其替换为integerIN==0
即可完成工作。
答案 1 :(得分:2)
def floatInput():
done = False
while not done:
integerIn = input("Please enter an integer < 0 to finish >: ")
try:
integerIn = int(integerIn)
except:
print("I was expecting an integer number, please try again...")
import sys
sys.exit()
上面的所有内容都很好,但是一旦你进行了比较,就会忘记你已经将输入转换为int。
if integerIn == "0":
应该是
if integerIn == 0:
答案 2 :(得分:1)
您正在转换为整数,然后检查字符串&#34; 0&#34;的相等性。
答案 3 :(得分:1)
试试这个
if integerIn == 0:
现在应该工作。
答案 4 :(得分:1)
编辑关于使用input
或raw_input
的建议。刚刚看到你的python 3.x标签,但决定留给未来的读者。
那里你遇到的问题很少......
首先,在这一行:
integers.append(integerIn)
开始时integers
在哪里?除非它是全局名称,否则必须在函数中定义它。
第二,在这一行:
if integerIn == "0":
你在这里比较整数和字符串,这里有一个东西:在python中(在这里使用python 2.7)如果你进行比较,字符串将比任何数字更大,所以{ {1}}将始终评估为integerIn == "0"
。
修复此问题:
False
最后,我应该告诉你这个......你的代码看起来会抛出if integerIn == 0:
,而不是执行你在NameError
声明中所做的事情。
尝试使用以下测试用例并尝试自己解释行为:)
except
要避免下次出现此类问题,请使用Please enter an integer < 0 to finish >: test
Please enter an integer < 0 to finish >: "test"
代替raw_input
。所以这一行:
input
应该是这样的:
integerIn = input("Please enter an integer < 0 to finish >: ")
注意:我不确定,但我认为integerIn = raw_input("Please enter an integer < 0 to finish >: ")
在python 3.x中不存在,而raw_input
将完全相同。如果我错了,请纠正。
但是,如果您正在使用python 3,那么我认为您应该没有问题。
这是python 2.x中的input
vs input
:
raw_input()
将评估用户输入,然后将其返回。
input
将以字符串形式返回用户输入。
这样:
raw_input