李子豪 发表于 2020-3-28 13:50:26

温度转换异常处理求讲解

本帖最后由 qiuyouzhi 于 2020-3-28 13:52 编辑

try:
    x=input()
    if x[-1] in ["F","f"]:
      print((x-32)/1.8)
    if x[-1] in ["C","c"]:
      print(x*1.8+32)
except NameError:
    print('试图访问的变量名不存在')
except SyntaxError:
    print('存在语法错误')
except Exception as e:
    print(e)

李子豪 发表于 2020-3-28 13:50:58

本帖最后由 qiuyouzhi 于 2020-3-28 13:52 编辑

答案是
try:
    TempStr = input()
    if TempStr[-1] in ['F', 'f']:
      C = (eval(TempStr) - 32) / 1.8
      print("{:.2f}C".format(C))
    elif TempStr[-1] in ['C', 'c']:
      F = 1.8 * eval(TempStr) + 32
      print("{:.2f}F".format(F))
    else:
      print("输入错误,末位只能是'C','c','F','f'")
except NameError:
    print('试图访问的变量名不存在')
except SyntaxError:
    print('存在语法错误')
except Exception as e:
    print(e)

BngThea 发表于 2020-3-28 13:55:38

input返回的str类型,不能直接和int进行数值计算

李子豪 发表于 2020-3-28 14:01:22

我应该怎么修改?

李子豪 发表于 2020-3-28 14:06:06

我该怎么修改?

永恒的蓝色梦想 发表于 2020-3-28 14:35:52

except SyntaxError:
    print('存在语法错误')这个块没用,except SyntaxError 只能用来防止 eval 和 exec 报错。

李子豪 发表于 2020-3-28 14:59:08

我该怎么修改?

李子豪 发表于 2020-3-28 15:02:14

本帖最后由 李子豪 于 2020-3-28 15:06 编辑

输入正常,输出转换后的温度,保留小数点后2位小数。
当检测到NameError错误时输出'试图访问的变量名不存
当检测到SyntaxError 错误时输出'存在语法错误'
页: [1]
查看完整版本: 温度转换异常处理求讲解