不能找出条件

时间:2019-10-05 00:12:25

标签: python-3.x

我正在进行30天的代码挑战,并通过了5/8测试我的代码,无法弄清它不断失败的原因

参数是 如果N是奇数打印怪异的, 如果N是偶数且在2-5的范围内,则打印不奇怪 如果N是偶数且在6到20的范围内,则很奇怪 如果N是偶数且大于20则打印不奇怪

N = int(input())

if  N % 2 == 0 and range(2-5): 
    print("Not Weird")
elif N % 2 == 0 and range(6-20): 
    print("Weird")
elif N % 2 == 0 and N > 20:
    print("Not Weird")
elif N % 2 == 1 :
    print("Weird")

3 个答案:

答案 0 :(得分:1)

if  N % 2 == 0 and range(2-5): 

没有按照您的想法做,而是应该像这样:

if  N % 2 == 0 and N in range(2, 6): 

特别是:

  • 每个子条件(在“ and”的任一侧)都应完整。
  • 在您的示例中,
  • 范围是range(-3),因为这是2-5给出的。
  • 范围是半开的,表示它包括开始但不包括结束。

答案 1 :(得分:1)

1)具有定义的乞求和结束功能的函数range是一个以2个参数为参数的函数。因此,建议您将其用作range(x,y)而不是range(x-y)

如果您像range(2-5)一样使用它,则实际上是在要求range(-3)。当仅使用1个arg时,函数range将为您提供int 从0到输入arg 的列表。

考虑到没有整数大于0 小于-3 ,那么您得到的是一个空列表。

2)另外,请注意上限不包括在内:

>>> for i in range(2,5):
...     print(i)
... 
2
3
4

因此您可能会考虑在第一种情况下使用range(2,6),在第二种情况下使用range(6,21),依此类推。依此类推。

答案 2 :(得分:0)

要扩展@paxdiablo的答案,您还可以使用step的{​​{1}}参数来测试偶数:

range