Python for和while循环语句的基础知识!小白请看过来,纯干货!!

Reference: Kaggle Notebook Loops! Click me!

1. 循环(Loops)

循环在计算机语言中是指重复运行某些代码。

看看例子就懂啦~

planets = ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune']
for planet in planets:
	print(planet, end = ' ') #将数列的所有元素打印在同一行中

输出:

Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune

for循环:
1、需要指定变量名(如上述例子的‘planet’);
2、指定需要循环的一组值(如上述例子的‘planets);
3、这两者中间用‘in’去连接,以冒号结尾;如:for planet in planets:

‘in’右侧的对象可以是任何支持迭代的对象,反正只要是可以视为一组事物的对象,都可以遍历。除了数列外,还有遍历tuples。

example_tuples = (2, 3, 4, 5, 9)
product = 1 #乘积的初始值为1
for i in example_tuples:
	product = product * i 
product

输出:

1080

除了可以遍历数值外,还可以遍历字符串:

s = 'steganograpHy is the practicE of conceaLing a file, message, image, or video within another fiLe, message, image, Or video.'
# print all the uppercase letters in s, one at a time
for char in s:
    if char.isupper():#如果是大写字母,则返回True
        print(char, end='')

输出:

HELLO

char.isupper()是一个可以查找大写字母的函数,小写字母则是char.islower()。

2. range()

range()是一个可以返回数字序列的函数。

看个例子就懂了:

for i in range(3):
	print(i, end = ' ')

输出:

0 1 2

3. while循环

除了for循环,还有一种循环叫while循环。while循环是会一直重复执行代码,直到满足某些条件。

i = 0
while i < 10: # 条件i<10
	print(i, end = ' ')
	i += 1 # i = i + 1

输出:

0 1 2 3 4 5 6 7 8 9

注意:while循环也是利用布尔语句哦,循环会一直继续直到该语句评估为False。

4. 循环在数列中的应用

a. 写法1:

>>> squares = [n**2 for n in range(10)]
>>> squares
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

b. 写法2:

squares = [] # 创新一个数列
for n in range(10):
    squares.append(n**2) # 调用list.append函数
squares

c. 写法3:

planets = ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune']
# 返回字母长度小于6的元素
short_planets = [planet for planet in planets if len(planet) < 6] 
short_planets

输出:

['Venus', 'Earth', 'Mars']

如果觉得难理解,可以看看下面这个笨蛋写法:

short_planets = [] # 创建新的数列
for planet in planets:
	if len(planet) < 6: # 条件:字母长度小于6
		short_planets.append(planet) # 则将该元素加到数列的最后

d. 写法4:

loud_short_planets = [planet.upper() + '!' for planet in planets if len(planet) < 6] # 将字母长度小于6的元素揪出来,并转为大写字母,
loud_short_planets

输出:

['VENUS!', 'EARTH!', 'MARS!']

e. 写法5:

>>> [32 for planet in planets]
[32, 32, 32, 32, 32, 32, 32, 32]

等号左边的变量并不是必须的哦,虽然看上去有点奇怪,但还是可以运行的。

f. 写法6:
还可以结合min、max、sum函数。。。

笨重但易理解版:

def count_negatives(nums):
    """Return the number of negative numbers in the given list.
    
    >>> count_negatives([5, -1, -2, 0, 3])
    2
    """
    n_negative = 0 # 相当于一个计数器
    for num in nums:
        if num < 0: #当num<0时
            n_negative = n_negative + 1 # 计数器+1
    return n_negative

简写版1:

def count_negatives(nums):
    return len([num for num in nums if num < 0])

简写版2:

def count_negatives(nums):
    # Reminder: in the "booleans and conditionals" exercises, we learned about a quirk of 
    # Python where it calculates something like True + True + False + True to be equal to 3.
    return sum([num < 0 for num in nums])

简写有利于减少代码长度,但是可读性也很重要哦~