迭代与循环
这样的形式简单又强大!for循环是许多编程中的基础。
比如,你已经知道的sum(list)这个函数,它会将列表中所有的元素相加,但你同样可以使用for循环来干这件事情:
>>> sum = 0
>>> for value in mylist:
... sum = sum + value
...
>>> print(sum)
13
其本质是创建了一个变量”sum”,然后不断的将列表中的元素与其相加。
有时候,你可能不想使用列表中的值,而只需要它们的索引位置。比如,我们不止想获取出它的值还想获取出它在列表中的位置。
请看以下例子:
你可以看到我们并没有迭代列表本身,而是迭代了这个列表长度的“range”。“range”函数返回的是一个特殊列表:
>>> list(range(3))
所以当使用“range”时迭代的就不是“mylist”而是一些用于访问列表里的值的数字索引。更多关于“range”的内容你可以参阅Python文档中关于“range”的部分。 https://docs.python.org/3/tutorial/controlflow.html#the-range-function
请记住Python列表中第一个值的索引总是0。
最后,Python里还提供while声明来让我们重复做一些事情,只要这个特定的条件是True就会一直执行。
比如,下面这个例子中n开始于10,条件是“n”大于0。每次都会从n中减去1。当n变为0时,“n”>0这个条件就失效了,此循环也就结束了。
>>> n = 10
>>> while n > 0:
... print(n)
... n = n-1
...
10
9
7
6
4
3
2
1
这个循环永远也不会打印0。
解决这一部分你可能很想参阅Python文档中关于循环的部分:
创建一个名为add的函数,它接受一个列表作为参数,返回的是列表中所有元素的和。请使用for循环来完成。
修改之前的那个函数,现在它返回的是是一个列表,列表中第一个元素为最大的一个值,第二个元素为这个值在原列表中的位置。
提示:除了保存目前为止最大的数,你还要保存下它出现的位置。实现一个函数,它返回所接受的列表的翻转列表。
提示:你可以创建一个空列表,然后从原列表中倒序的添加值。你可能会想参阅Python文档中关于列表的部分:
https://docs.python.org/3/tutorial/datastructures.html#more-on-lists写一个名为is_sorted的函数,它接受一个列表作为参数,如果这个列表里的内容是以升序排列的话则返回True。
比如就是True,[1, 2, 3, 2]
则不是。
提示:如果你要将一个数字与接下来的数字做对比,你可能会用到索引,或者你也可以将其保存到一个变量中。写一个名为is_sorted_dec的函数,与之前的那个相似但所有的项都是以降序排列的。
while循环部分练习
- 写一个函数,接受一个数字作为参数并且以降序形式打印出来,打印时标出该数字是奇数还是偶数,一直到0。