gpt4 book ai didi

Python For 循环和范围函数

转载 作者:行者123 更新时间:2023-11-28 21:21:28 25 4
gpt4 key购买 nike

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)

我不明白范围函数是如何工作的:

  • countMe 中代码不应该上升到 18 ;
  • 为什么 countMe 中打印的最后一个数字是 15,而不是 18 ;
  • 为什么在第二个函数 oddsOut 中,即使 j 是 8,该函数对 j 只计数到 7 而不是 8;
  • 为什么 oddsOut 中打印的最后一个数字是 14。

最佳答案

好吧,来自帮助:

>>> help(range)
range(...)
range([start,] stop[, step]) -> list of integers

Return a list containing an arithmetic progression of integers.
range(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0.
When step is given, it specifies the increment (or decrement).
For example, range(4) returns [0, 1, 2, 3]. The end point is omitted!
These are exactly the valid indices for a list of 4 elements.

所以最后的增量不是stop,而是stop之前的最后一步。

  • in countMe shouldn't the code go up till 18 ;
  • why is the last number printed in countMe 15, and not 18 ;
  • why is that in the second function oddsOut the function only founts till 7 for j and not 8 even though j is 8 ;
  • why is the last number printed in oddsOut 14.

更一般地说,这些问题的答案是,在大多数语言中,一个范围被定义为 [start:stop[,即范围的最后一个值从不包括在内,并且索引总是从 0 开始。困惑的是,在一些语言中,在处理算法时,范围从 1 开始,并且包含最后一个值。

最后,如果你想包含最后一个值,你可以这样做:

def closed_range(start, stop, step=1):
return range(start, stop+1, step)

或者在你的例子中:

>>> def countMe(num):
>>> for i in range(0, num+1, 3):
>>> print (i)
>>>
>>> countMe(18)
0
3
6
9
12
15
18
>>>

关于Python For 循环和范围函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21341483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com