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

Tamagotchi模拟器心情状态无法正常更新问题求助

Tamagotchi模拟器心情状态不更新问题修复

你的代码存在以下几个核心问题,导致状态始终停留在Happy:

  • 字符串大小写不匹配:初始状态赋值为"Happy",但后续判断状态时用了'HAPPY'、"HUNGRY"这类全大写字符串。Python对字符串大小写敏感,两者无法匹配,导致所有状态切换逻辑都不会触发。
  • 数值下限处理时机错误:hungry和bored不能低于0的限制被放在了状态切换的分支里,应该在每次用户操作修改数值后立即执行,避免出现负数影响后续判断。
  • 状态判断顺序逻辑错误:比如在HAPPY状态分支中,先判断hungry >= 2再判断hungry >= 4,当hungry >=4时,会先触发hungry >=2的条件进入HUNGRY状态,永远不会走到SAD状态的判断。
  • SAD状态未处理退出逻辑:进入SAD状态后没有退出循环,也未打印要求的"它死了"提示。

修复后的完整代码:

hungry = 0
bored = 0
# 统一使用全大写状态值,避免大小写问题
current_state = "HAPPY"

while True:
    print("Tamagotchi current state is:", current_state)
    action = input("请输入动作(feed/play/ignore): ")
    
    # 根据动作修改数值
    if action == "feed":
        hungry -= 1
        bored += 1
    elif action == "play":
        hungry += 1
        bored -= 1
    elif action == "ignore":
        hungry += 1
        bored += 1
    
    # 立即处理数值下限,确保不低于0
    if hungry < 0:
        hungry = 0
    if bored < 0:
        bored = 0
    
    # 状态判断逻辑,调整顺序确保高优先级条件先触发
    if current_state == "HAPPY":
        # 先判断是否达到SAD阈值
        if hungry >= 4 or bored >= 4:
            current_state = "SAD"
        elif hungry >= 2:
            current_state = "HUNGRY"
        elif bored >= 2:
            current_state = "BORED"
    
    elif current_state == "HUNGRY":
        if hungry >= 4:
            current_state = "SAD"
        elif bored > hungry:
            current_state = "BORED"
        elif hungry < 2:
            current_state = "HAPPY"
    
    elif current_state == "BORED":
        if bored >= 4:
            current_state = "SAD"
        elif hungry > bored:
            current_state = "HUNGRY"
        elif bored < 2:
            current_state = "HAPPY"
    
    # 检查是否进入SAD状态,触发退出逻辑
    if current_state == "SAD":
        print("它死了")
        break

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:40:38