上机实验1——温度转换与输入输出强化

知识点:input()/print()、分支语句、字符串处理(教材2.1-2.2)

实验任务:

  1. 实现摄氏温度与华氏温度互转(保留两位小数)
  2. 扩展功能:输入错误处理(如非数字输入提示重新输入)
  3. 扩展:支持开尔文温度的三向转换

实现思路:

  1. 循环问答
    • 不断问:"输入温度(如32C/98F/300K)"
    • 输入q直接退出程序
  2. 三大检查
    • 查结尾:必须C/F/K(不分大小写)
    • 查数字:前面的内容要能转成数字
    • 查科学:开尔文温度不能小于0(绝对零度)
  3. 自动换算
    • 根据输入的字母自动计算另外两种温度
    • 例如输入100C → 算华氏和开尔文
    • 所有结果保留两位小数

完整代码:

while True:
    temp_input = input("\n请输入温度(示例:32C/98.6F/300K,输入q退出): ").strip()

    # 退出检测
    if temp_input.lower() == 'q':
        print("程序已退出。")
        break

    # 空输入检测
    if not temp_input:
        print("错误:输入不能为空")
        continue

    # 单位检测
    unit = temp_input[-1].upper()
    if unit not in ('C', 'F', 'K'):
        print("错误:必须以C/F/K结尾")
        continue

    # 数值转换
    try:
        value = float(temp_input[:-1])
    except ValueError:
        print("错误:温度值必须是数字")
        continue

    # 温度转换核心逻辑
    try:
        if unit == 'C':
            f = value * 9 / 5 + 32
            k = value + 273.15
            print(f"转换结果:{value:.2f}°C = {f:.2f}°F,{k:.2f}K")

        elif unit == 'F':
            c = (value - 32) * 5 / 9
            k = c + 273.15
            print(f"转换结果:{value:.2f}°F = {c:.2f}°C,{k:.2f}K")

        elif unit == 'K':
            if value < 0:
                print("警告:开尔文温度不能小于绝对零度(0K)")
                continue
            c = value - 273.15
            f = c * 9 / 5 + 32
            print(f"转换结果:{value:.2f}K = {c:.2f}°C,{f:.2f}°F")

    except Exception as e:
        print(f"转换错误:{str(e)}")

运行示例截图:

posted @ 2025-04-18 09:02  Uiui·  阅读(16)  评论(0)    收藏  举报