如何使Python代码更紧凑?

如何使Python代码更紧凑?,python,python-3.x,Python,Python 3.x,如何使Python代码更紧凑? 任何帮助都会很有吸引力 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_nu

如何使Python代码更紧凑? 任何帮助都会很有吸引力

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")

您可以使用模运算符%而不是如此多的串联运算符或。有关操作员的信息,请阅读

这是要替换的代码行:

if del_number == 2 or del_number == 4 or del_number == 6 or del_number == 8 or del_number == 10:
这将取代:

elif del_number % 2 == 0:
将if更改为elif的原因是,我们首先要确保数字为10。如果它通过了该标准,则会出现带有模运算符的elif部分。总而言之:

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")

您可以缩短偶数检查

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")
或者使用低位决定偶数/奇数,或者从列表中选择名称

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")

你可以使它紧凑

if del_number in [2, 4, 6, 8, 10]:
    print("The number you have entered is an even number")

如果您想检查delu数是偶数还是奇数,让我们这样试试:

欢迎来到我的节目 这个程序告诉你1-10中的数字是偶数还是奇数 尝试: del_number=输入一个数字1-10: 除: 打印您输入的字母不是数字1-10 如果删除编号%2==0且删除编号为10: 这不是一个有效的数字 其他: 打印您输入的号码是奇数
我会这样做的

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: \n"))
    if del_number % 2 == 0 and 1 < del_number < 10 :
        print("The number you have entered is an even number")
    elif del_number > 10 or del_number < 1:
        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")

不完全是。第一个语句只接受1-10范围内的偶数,而第二个语句接受任何偶数。您需要将>10比较移到它上面,以首先捕获溢出情况。我可以轻松地修复这一问题,即放入elif并切换>10作为if的第一个条件。谢谢你的建议,编辑答案!我认为如果你使用条件表达式而不是iterable索引,那将是pythonic的:奇数if del_number&1 else event这是另一种方法,但不是更pythonic的,IMHO。我的方法适用于超过1位的类别,比如一个包含8个条目和del_编号&3的列表。索引到列表中是很正常的事情。不过我明白你的意思,有些人更喜欢你的方法。比如说一个包含8个条目和德鲁数字的列表&3哇,真让我大吃一惊。对于这样的场景来说,这将是一件好事。然而,我仍然感到困惑,因为如果这个表达式的计算结果为真,我总是不得不停下来思考选择哪一个。我花了太多的时间在低级别的C和位字段。我可能会梦见比特田或地狱般的噩梦。我只是觉得这是一种类别选择,但你对真/假的看法同样有效。哈哈哈,我可以想象,因为你也选择了del_数&1而不是del_数%2==1:顺便说一下,将异常处理限制为except ValueError。您的异常应该很窄,以避免意外地抑制意外错误和隐藏bug。
if del_number % 2 == 0:
    print("The number you have entered is an even number")
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: \n"))
    if del_number % 2 == 0 and 1 < del_number < 10 :
        print("The number you have entered is an even number")
    elif del_number > 10 or del_number < 1:
        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")
print("Welcome to my program")
# This program tells if a number form 1 - 10 is even or odd
del_number = int(input("Input a number 1 - 10: "))
try:
    {
        0: lambda: print("The number you have entered is an even number"),
        1: lambda: print("The number you have entered is an odd number")
    }[del_number % 2 if 0 < del_number <= 10 else None]()
except:
    print("You have entered a letter/letters not a number 1 - 10")