Python如何在main函数中打印多个单位转换函数的返回值
报错原因
- 你遇到的「未解析引用」报错是因为
answer1是feet_inches函数的局部变量,仅在函数内部生效,函数执行结束后就会被销毁,外部代码无法直接访问函数内部的局部变量。你不需要试图访问函数里的answer1/2/3/4这类变量,直接接收函数的return返回值就能拿到计算结果。 - 原有代码的逻辑结构有问题:用户选择判断逻辑写在了
use_menu里,执行转换函数后没有把结果传递回main函数,同时feet_inches的转换公式错误,1英尺=12英寸,原有/3的计算逻辑完全不对。
修正后可运行的完整代码
def main(): while True: selection = use_menu() if selection == 1: res = feet_inches() print(f"转换结果为:{res} 英寸") elif selection == 2: res = yards_feet() print(f"转换结果为:{res} 英尺") elif selection == 3: res = miles_yards() print(f"转换结果为:{res} 码") elif selection == 4: res = miles_feet() print(f"转换结果为:{res} 英尺") elif selection == 5: print("退出程序") break else: print("请输入1-5之间的有效选项") def use_menu(): get_menu() selection = int(input('Please make a menu selection:')) return selection def get_menu(): print('1. Convert feet to inches') print('2. Convert yards to feet') print('3. Convert miles to yards') print('4. Convert miles to feet') print('5. Exit') def feet_inches(): feet2inches = int(input('Enter the number of feet:')) # 修正转换公式:1英尺=12英寸 answer1 = feet2inches * 12 return answer1 def yards_feet(): yards2feet = int(input('Enter the number of yards:')) answer2 = yards2feet * 3 return answer2 def miles_yards(): miles2yards = int(input('Enter the number of miles:')) answer3 = miles2yards * 1760 return answer3 def miles_feet(): miles2feet = int(input('Enter the number of miles:')) answer4 = miles2feet * 5280 return answer4 main()
核心修改说明
- 把用户选择的结果从
use_menu返回给main函数,所有分支判断逻辑统一放在main中处理,逻辑更清晰 - main函数中直接接收各个转换函数的返回值赋值给变量,直接打印即可,不需要访问函数内部变量
- 增加了循环逻辑,支持多次转换不需要反复运行程序,同时增加了退出逻辑和非法输入提示
- 修正了英尺转英寸的错误转换公式
内容的提问来源于stack exchange,提问作者Neekolie
相关产品推荐
相关产品推荐

