Python 显式基整数转换错误
我只是花了最后一个小时制作你在你下面看到的东西。这是我第一次真正运用头脑中的东西。我在网上看到的关于这个问题的一切我都没有真正理解,因为我真的不知道发生了什么。我有点跳过了很多基本的东西,但我感觉我做功能生意做错了。有人能解释一下我的代码哪里出错了吗 代码:Python 显式基整数转换错误,python,typeerror,Python,Typeerror,我只是花了最后一个小时制作你在你下面看到的东西。这是我第一次真正运用头脑中的东西。我在网上看到的关于这个问题的一切我都没有真正理解,因为我真的不知道发生了什么。我有点跳过了很多基本的东西,但我感觉我做功能生意做错了。有人能解释一下我的代码哪里出错了吗 代码: 随机导入 uname=input(“怎么了!你的用户名是什么?”) 打印(“Hiya”+uname+“.Cool name;”) 全局猜测循环 def game(): 问题=无 无效的\u输入=错误 问题=输入(“你想玩我的史诗级猜谜游戏吗
随机导入
uname=input(“怎么了!你的用户名是什么?”)
打印(“Hiya”+uname+“.Cool name;”)
全局猜测循环
def game():
问题=无
无效的\u输入=错误
问题=输入(“你想玩我的史诗级猜谜游戏吗?”[Y/N])
如果有问题!=“Y”或“N”:
无效的_输入:bool=True
如果问题==“N”:
打印(“好吧,那我反正也不想和你玩了!”)
如果问题==“Y”:
猜一猜
如果无效_输入==真:
打印(“哎呀,好像您输入了一个无效字符。请用大写字母“Y”或“N”回答”)
问题=无
游戏()
全球尝试
def guess_loop():
全局猜测循环
随机数=random.randint(1,10)
无效的\u输入2=真
guess=int(输入(“太棒了,让我们玩吧!我选了一个介于1和10之间的数字。试着猜一下!”)
如果guess不是int(1,11):
无效的\u输入2=真
如果猜测>随机数:
尝试次数+=1
int(输入(“太低!猜得更高!”+f“这是您的第{trys}次尝试!”)
猜一猜
如果猜测>随机数:
尝试次数+=1
int(输入(“太高!猜得更低!”+f“这是您的第{trys}次尝试!”)
猜一猜
如果猜测==随机数:
new_game=input(f“恭喜{uname}你赢了!你想再玩一次吗?[Y/N]”)
如果是新游戏!=“Y”或“N”:
无效的_输入:bool=True
如果新游戏==“N”:
打印(“好吧,那我反正也不想和你玩了!”)
如果新游戏==“Y”:
猜一猜
当无效的_输入==True时:
打印(“哎呀,好像您输入了一个无效字符。请用大写字母“Y”或“N”回答”)
猜一猜
当无效_input2==True时:
打印(“哎呀,你好像输入了一个无效字符。请用1到10之间的数字回答”)
猜一猜
游戏()
输出:
怎么了!你的用户名是什么?R33
你好,R33。酷名字;)
你想玩我的史诗般的猜谜游戏吗???[Y/N]Y
太棒了,让我们玩吧!我在一和十之间选了一个数字。试着猜猜看!1.
回溯(最近一次呼叫最后一次):
文件“88888”,第58行,在
游戏()
文件“88888”,第18行,在游戏中
猜一猜
文件“88888”,第32行,在guess_循环中
如果guess不是int(1,11):
TypeError:int()无法转换具有显式基的非字符串
int()
函数不会按预期的方式重新运行列表。您可能希望将if guess not int(1,11)
更改为if guess not in range(1,11)
,这将返回一个迭代器,并实际检查guess
是否不在此范围内
我跳过了很多基本的东西
这是你的问题。你真的应该放慢速度,先用一个好的在线教程来理解基础知识
错误
int()无法转换具有显式基的非字符串
告诉您,当使用两个参数调用int()
函数时,第一个参数是字符串,第二个参数是给出基的整数
您可能想检查guess
是否在1到10之间,为此您需要执行以下操作:
if 1 <= guess <= 10:
int(1,11)
不是int
函数的有效使用。你是说如果不是1我跳过了很多基本的东西
,那么我建议不要这样做,回去学习你在做什么。在不理解代码的情况下键入代码称为。我这样说是因为int(1,11)
没有意义;你不能将两个整数的元组转换成一个整数,我不知道你为什么要这样做。@Davis我看过的所有在线教程都非常慢,速度非常慢,或者浏览了很多东西。我只是决定寻找一个编程挑战,并尝试用我自己的方式去做。我想,如果我唯一不能调试的就是一个小小的错误,那么我的方法一定是成功的。@r_33做绝对是最好的学习方式,只是像这样的“小错误”表明你跳过了很多基础知识,这就是我为什么说我做了什么。range(1,11)
不返回迭代器。它返回一个范围对象。这很重要,因为当您在
中使用进行成员资格测试时,它不必迭代所有值。这不起作用。所有内容都返回为无效的\u整数。如果guess=11:
可以正常工作,但由于某些原因1
无法正常工作。我现在没有时间想清楚我要睡觉了哈哈
if guess in range(1, 11):