You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python猜数字游戏部分逻辑不执行:范围内错误值未输出对应提示

问题原因

  • 问题根源为变量作用域混淆:f1()函数中读取的y是全局作用域下初始值为0的变量,而你在f3()函数内部修改的是作为参数传入的局部变量y,二者是完全独立的两个变量。全局的y永远保持初始值0,所以每次f1()判断都会触发Out of range的分支,不会打印错误重试提示。

修复方案

最优方案是调整函数设计,将当前用户输入的猜测值作为参数传入f1(),避免依赖不稳定的全局变量,修改后的完整代码如下:

import random
from ast import literal_eval

x = random.randint(1,10)
y = 0

# 给f1增加y参数,接收当前猜测值
def f1(y):
    if y not in range(1,11):
        print('Out of range')
    else:
        print('Wrong! Try again. You can exit anytime by pressing  Ctrl + C')
def f2():
    print('Well done!')
def f3(x,y):
    while x != y:
        try:
            y = literal_eval(input('Guess a number from 1 to 10:\n'))
            if x != y:
                # 调用时传入当前的y值
                f1(y)
                continue
            else:
                f2()
                break
        except ValueError:
            print('This is not a number')
        except SyntaxError:
            print('This is not a number')
        except KeyboardInterrupt:
            break
f3(x,y)

修改点说明:

  1. 给f1函数新增入参y,使其直接使用调用方传入的最新猜测值做判断
  2. 在f3中调用f1时,把用户刚输入的y作为参数传入,保证判断逻辑匹配当前输入

内容的提问来源于stack exchange,提问作者User

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:06:08