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

能否优化或缩短这段Python奇偶校验脚本?

优化你的Python奇偶校验脚本

嘿,我来帮你梳理下这段脚本的优化空间,顺便修正几个小问题!先看看原脚本里的几个可以改进的地方,再给你几个更简洁、更健壮的版本。

原脚本的小问题

首先,你的trying()函数里有个逻辑错误:

if not q == 'y' or q == 'yes':
    return 0

这个条件的逻辑完全写反了——它会在用户输入yes时返回0(退出循环),而你实际想要的应该是:如果用户输入不是'y'也不是'yes',才退出循环。另外,全局变量g的使用可以避免,重复的重试判断代码也可以合并,让脚本更简洁。

基础优化版(兼顾可读性和简洁性)

这个版本修复了逻辑错误,简化了循环结构,代码更清晰:

def should_retry():
    # 处理输入,忽略大小写和前后空格,兼容不规范输入
    response = input('Enter (y or yes) to retry: ').strip().lower()
    # 如果是y/yes返回True,否则返回False
    return response in ('y', 'yes')

while True:
    try:
        num = int(input('Please enter an integer: '))
        # 用三元表达式简化奇偶判断的打印
        print('Your number is even' if num % 2 == 0 else 'Your number is odd')
        # 询问是否重试,不满足就退出循环
        if not should_retry():
            break
    except ValueError:
        print('Sorry, you need to enter numbers only!')

改进点说明:

  • 修复了重试判断的逻辑错误,用strip().lower()处理输入,能兼容用户输入Y、yes这类不规范的情况
  • 去掉了全局变量g,用while True配合break控制循环,更符合Python的惯用写法
  • 把重复的重试逻辑封装成独立函数,避免代码冗余,也让逻辑更清晰
  • 用三元表达式简化了奇偶判断的打印语句,减少了不必要的分支代码

更简洁的版本(适合简单场景)

如果追求更短的代码,可以把重试逻辑直接内联,去掉单独的函数,同时用f-string让打印更简洁:

while True:
    try:
        num = int(input('Please enter an integer: '))
        # f-string配合三元表达式,一行完成判断和打印
        print(f"Your number is {'even' if num % 2 == 0 else 'odd'}")
        # 直接处理重试输入,不满足就退出
        if input('Enter (y or yes) to retry: ').strip().lower() not in ('y', 'yes'):
            break
    except ValueError:
        print('Sorry, numbers only please!')

这个版本去掉了单独的函数,代码更紧凑,同时保留了健壮性,适合这种简单的小脚本。

额外小建议

  • 输入提示里加个空格(比如Please enter an integer: ),用户输入时体验更好
  • 用strip()处理所有输入的前后空格,避免用户误输入空格导致的问题
  • 如果需要支持更多重试输入(比如Y、YES),用lower()统一转小写是个省心的办法

内容的提问来源于stack exchange,提问作者Salman Abdullah Idrees

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:34:33