请问各位大神,我这段代码问题在哪里?
import randomsecret = random.randint(1,10)
times = 3
print("================================================================")
print("猜猜我现在心里想的数字是什么哦:",end = "")
while not input().isdigit():
print("大哥,格式错误,请输入正确的数字:", end = "")
else:
guess = 0
while (times>0) and (guess!= secret):
temp = input()
guess = int(temp)
times = times - 1
if guess == secret:
print("哇!你是我肚子里的蛔虫么^-^")
else:
if guess < secret:
print("小了!小了!")
else:
print("哥,大了,大了!")
if times >0:
print("再猜一次哦:", end = "")
else:
print("机会用完了T_T")
else:
print("游戏结束!") 问题分析:
这段代码存在两个主要问题:
1. 第一次输入成功后需要重复输入(没有保存首次正确输入的值)
2.后续循环没有做数字验证(输入字母会崩溃)
3. 次数计算逻辑有误(正确猜中后仍然会扣除次数)
修改建议:
使用统一的输入验证流程,合并两个循环,优化提示逻辑:
import random
secret = random.randint(1,10)
times = 3
print("================================================================")
while times > 0:
prompt = "猜数字(剩余{}次): " if times < 3 else "猜猜我现在心里想的数字是什么哦:"
temp = input(prompt.format(times))
if not temp.isdigit():
print("大哥,格式错误,请输入1-10的数字")
continue
guess = int(temp)
times -= 1# 每次尝试都扣除次数
if guess == secret:
print("哇!你是我肚子里的蛔虫么^-^")
break
elif guess < secret:
print("小了!小了!")
else:
print("哥,大了,大了!")
if times == 0:
print("机会用完了T_T 正确答案是", secret)
print("游戏结束!")
[*]改进说明:
[*]使用单一循环结构,简化代码逻辑
[*]每次输入都进行数字验证(用continue跳过错输)
[*]统一格式化提示语句,自动显示剩余次数
[*]正确处理最后一次尝试后的提示
[*]猜中后立即break退出循环,不再浪费次数
提示:可以进一步优化范围验证(比如1-10之间),现在版本只要输入数字就会接受
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 import random
secret = random.randint(1,10)
times = 3
print("================================================================")
guess = 0
while (times>0) and (guess!= secret):
print("猜猜我现在心里想的数字是什么哦:",end = "")
temp = input()
while not temp.isdigit(): #输入部分要放到主循环里面
print("大哥,格式错误,请输入正确的数字:", end = "")
temp = input()
guess = int(temp)
times = times - 1
if guess == secret:
print("哇!你是我肚子里的蛔虫么^-^")
else:
if guess < secret:
print("小了!小了!")
else:
print("哥,大了,大了!")
if times >0:
print("再猜一次哦:", end = "")
else:
print("机会用完了T_T")
else:
print("游戏结束!")
tommyyu 发表于 2025-4-10 18:12
感谢感谢
页:
[1]