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

Python条件判断代码异常:重复请求输入且F输出不符合预期

问题分析与解决方案

核心问题

你的代码在if、elif、else的每一次判断中,都调用了一次percentage()函数——这意味着每一次判断都会重新触发用户输入流程。只有当第一次调用percentage()返回的值恰好满足>=99时,才会直接输出'F';其他场景都会反复要求用户输入,这就是问题的根源。

另外,percentage()函数返回的是字符串类型(比如"99"),直接和数字1、99比较会出现逻辑错误(字符串与数字的比较基于ASCII码,而非实际数值大小)。

修正后的代码

def percentage():
    while True:
        try:
            x = int(input('First number:'))
            y = int(input('Second number:'))

            fraction = x / y
            percentage_val = fraction * 100
            # 直接返回数值,方便后续比较
            return percentage_val

        except ZeroDivisionError:
            print("不能除以0,请重新输入")
        except ValueError:
            print("请输入有效的整数")

# 仅调用一次函数,将结果存入变量
result = percentage()

if result <= 1:
    print('E')
elif result >= 99:
    print('F')
else:
    # 格式化输出百分比
    print(f"{int(result)}%")

关键修改说明

  • 避免重复调用函数:只执行一次percentage(),把结果存在result变量中,所有判断都基于这个变量,彻底解决重复输入的问题。
  • 统一数据类型:让函数直接返回浮点型的百分比数值,确保后续大小比较的逻辑准确。如果要保留原函数返回字符串的逻辑,也可以在存储变量时转换类型:result = int(percentage())。
  • 优化异常提示:在异常分支中添加明确提示,让用户清楚输入错误的原因,提升交互体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:05:18