如何让用户输入驱动if语句计算,得到正确的行星体重值?
行星体重计算代码修正问题
你的代码运行后结果始终为0,核心错误有以下几点:
- 用户输入的行星名称是字符串类型(比如"Venus"),但你把它和存储重力值的数值变量(如
Venus = 0.91)做比较,类型不匹配导致所有条件都无法触发,Planet_gravity始终为0。 - 后续
elif分支错误使用了初始值为0的planet变量,而非用户输入的Planet_name。 - 最后一个
elif分支存在缩进错误,Python对缩进有严格要求,会引发语法问题。
修正后的代码
print("I have information for the following planets:\n") print(" 1. Venus 2. Mars 3. Jupiter") print(" 4. Saturn 5. Uranus 6. Neptune\n") weight = 185 Planet_gravity = 0 # 用字符串作为键存储行星重力系数,避免类型匹配问题 planet_gravity_map = { "Venus": 0.91, "Mars": 0.38, "Jupiter": 2.34, "Saturn": 1.06, "Uranus": 0.92, "Neptune": 1.19 } Planet_name = input("Planet name: ") print(Planet_name) # 匹配输入的行星名称,获取对应重力系数 if Planet_name in planet_gravity_map: Planet_gravity = planet_gravity_map[Planet_name] planet_weight = weight * Planet_gravity print(f"Gravity {planet_weight}")
修正说明
- 使用字典存储行星名称(字符串)与重力系数的对应关系,直接通过输入字符串匹配取值,逻辑简洁且避免类型错误。
- 移除无用的
planet变量,直接基于用户输入的Planet_name做判断。 - 用f-string优化打印语句,提升代码可读性。
- 增加输入合法性检查,若用户输入不在列表中的行星,
Planet_gravity保持0,也可按需添加输入错误提示。
内容的提问来源于stack exchange,提问作者Benjamin G
相关产品推荐
相关产品推荐

