分配给奇数和偶数的对象值,但不适用于'if'语句

2024-10-01 00:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道还有另一种方法可以检查input数或值是否是带有%的偶数或奇数。我只是认为这样做也应该有效,我得出结论,数字的evenuneven赋值有问题,但我似乎在网上找不到任何解决这个问题的方法。程序的工作方式应该是,当您输入某个数字时,它将识别该数字的最后一位,并根据该数字检查其是否在evenuneven值内

n = int(input())
turnstr = int(repr(n)[-1])
w = "Weird"
nw = "Not Weird"
even = (0, 2, 4, 6, 8)
uneven = (1, 3, 5, 7, 9)
if turnstr == uneven:
    print(w)
if turnstr == even and n == range(2, 5):
    print(nw)
if turnstr == even and n == range(6, 20):
    print(w)
if turnstr == even and n > 20:
    print(nw)

Tags: and方法inputifrange数字inteven
2条回答

in替换所有的==,以检查turnstr(整数)是否在偶数/非偶数的元组中

更优化的代码:

n = int(input())
turnstr = int(repr(n)[-1])
w = "Weird"
nw = "Not Weird"
uneven = (1, 3, 5, 7, 9)
if turnstr in uneven:
    print(w)
else if n in range(2, 5):
    print(nw)
else if n in range(6, 20):
    print(w)
else if n > 20:
    print(nw)

这样程序就不必在even元组中搜索第一个条件之后的隐式整数(检查最后一个数字是否为奇数)

试着换成这个

n = int(input())
turnstr = int(repr(n)[-1])
w = "Weird"
nw = "Not Weird"
even = (0, 2, 4, 6, 8)
uneven = (1, 3, 5, 7, 9)
if turnstr in uneven:
    print(w)
if turnstr in even and n in range(2, 5):
    print(nw)
if turnstr in even and n in range(6, 20):
    print(w)
if turnstr in even and n > 20:
    print(nw)

嵌套if语句并删除重复的逻辑也会更干净、更有效

n = int(input())
turnstr = int(repr(n)[-1])
w = "Weird"
nw = "Not Weird"
even = (0, 2, 4, 6, 8)
uneven = (1, 3, 5, 7, 9)
if turnstr in uneven:
    print(w)
elif turnstr in even:
    if n in range(6, 20):
        print(w)
    else:
        print(nw)

相关问题 更多 >