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

如何输入分母为两位数的分数且避免触发报错?

问题分析与解决方法

问题根源

你代码里的错误出在字符串直接比较大小这一步:

if numerator > denominator:

输入2/10时,numerator是字符串"2",denominator是字符串"10"。字符串比较是按字符的ASCII值逐位对比,"2"的ASCII码(50)比"1"的ASCII码(49)大,所以判断条件"2">"10"会返回True,触发"Not real value"提示。而像3/4这种一位数分母的情况,字符串比较和整数比较结果碰巧一致,所以没出错。

修正方案

把输入的分子分母先转成整数,再进行大小比较,同时补充处理非整数输入、分母为0的异常情况,避免程序崩溃。修正后的代码如下:

while True:
    try:
        numerator, denominator = input("请输入燃油分数(格式:分子/分母)").split("/")
        num = int(numerator)
        den = int(denominator)
        # 检查分母是否为0,以及分子是否大于分母
        if den == 0 or num > den:
            print("无效值,请重新输入")
            continue
        ratio = num / den
        if 0.90 <= ratio <= 0.99:
            print("F")
        elif 0 <= ratio < 0.10:
            print("E")
        else:
            fuel = str(round(ratio * 100))
            print(f"燃油表显示:{fuel}%")
            break
    except ValueError:
        # 处理输入格式错误(比如没输/、输入非数字等)
        print("输入格式错误,请按 分子/分母 的格式输入")

额外优化点

  • 增加try-except块,处理用户输入格式错误(比如输入abc/10、5这类不符合要求的内容),避免程序直接崩溃。
  • 补充分母为0的判断,防止出现除以0的运行时错误。
  • 使用格式化字符串替代字符串拼接,代码更简洁易读。

内容的提问来源于stack exchange,提问作者Big_Port

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:08:16