如何输入分母为两位数的分数且避免触发报错?
问题分析与解决方法
问题根源
你代码里的错误出在字符串直接比较大小这一步:
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
相关产品推荐
相关产品推荐

