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
相关产品推荐
相关产品推荐

