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

Python定义函数代码被跳过未执行 重量转换循环逻辑问题排查

问题排查结果
  • 核心原因:你仅完成了main()函数的定义,但没有添加函数调用语句。Python中函数定义阶段只会把代码块加载到内存,不会自动执行内部逻辑,必须主动写函数名加括号(比如main())触发调用,才会运行函数里的代码,这就是你感觉代码被“跳过”的根本原因。
  • 结构错误:原代码把结果校验、重试的逻辑写在了main()函数外部,且重试逻辑只写了单次执行的分支,没有做循环结构,无法实现“错了就重跑”的效果,还出现了转换逻辑重复写两遍的冗余问题。
  • 细节bug:原代码磅转千克的分支里,输出单位错误写为“pounds”;首次体重输入用int()类型转换、重试时又用float(),逻辑不统一,用户输入带小数的体重会直接触发报错。
可直接运行的正确代码
def weight_convert():
    while True:
        # 统一用float接收体重,支持整数、小数输入
        weight = float(input("How much do you weigh?: "))
        unit = input("Lbs or Kgs?: ").strip()

        # 单位判断与转换
        if unit.upper() == "KGS":
            converted = weight * 2.2
            print(f"Your weight in pounds is: {round(converted,2)} pounds")
        elif unit.upper() == "LBS":
            converted = weight / 2.2
            print(f"Your weight in kilograms is: {round(converted,2)} kilograms")
        else:
            print("Invalid unit input, please enter 'Lbs' or 'Kgs'")
            continue

        # 结果确认逻辑
        correct = input("Does This Look Correct? (Y/N): ").strip()
        if correct.upper() == "NO":
            print("Let's try again then")
            continue
        else:
            print("Have A Great Day Then!")
            break

# 调用函数,触发逻辑执行
if __name__ == "__main__":
    weight_convert()
实现说明
  • 用while True无限循环包裹完整转换流程,用户反馈结果错误时,通过continue直接回到循环起点重新执行输入、转换逻辑,不需要重复编写转换代码。
  • 加了非法输入校验:用户输入的单位不是Lbs/Kgs时,直接提示重输,不会进入后续确认环节。
  • 对转换结果做了两位小数的四舍五入,避免输出浮点数过长影响阅读。
  • 统一使用float()做体重类型转换,兼容小数体重输入,不会触发类型错误。
  • 最后通过标准入口写法调用函数,运行脚本时会自动执行逻辑,不会再出现定义了代码不运行的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:39:19