这里是我的代码,它执行一个简单的数字猜谜游戏:错误“类型错误:必须str的不是int”
i = 1
lower = input('Enter the lower range: ')
upper = input('Enter the upper range: ')
from random import randint
answer = randint(lower, upper)
guess = input("What's the number? ")
while guess != answer:
if ~(guess in range(lower, upper)):
print('Your guess must be in the range', lower, 'to', upper)
i = i - 1
elif guess < answer:
print('Too low!')
elif guess > answer:
print('Too high!')
guess = input("What's the number? ")
i = i + 1
print('Congrats! You correctly guessed the number to be ', answer, '! It took you ', i, ' tries.', sep='')
当我尝试运行它,在命令提示符下给我以下错误:
File "C:\Users\username\AppData\Local\Programs\Python\Python36-32\lib\random.py", line 220, in randint
return self.randrange(a, b+1)
TypeError: must be str, not int
编辑:谢谢你的解决方案,改变input(...)
到int(input(...))
固定我的代码。我还会补充说,第8行还包含一个错误。它应该是:if not (guess in range(lower, upper + 1)):
。
提示:在Python 3(不像蟒2),输入返回一个字符串...做randint('1','5')返回一个类似于你得到的错误(我没有python3方便)...你想要做upper = int(input(“.. ..“)),同样对于更低的 – Foon
这个'if〜(猜测在范围内(低,高)):'是'〜'运算符的一个非常用的用法。如果猜测不在范围内(较低,较高):'或者更简单一些,如果较低<=猜测<较高:',则更好。 – Matthias