【发布时间】:2014-01-24 20:02:55
【问题描述】:
def countMe(num):
for i in range(0, num, 3):
print (i)
countMe(18)
def oddsOut(num1, num2):
for i in range(num1):
for j in range(num2):
print(i*j)
oddsOut(3, 8)
我不明白 range 函数是如何工作的:
-
countMe中的代码不应该上升到 18 吗; - 为什么在
countMe中打印的最后一个数字是15,而不是18; - 为什么在第二个函数
oddsOut中,即使 j 是 8,该函数也只能为 j 找到 7 而不是 8; - 为什么
oddsOut14 中打印的最后一个数字。
【问题讨论】:
-
range的
stop参数(第二个)是排他不包括。 -
Python 中的几乎 all 范围都是“半开”的,这意味着开始是包含的,而停止是排他的——
range函数、切片等。这在Strings 的教程章节中进行了解释,首先介绍了切片,并且应该在任何其他教程/文本/等的早期类似地显示。 -
如果你想让它包含 18 个,也许只需将
num更改为num + 3 -
我知道的 stdlibs 中唯一包含端点的东西是
random.randint。 -
@user3193087 实际上,没有。您需要将
num更改为num+1。