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

Python文本游戏开发:用户输入与随机变量值相等判断报错修复

问题背景

我是Python初学者,目前正在开发一款文字类游戏,需求为向玩家展示随机生成的密码片段,提示玩家输入正确的密码组合。
我的实现逻辑为:将数字存入safecode列表,打乱列表元素顺序后拼接生成4位随机数字作为正确密码;由于密码为随机生成,无法预先硬编码校验值,我尝试将用户输入与存储4位密码的变量做相等性判断,但功能始终异常:要么无法识别正确的输入值,要么抛出'int' object is not callable报错。
原始实现代码如下:

coderan = random.sample(safecode, len(safecode))

def convert(coderan):
    num = [str(n) for n in coderan]
    code = int("".join(num))
    return code

compcode = (convert(coderan))

print(type(compcode))

print(compcode)

c2 = int(input())
time.sleep(1)
ans = 'incorrect'
while(ans=='incorrect'):
    if(c2()==compcode):
        time.sleep(1)
        print(SCENE6COMP)
        ans = 'correct'
    else:
        time.sleep(1)
        print("That's not the right combination. Try again! ")
        c2 = input()
错误原因

代码里有两处核心问题:

  • 触发'int' object is not callable报错的原因:判断条件里写了c2(),把存储用户输入值的整数型变量c2当成了函数调用,普通变量后面加括号就会触发该类报错。
  • 无法识别正确输入的原因:第一次读取用户输入时将内容转成了整数类型,但循环内重新读取输入的语句c2 = input()没有做整数转换,拿到的是字符串类型值,字符串和整数做相等判断永远不会返回True;同时第一次输入读取放在循环外,用户首次输错后,新输入的值类型不匹配,校验逻辑完全失效。
修正后可运行代码
import random
import time

# 替换为你实际定义的safecode列表即可
safecode = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 如果需要生成4位密码,sample第二个参数直接传4即可;如果你的safecode本身只有4个元素,保留len(safecode)也可
coderan = random.sample(safecode, 4)

def convert(coderan):
    num = [str(n) for n in coderan]
    code = int("".join(num))
    return code

compcode = convert(coderan)
# 正式上线游戏可注释掉下面这行调试打印
print(compcode)
time.sleep(1)

ans = 'incorrect'
while ans == 'incorrect':
    # 输入读取移入循环内部,每次重试都重新获取输入,统一转成整数类型
    c2 = int(input())
    if c2 == compcode:
        time.sleep(1)
        # 替换为你实际定义的通关场景变量
        print(SCENE6COMP)
        ans = 'correct'
    else:
        time.sleep(1)
        print("That's not the right combination. Try again! ")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 02:28:03