首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使我的Python代码更紧凑?

如何使我的Python代码更紧凑?
EN

Stack Overflow用户
提问于 2020-06-25 04:21:38
回答 6查看 132关注 0票数 0

如何使我的Python代码更紧凑?

任何帮助都会变得非常有用

代码语言:javascript
复制
print("Welcome to my program")
# This program tells if a number form 1 - 10 is even or odd
try:
    del_number = int(input("Input a number 1 - 10: "))
    if del_number == 2 or del_number == 4 or del_number == 6 or del_number == 8 or del_number == 10:
        print("The number you have entered is an even number")
    elif del_number > 10:
        print("Not a valid number")
    else:
        print("The number you have entered is a odd number")
except:
    print("You have entered a letter/letters not a number 1 - 10")
EN

回答 6

Stack Overflow用户

发布于 2020-06-25 04:27:02

您可以缩短偶数检查

代码语言:javascript
复制
print("Welcome to my program")
# This program tells if a number form 1 - 10 is even or odd
try:
    del_number = int(input("Input a number 1 - 10: "))
    if del_number in (2 , 4, 6, 8, 10):
        print("The number you have entered is an even number")
    elif del_number > 10:
        print("Not a valid number")
    else:
        print("The number you have entered is a odd number")
except ValueError:
    print("You have entered a letter/letters not a number 1 - 10")

或者使用低位来决定偶数/奇数(也许还可以从列表中选择名称)

代码语言:javascript
复制
print("Welcome to my program")
# This program tells if a number form 1 - 10 is even or odd
try:
    del_number = int(input("Input a number 1 - 10: "))
    if not 1 < del_number <= 10:
        print("Not a valid number")
    else:
        category = ["even", "odd"][del_number & 1]
        print(f"The number you have entered is a {category} number")
except ValueError:
    print("You have entered a letter/letters not a number 1 - 10")

考虑到这一点,您可以将异常处理限制为整数转换本身,以减少在以后的代码中意外屏蔽错误的机会。假设后面的测试中的错误也引发了一个ValueError。直到现场传来愤怒的报告你才会知道。

代码语言:javascript
复制
print("Welcome to my program")
# This program tells if a number form 1 - 10 is even or odd
try:
    del_number = int(input("Input a number 1 - 10: "))
except ValueError:
    print("You have entered a letter/letters not a number 1 - 10")
else:
    if not 1 < del_number <= 10:
        print("Not a valid number")
    else:
        category = ["even", "odd"][del_number & 1]
        print(f"The number you have entered is a {category} number")
票数 4
EN

Stack Overflow用户

发布于 2020-06-25 04:24:25

你可以使用模运算符%来代替这么多串联的or。有关操作器的信息,请参阅here

下面是要替换的代码行:

代码语言:javascript
复制
if del_number == 2 or del_number == 4 or del_number == 6 or del_number == 8 or del_number == 10:

这将是替代方案:

代码语言:javascript
复制
elif del_number % 2 == 0:

if更改为elif的原因是,我们首先希望确保数字为<= 10。因此,我们的第一个条件if将测试数字是否为> 10。如果它通过了这个标准,那么就会出现带有模运算符的elif部分。总之:

代码语言:javascript
复制
try:
    del_number = int(input("Input a number 1 - 10: "))
    if del_number > 10 or del_number < 0:
        print("Not a valid number")
    elif del_number % 2 == 0:
        print("The number you have entered is an even number")
    else:
        print("The number you have entered is a odd number")
except:
    print("You have entered a letter/letters not a number 1 - 10")
票数 2
EN

Stack Overflow用户

发布于 2020-06-25 04:29:00

你可以使它紧凑

代码语言:javascript
复制
if del_number in [2, 4, 6, 8, 10]:
    print("The number you have entered is an even number")

代码语言:javascript
复制
if del_number % 2 == 0:
    print("The number you have entered is an even number")

如果你想检查del_number是偶数还是奇数

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62563461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档