错误“类型错误:必须str的不是int”
问题描述:
这里是我的代码,它执行一个简单的数字猜谜游戏:错误“类型错误:必须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)):
。
答
您需要将输入转换第一个整数
lower = int(input('Enter the lower range: '))
upper = int(input('Enter the upper range: '))
要解释的错误:错误消息是有点误导,因为它说,你需要str
,而不是int
,而不是周围的其他方式。但是,这是因为在执行内部randrange
函数之前,b
会增加,因此您有例如'10'+1
并且会产生此错误。
答
你正在从input()
函数中取出你的“数字”。
input()
作为一个字符串来找你。您需要使用int(lower)
将其转换为数字形式,然后将值转换为randint()
。
(误差从b+1
茎 - randint
试图做加法,但添加到字符串定义为级联,这需要两个字符串。)
提示:在Python 3(不像蟒2),输入返回一个字符串...做randint('1','5')返回一个类似于你得到的错误(我没有python3方便)...你想要做upper = int(input(“.. ..“)),同样对于更低的 – Foon
这个'if〜(猜测在范围内(低,高)):'是'〜'运算符的一个非常用的用法。如果猜测不在范围内(较低,较高):'或者更简单一些,如果较低 Matthias