我对Python比较陌生,我不明白以下代码会产生后续的意外输出:
x = input("6 divided by 2 is")
while x != 3:
print("Incorrect. Please try again.")
x = input("6 divided by 2 is")
print(x)
其输出为:
6 divided by 2 is 3
Incorrect. Please try again.
6 divided by 2 is 3
3
Incorrect. Please try again.
6 divided by 2 is
为什么while循环仍在执行,即使x等于3?
答案 0 :(得分:4)
input()
返回一个字符串,您将其与整数进行比较。这将始终返回false。
您必须将input()
打包到int()
进行有效比较。
x = int(input("6 divided by 2 is"))
while x != 3:
print("Incorrect. Please try again.")
x = int(input("6 divided by 2 is"))
print(x)
详情阅读int()
here。
答案 1 :(得分:1)
您收到此错误是因为您没有像这样解析输入:
x = int(input("6 divided by 2 is"))
如果用这个语句替换你的inputer语句,它就会起作用。
答案 2 :(得分:1)
输入法给出了字符串。所以你需要将int转换为int:
x = int(input("6 divided by 2 is"))
答案 3 :(得分:1)
以下是我对你问题的回答
Guesses = 0
while(Guesses < 101):
try:
x = int(input("6 divided by 2 is: "))
if(x == 3):
print("Correct! 6 divide by 2 is", x)
break
else:
print("Incorrect. try again")
Guesses += 1
except ValueError:
print("That is not a number. Try again.")
Guesses += 1
else:
print("Out of guesses.")
我假设您希望用户input
number
,因此我将您的代码放入包含while\else loop
的{{1}}。 try\except loop
循环确保如果用户try\except
是一个数字,则会显示inputs
,并会告知他们ValueError
。如果inputted was not a number
限制不高于while\else loop
,Guesses
可确保用户输入问题。此代码将确保如果用户100
为guesses the answer
,则系统会提示用户3
;如果用户猜到除了3(数字)以外的任何内容they got the answer right and the loop will end
和用户answer will be incorrect
;如果will be prompted the question again
将其归类为ValueError,则会通知user guesses a string
。
考虑到这是很久以前的问题,我假设你可能已经忘了这个,或者你想出了答案,但如果不试试这个并告诉我你是否喜欢这个答案。谢谢:))
答案 4 :(得分:0)
我现在自己尝试使用python 2.6,并且在没有转换为int的情况下获得了一个int。例如,当我尝试以下操作时:
x = input("6 divided by 2 is")
print "Your input is %s, %s" % (x, type(x))
我得到以下内容:
6 divided by 2 is 2
Your input is 2, <type 'int'>
这是一个版本问题吗?或者可能是环境问题(我使用OS X)? 我的结论是,使用int()。
使用以前的建议应该是一个好习惯