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

制作小型文字冒险游戏遇问题:为何代码未返回预期值90?

你的文字冒险游戏代码问题解析

嘿,我来帮你揪出代码里导致没得到预期90的问题,主要有这几个关键点:

  • 函数压根没被执行:你定义了damage函数,但输入"hit"后完全没调用它啊!所以takeahit一直是初始的0,healthtwo = 100 - 0自然还是100。
  • 错误的赋值逻辑:在damage函数里,return takeahit == 10是在做「判断takeahit是否等于10」的比较操作,不是把takeahit设置成10。而且这里其实没必要用全局变量takeahit,直接返回伤害值会更清爽。
  • 全局变量的作用域问题:就算你想修改全局的takeahit,函数里默认会创建一个同名局部变量,得用global takeahit声明才能修改全局的那个值,不然根本改不动。

给你修正后的代码,这样输入"hit"就能得到90了:

orc = raw_input("Does the orc attack or miss?")#Replacing with a random number thing later
health = 100

def damage(orc_choice):
    if orc_choice == "hit":
        return 10  # 直接返回命中时的伤害值
    elif orc_choice == "miss":
        print "The Orc misses"
        return 0  # 未命中时返回0伤害

takeahit = damage(orc)  # 调用函数,把返回的伤害值存到takeahit里
healthtwo = health - takeahit
print healthtwo

简单说下修正思路:

  1. 调用damage函数,让输入的"hit"/"miss"真正触发对应的逻辑
  2. 函数直接返回对应伤害值,避免全局变量带来的作用域混乱
  3. 未命中时返回0,保证healthtwo的计算始终有效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:42:49