求助:以下Python猜数字游戏代码缩进是否正确?PyCharm运行报错
关于猜数字游戏代码的问题分析与修复
嘿,我来帮你捋捋这个问题~先从你提到的缩进疑问说起,顺便把代码里的其他小问题也一起解决掉:
一、先明确你提到的缩进问题
你说的if usersPrediction < myNumb...这段代码,必须缩进在for循环的代码块内——也就是和usersPrediction = input()保持相同的缩进层级(Python里一般用4个空格)。如果不缩进,Python会认为这段if逻辑不属于循环体,要么直接报错,要么完全不符合游戏的交互逻辑(毕竟我们需要每一次用户输入后都判断对错)。
另外这段代码里还有个小笔误:myNumb应该是myNumber,变量名拼写不一致也会触发报错哦。
二、现有代码的其他报错点
除了缩进,你当前的代码还有几个会直接导致运行失败的问题:
- 变量名错误:你用
userName = input()获取了用户名,但打印欢迎语时写成了myName,这会触发NameError - 输入类型不匹配:
usersPrediction是用户输入的字符串,直接和数字myNumber比较会触发TypeError - 逻辑不完整:缺少猜对/猜错后的反馈,也没处理用完次数的情况
三、修复后的完整可运行代码
我帮你调整并补全了逻辑,同时解决了所有问题:
# 后续可以导入random模块生成随机数,比如 my_number = random.randint(1,10) print('Hello! What is your name?') user_name = input() print(f'{user_name}, Welcome to Guess it!') print('You must guess the number that I have in my mind (from 1 to 10) within 5 chances') my_number = 3 # 后续替换成random生成的随机数即可 print('Give your prediction') for no_of_chances in range(5, 0, -1): # 提示剩余机会 print(f'You have {no_of_chances} chance(s) left') # 处理用户输入,转换为整数并兼容非数字输入 try: users_prediction = int(input()) except ValueError: print('Please enter a valid number!') continue # 这里的if判断必须缩进在for循环内,和上面的代码同层级 if users_prediction == my_number: print('Congratulations! You guessed it right!') break elif users_prediction < my_number: print('Too low! Try a higher number.') else: print('Too high! Try a lower number.') else: # 循环正常结束(用户用完所有机会都没猜对) print(f'Sorry, you ran out of chances! The number was {my_number}')
四、额外小提示
等你想实现随机数字功能时,只需要在代码开头加上import random,然后把my_number = 3替换成my_number = random.randint(1,10)就可以啦~
内容的提问来源于stack exchange,提问作者Md Arshad Ali
相关产品推荐
相关产品推荐

