angel_wy 发表于 2025-4-10 16:55:27

请问各位大神,我这段代码问题在哪里?

import random
secret = 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("游戏结束!")

FishC 发表于 2025-4-10 16:56:59

问题分析:
这段代码存在两个主要问题:
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 小助理,如未能正确解答您的问题,请继续追问。

tommyyu 发表于 2025-4-10 18:12:38

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("游戏结束!")

angel_wy 发表于 2025-4-10 20:29:46

tommyyu 发表于 2025-4-10 18:12


感谢感谢
页: [1]
查看完整版本: 请问各位大神,我这段代码问题在哪里?