51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Python基础 – for循环

for循环的基础操作

循环是计算机程序的三大语句结构之一。

它是在满足条件的情况下,反复执行某一段代码的计算过程。

假设,现在我们需要输出以下列表中的每个元素,你会怎么做呢?

numberList = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

可以通过索引,将列表中的元素一个一个的输出。

如果列表中的元素不止五项,而是几十项,甚至是几百项,我们还要大量重复编写print() 和列表索引么?这可太麻烦了。

接下来,我们试着用【循环】简化这段代码。

numberList = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
for number in numberList:
    print(number)

原本需要编写 10 行的代码,现在使用【循环】后,编写方便了很多。

在 Python 中,循环语句有两类:
for 循环和 while 循环

for 循环的结构

numberList = [10, 20, 30, 40, 50, 60]

for number in numberList:
    print(number)

代码的作用
这三行代码使用了 for 循环将列表 numberList 里面的所有元素全部输出出来。

for
使用关键字 for,表明要在这里开始执行"for循环"的代码结构。

in
使用关键词 in,和 for 搭配,表明我们要把 in 后面的列表里面的数据元素赋值给前面的变量。

变量
表示一个变量,在 for 循环里面用来存储列表中的元素。
在本例代码中,列表 numberList 中有 6 个元素,变量 number 会被赋值 6 次。

列表
列表中里面的元素会被分别赋值给变量,直到最后一个元素完成赋值,循环才结束。

冒号
循环语句的固定格式,表明接下来缩进的代码是每次循环都要执行的。

缩进
同样缩进的代码就是一个代码块,在每次循环中都要执行。
在这里,建议缩进四个空格,和 if 语句类型的缩进一样,保持同一种代码风格。

循环内
循环内的代码块,直到列表 numberList 中的元素被全部赋值完,循环才结束。
在本例中,由于列表 numberList 中的元素有 6 个,print()就要执行 6 次。

代码小结
通过如下格式在代码中使用for循环

# TODO 定义列表fruitList
fruitList = ["apple", "grape","cherry"]

# TODO for循环列表fruitList,将元素赋值给变量fruit
for fruit in fruitList :
    # TODO 输出变量fruit
    print(fruit)
# 使用 for 循环,利用切片获取列表中的第二项到第六项元素,分别赋值给一个变量 number,然后使用 print() 输出这个变量。

# 定义列表numberList
numberList = [10, 20, 30, 40, 50, 60]

# TODO for循环列表中的第二项到第六项元素
for number in numberList[1:] :
    # TODO 输出列表的元素
    print(number)

for 循环的运行流程

当程序执行完 for 循环后,如果同一层级(缩进一致)还有代码未执行,则按照顺序,继续自上而下执行。

本例中,第2行和第3行的循环,执行 6 次以后,列表 numberList 中所有元素都被访问完了,for 循环结束。
变量 number 被赋值 6 次,循环结束后,变量 number 的值为 60。

程序继续执行下面和 for 循环处于同一层级代码,输出变量 number,在运行结果中就输出了 60。

for 循环的灵活之处在于,它会根据列表中的元素个数,自动调节循环的次数。
也就是说,for 循环能自动遍历一个列表里面的所有元素。

遍历

遍历是指通过某种顺序对一个数据结构中的所有元素进行访问。

for循环 不仅可以遍历列,还可以遍历字典、元组、甚至字符串等数据结构。
遍历元组和字符串与遍历列表的代码几乎一样,也是逐个获取元组或字符串的每个字符。

for 循环遍历字典稍微有一些区别。
字典是键值对的组合,那么对字典的遍历就包含【键,值,键和值】三种情况。

遍历字典的键
for 循环遍历字典的键,有两种方法可以使用:

  1. for 循环遍历字典;
    这个方法和 for 循环遍历列表的格式类似。

  2. for循环遍历字典中的所有键;
    使用 for 循环遍历 dict.keys(),将字典中的键赋值给变量,再通过 print() 输出变量。

