首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我搞不懂条件句

我搞不懂条件句
EN

Stack Overflow用户
提问于 2019-10-05 08:12:26
回答 3查看 26关注 0票数 1

我正在做一个为期30天的代码挑战,我的代码通过了5/8的测试,但我找不出它一直失败的原因

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

代码语言:javascript
运行
复制
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")
EN

回答 3

Stack Overflow用户

发布于 2019-10-05 08:19:03

代码语言:javascript
运行
复制
if  N % 2 == 0 and range(2-5): 

并不是你想的那样,它应该是这样的:

代码语言:javascript
运行
复制
if  N % 2 == 0 and N in range(2, 6): 

具体地说:

在你的例子中,每个子条件(在‘’的两边)都应该是complete.

  • range,,was
  • (-3),因为这是2-5的值。
  • 这个范围是半开放的,这意味着它包括了开始,但排除了结束。
票数 1
EN

Stack Overflow用户

发布于 2019-10-05 08:28:44

1)定义了begging和end的函数range是一个带2个参数的函数。因此,我建议您使用它作为range(x,y),而不是range(x-y)

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

如果没有大于0 和-3\f25-3\f6的整数-3\f25-3,则得到一个空列表。

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

代码语言:javascript
运行
复制
>>> for i in range(2,5):
...     print(i)
... 
2
3
4

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

票数 1
EN

Stack Overflow用户

发布于 2019-10-05 08:26:27

要扩展@paxdiablo的答案,您还可以使用rangestep参数来测试偶数:

代码语言:javascript
运行
复制
if N in range(2, 6, 2):
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58244362

复制
相关文章

相似问题

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