import random
number = 50
guess = raw_input("Try to guess my number...")
while guess!=number:
if guess>number:
print "Lower"
elif guess==number:
print "Correct, you win!"
else:
print "Higher"
guess = raw_input("Try again...")
我真的很新,我想知道为什么它不会显示"更高"当我输入的数字小于数字时,加上,我怎样才能使数字随机,因为randrange(1,100)无法工作
答案 0 :(得分:2)
它无效,因为raw_input
会返回一个字符串。
"50" == 50 # False!
您需要确保检查相同类型的相等性。首先尝试转换为int:
int(raw_input("Try to guess my number..."))
当然,如果您尝试将非数字字符串转换为int,这将引发异常,因此您还需要一些错误处理:
valid_num = False
while not valid_num:
guess = raw_input()
try:
guess_num = int(guess)
valid_num = True
except ValueError:
print "Please enter a valid number"
while guess!=number:
if guess>number:
print "Lower"
elif guess==number:
print "Correct, you win!"
else:
print "Higher"
答案 1 :(得分:1)
首先,当您使用raw_input("Try to guess my number...")
时,ir会返回一个字符串str!=int
,因此您运行无限 while guess!=number:
循环作为条件对于字符串和整数的比较,它总是成立。
另一件事与while
和elif
的陈述相矛盾,当你使用while guess!=number:
运行while条件时,你怎么能期望这个elif guess==number:
语句在while语句,所以答案是在while
循环之外处理这种情况。
import random
number = 50
guess = int(raw_input("Try to guess my number..."))
while guess!=number:
if guess>number:
print "Lower"
else:
print "Higher"
guess = int(raw_input("Try again..."))
print "Correct, you win!"
答案 2 :(得分:0)
raw_input返回一个字符串。您需要将其转换为int以进行比较:
guess = int(raw_input("Try to guess my number..."))
str
永远不会== int
答案 3 :(得分:0)
关于你的randrange问题:
您应该使用random.randint(a,b)代替。它选择数字a和b之间的随机整数(我认为是独占的。)