遍历字典的值
遍历字典的值,可以通过查字典的方式,也就是通过字典的键找到对应指定的值。
首先使用 for 循环遍历字典,将键赋值给变量 ,通过dict[键]的方式找到对应的值并赋值给新的变量

接着使用 print()输出这个变量,即可遍历字典的值。

遍历字典的键和值
上面演示的是使用 for 循环遍历字典的键和字典的值,如果想要同时输出字典的键和值,该怎么办呢?
这时,可以在循环内部分别输出字典的键和对应的值。

注意,在 for 循环中,一次循环会把循环内的代码全部执行完后,再开始下一次循环。

在本例中,for 循环遍历字典productItems,在第一次循环中,变量 key 被赋值为"口香糖"。
进入循环中,第3行代码获取到"口香糖"对应的值 15,并赋值给变量 value,在第4行和第5行分别输出"口香糖"和15。
接着进入第二次循环,变量 key 被赋值为"可乐",就这样执行完循环内的代码,再开始下一次循环,直到循环结束。

# 修改年龄
# 刘老师在录入学生年龄时,不小心输入错了学生年龄,现在她想要把学生的年龄批量修改,这该如何操作呢?
# 1. 首先定义一个叫作 studentAge 的字典,{"Gary": 14, "Adam": 13, "Jack": 15, "Max":13, "Tim":14}。
# 2. for 循环遍历字典 studentAge,将字典的键赋值给变量key;
# 2.1 利用字典键查找值的方法,将字典中全部的值修改为 16。
# 3. for 循环结束后,输出字典studentAge。

# TODO 定义字典studentAge
studentAge = {"Gary": 14, "Adam": 13, "Jack": 15, "Max":13, "Tim":14}

# TODO for循环字典studentAge
for key in studentAge :
    # TODO 修改字典的值为16
    studentAge[key] = 16

# TODO 输出字典studentAge
print(studentAge)
studentAge = {"Gary": 14, "Adam": 13, "Jack": 15, "Max":13, "Tim":14}
for key in studentAge :
    print(key)
    print(studentAge[key])

for循环的复杂应用

学习了 for 循环遍历列表、字典等数据的方式。

了解学习下for 循环与"累加" 、if 判断和"计数器"的结合运用。

学过运用四则运算,计算 a 和 b 的和。

如果,要计算列表 jdList 中所有元素的和,该怎么操作呢?

这种情况下,了解下"累加"的概念。

什么是"累加"呢?

例如,往瓶子里不断地放硬币的过程,就是"累加"。

for 循环与"累加"

jdList = [3, 1.5, 4, 2]
total = 0
for price in jdList:
    total = total + price
print(total)

代码的作用
这5行代码的功能就是,计算列表中的所有元素的总和并输出。

定义列表

第1行定义了列表 jdList ,列表中的四个元素都是可计算的数值(整型或浮点型)。

初始值

我们需要用一个变量来存储总和,第2行定义变量 total ,将0赋值给变量,这个过程就是设置初始值。

注意:这里的初始值需要定义在 for 循环的外侧,若定义在 for 循环中,每次循环变量都会重新赋值。

遍历列表

第3行使用for...in...结构遍历列表 jdList ,依次取出每个元素。

累加

第4行使用加法,计算 total 和 price 的和,再赋值给 total。

注意:根据四则运算规则,先计算等号("=")右边内容,再将计算结果赋值给左边变量。

(累加计算过程)
for循环第一次取出的元素price的值为3

然后第一次对列表中的元素进行累加,total的初始值为0,price的值为3,两者相加和为3,赋值给total

第二次循环时,price的值为1.5

total的值为3,两者相加和为4.5,再赋值给total

第三次循环时,price的值为4

total的值为4.5,两者相加为8.5

最后一次循环,price的值为2

total的值为8.5,两者相加的结果为10.5

循环结束后,print输出的total就是10.5

结果

当 for 循环遍历结束后,此时,total 的值为最后一次计算的结果。

第5行,使用 print() 输出的就是列表中四个数据的总和。

代码小结

当使用累加来计算时,就需要这几部分


以上就是一个"累加"的应用演示。

但在列表的操作中,不仅有总和的计算。接下来,学习记录元素在列表中位置的方法。

