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

Python终端无法显示已赋值的x、y变量值问题排查

问题根源

你的代码有3个核心错误,直接导致变量只显示一次、逻辑跑不通:

  • 缩进完全混乱:定义game()函数后,你没有把生成随机数、猜数字的核心逻辑缩进放到函数体里,导致调用game()时根本不会重新生成x、y,也不会重置猜测次数,所有逻辑只在脚本第一次运行时执行一次。
  • int()参数用法错误:你写的int(input('add these numbers '),print(x,y))完全不符合语法,int()的第二个参数是指定数字转换的进制(比如传2代表把输入按二进制转整数),print(x,y)的返回值是None,传在这里会触发隐式错误,你要先打印x、y的值,再弹出输入提示。
  • 冗余无效代码:重复导入random、itertools,写了itertools.repeat(1)但既不赋值也不调用,完全不生效。
修正后的可运行代码
import random

def playagain():
    playagain_opt = input('Would you like to play again? Write YES or NO: ').lower()
    if playagain_opt == 'yes':
        game()
    elif playagain_opt == 'no':
        print('Ok, Bye!!')
    else:    
        print('So you dumbass really cannot even follow simple instructions huh')

def game():
    # 所有游戏逻辑都放到game函数里,每次调用都会重新生成数字、重置次数
    x = random.randint(1,100)
    y = random.randint(1,200)
    guessTrials = 3
    secret_num = x + y
    while guessTrials >= 1:
        try:
            # 先打印要计算的两个数,再接收输入
            print(f"请计算两个数的和:{x} + {y} = ?")
            guess = int(input('请输入你的答案:'))
        except ValueError:
            print('Thats not a whole number!')
            # 输错格式不扣次数,直接进下一轮循环
            continue
        if guess < secret_num:
            print('TOO LOW')
        elif guess > secret_num:
            print('TOO HIGH')
        else:
            print('You got it mate!')
            playagain()
            return
        # 猜错才扣次数
        guessTrials -= 1
        print(f'Thats not it. You have {guessTrials} tries left')
        if guessTrials == 0:
            print(f'My number was {secret_num}')
            playagain()

if __name__ == "__main__":
    playgame = input('Would you like to play an addition game? Write yes or no: ').lower()
    if playgame == 'yes':
        game()
    elif playgame == 'no':
        print('Ok, Bye!!')
    else:    
        print('why u gotta try me like that man')
改动说明
  • 把所有游戏核心逻辑全部缩进放到game()函数内部,每次重开游戏都会重新生成随机数、重置3次猜测机会,x和y也会每轮猜题前都打印。
  • 把print(x,y)从int()参数里移出来,放到每次循环接收输入之前,保证每轮猜的时候都能看到两个加数。
  • 删掉了没用的itertools相关代码和重复导入语句,加了输入非数字时的continue逻辑,避免输错格式平白扣次数。
  • 给输入统一加了.lower()转小写,用户输入YES/Yes/yes都能识别,不会因为大小写误触发错误提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:45:31