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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:10:06