计数器的应用

例如:班主任有一个学生名单,需要按照顺序输出,第1名是xx,第2名是xx。

一般我们会使用索引,一行行输出,点击「run」直接运行即可。

names = ["Tom", "Tim", "Amy", "Eva"]
print(f"第1名是{names[0]}")
print(f"第2名是{names[1]}")
print(f"第3名是{names[2]}")
print(f"第4名是{names[3]}")

但是这样一行行的输出太繁琐了。

为了解决这个问题,可以使用"计数器"来记录当前的遍历位置。

(什么是"计数器"? "计数器"与"累加"的用法类似,在日常生活中,用来统计当前项目的进度)

因此,班主任输出学生排名,可以在遍历姓名的同时,使用"计数器"统计当前位置。

(计数器计算过程)

for循环第一次遍历列表,

然后使用count进行计数,此时count的值为0,+1,赋值给count,于是count的值为1.

同时数出那names列表里的第一个元素是Tom,于是输出"第一名是Tom"

第二次继续遍历

每次遍历count的值就加1

直到遍历完成。

if判断的复杂应用

学习了"累加"和"计数器"的用法后,但是部分情况下,我们不一定会对列表中的每个元素都进行累加,如果只取部分,该怎么处理呢?

如图所示,列表中已售罄商品使用"-"表示,想要剔除"-",统计剩余商品总价,该怎样计算呢?

这时,需要使用 if 语句,先判断再计算。

如图所示,逐个取出列表中的元素,使用 if 判断,元素不等于"-"时,再进行累加。

整理前面的思路,剔除"-"计算列表 jdList 的商品总价代码如图。

第4行,if 判断 price 不等于 "-" 时,使用累加计算总价。

在 for 循环中使用 if 语句时,需要注意缩进。

第一个缩进,上节课学过 for 循环中的代码需要增加缩进,表明是一个代码块。

第二个缩进,使用 if 语句时,语句里面的内容也需要增加缩进。

使用 for 循环和 if 语句时,需要注意 print() 的位置。

  1. 当 print() 在 for 循环中缩进四个空格时,按照代码执行顺序,遍历每个元素后再输出。

  1. 当 print() 位置在 if 语句的代码中时,表明 print() 是 if 代码块中的内容。
    只有在 if 判断的情况成立时,才会执行 print() 。

  1. 当 print() 位置与 if 语句缩进相同,按照代码执行的顺序,先执行 if 语句块,然后执行 print() 。
    因此,这里输出的内容也是列表中所有的元素。

  1. 当 print() 位置与 for 循环缩进相同时,按照代码执行顺序,循环结束后,再执行 print() 语句。
    因此,输出的内容为最终结果。

小练习 - 奇数的个数

要求:

  1. 定义变量 count ,初始值为0,用于计算奇数的个数;

  2. 使用 for 循环遍历列表,在循环中使用 if 语句判断,当元素为奇数时,将计数器 count 的值加一。

  3. 循环结束后,使用 print() 输出 count 。

# 定义numbers存储
numbers = [33.2, 4, 5, 7, 1, 2.8, 7, 5]

# 定义count初始值为0
count = 0

# 遍历列表,使用 if 判断num取模等于1时
# count计数加1,输出最终个数
for num in numbers:
    if num % 2 == 1:
        count = count + 1
print(count)

小练习 - 奇数的和

要求:

  1. 定义变量 result ,初始值为0,用于存储所有奇数的和;

  2. 使用 for 循环遍历列表,在循环中使用 if 语句判断,当元素为奇数时,将元素进行累加。

  3. 循环结束后,使用 print() 输出 result 。

# 定义列表numbers
numbers = [33.2, 4, 5, 7, 1, 2.8, 7, 5]

# 定义变量result,初始值为0
result = 0

# for循环遍历列表
for num in numbers:
    # 使用if判断,num取模的值等于1时
    if num % 2 == 1:
        # result和num相加,赋值给result
        result = result + num
# 使用print()输出结果
print(result)
赞(1)
未经允许不得转载:工具盒子 » Python基础 – for循环