Python新手求助:如何根据用户选择实现面积单位转换?
简化面积单位转换的解决方案
核心思路
别硬写所有单位组合的转换逻辑,统一用平方米作为基准单位:先把用户输入的面积转成平方米,再从平方米转成目标单位。用字典存储单位转换系数,让代码简洁易维护,新增单位也只需加一行配置。
修改后的完整代码
from colorama import Fore # 没装的话先执行 pip install colorama # 单位配置:键是用户选择的数字,值为(单位名称, 转平方米的系数) unit_config = { 1: ("平方英寸", 0.00064516), 2: ("平方米", 1), 3: ("平方英尺", 0.092903) } # 选择输入单位 choice_i = int(input(Fore.RESET + "\n选择测量单位:\n英寸(1), 米(2), 英尺(3) ")) input_unit, to_sqm_ratio = unit_config[choice_i] # 获取长宽并计算原始面积 width = int(input(f"\n请输入矩形宽度({input_unit.split('平')[1]}): ")) if width >= 1: length = int(input(f"\n请输入矩形长度({input_unit.split('平')[1]}): ")) if length >= 1: original_area = width * length print(f"矩形面积为 {round(original_area)} {input_unit}") # 单位转换流程 choice2 = input("\n是否转换单位?(y/n) ") if choice2 == 'y': convert_choice = int(input("\n选择目标单位:\n英寸(1), 米(2), 英尺(3) ")) target_unit, target_to_sqm = unit_config[convert_choice] # 先转基准单位平方米,再转目标单位 sqm_area = original_area * to_sqm_ratio converted_area = sqm_area / target_to_sqm print(f"转换后面积为 {round(converted_area)} {target_unit}") else: print(f"最终面积为 {round(original_area)} {input_unit}")
关键优化点
- 消除重复代码:把原代码里3套几乎一样的输入/计算逻辑合并,新增单位只需在
unit_config里加一行。 - 通用转换逻辑:不管输入输出是什么单位,都通过基准单位中转,不用写两两组合的转换公式。
- 修复原代码Bug:比如原代码中
Choice2分支的判断错误(把Convert写成了Choice2),以及单位名称不统一的问题。
内容的提问来源于stack exchange,提问作者cursetv3
相关产品推荐
相关产品推荐

