循环语句
2024年4月4日大约 3 分钟PythonPythonwhilefor
循环语句
循环语句就是可以让一段代码重复执行n次,而不是写n行。
一、while 循环
while循环的结构和if语句相似,只要每次满足条件,就是重复执行内部的代码块,直到条件不满足。
while 判断的条件:
条件满足执行代码
执行后,回到第1行再次判断
比如需要输出从1到10的10个数字,通过如下的代码:
i = 1 # 初始化为1
while i <= 10: # 判断是否小于等于10
print(i) # 如果小于等于10,就输出
i += 1 # i自增1
需要记得每次循环改变i的值,要不然条件就会一直满足,不会退出。
二、for 循环
遍历列表
使用for循环可以方便的遍历列表中的每个元素去做处理。
依次次遍历list中的每个元素,并输出 你好 ***
language_list = ["python", "c", "java"]
for language in language_list:
print(f"你好 {language}")
你好 python
你好 c
你好 java
enumerate函数
enumerate使用enumerate函数可以获取每次遍历时的索引。
有两个列表,一个是课程名,一个是取得的成绩,输出每门课程的成绩
course_list = ["语文", "数学", "英语"]
course_score = [89, 91, 90]
# enumerate可以直到索引idx和值
for idx, course in enumerate(course_list):
print(f"课程 {course},分数:{course_score[idx]}") # 通过索引可以取出在另外一个列表中对应位置的值
课程 语文,分数:89
课程 数学,分数:91
课程 英语,分数:90
zip 函数
通过zip函数可以将两个列表合并到一起,形成一个新的列表,列表中的每个元素是一个元组,元组中包含两个列表中对应的值。
course_list = ["语文", "数学", "英语"]
course_score = [89, 91, 90]
# 这里需要用list函数转换为列表
print(list(zip(course_list, course_score))
[('语文', 89), ('数学', 91), ('英语', 90)]
可以看到两个列表被组合在一起了
再次遍历就不需要使用索引,也能获得相同的结果
course_list = ["语文", "数学", "英语"]
course_score = [89, 91, 90]
for course_info in zip(course_list, course_score):
print(f"课程 {course_info[0]},分数:{course_info[1]}")
range 方法
range(start, end)
函数可以创建指定范围的数,范围包含起始位置(第一个参数),但不包含结束位置(第二个参数)。第一个参数省略则默认为0。
- range(10) 生成 0-9 的序列
- range(1,101) 生成 1-100 的序列
需要注意的是这里 range生成的是一个可以迭代遍历的序列,但不是一个列表(不能执行 append 等方法)。 如果需要 print 需要使用 list 函数转换为列表
list(range(10))
for i in range(1,101):
print(i)
1
2
...
100
三、跳出循环
中断循环
在循环代码块中如果需要提前中断循环(比如无法继续执行,或者已经找到需要的内容),可以使用 break
关键字。
当遍历到数学后就会退出循环。
course_list = ["语文", "数学", "英语"]
for course in course_list:
if "数学" == course:
break
print(course)
语文
跳出循环
通过 continue
可以跳过当前循环的后面的代码,进入下次循环。
比如要输出 0-100 的所有奇数,当是偶数的时候可以跳过循环。
for i in range(0,100):
if i % 2 == 0:
continue
print(i)
四、遍历字典
字典的 item()
方法可以将字典的每个键值对转换为可以迭代的对象。
student = {
"name": "Python",
"age": 33,
"sex": "男"
}
for key, value in student.items():
print(f"key is {key}, value is {value}")
key is name, value is Python
key is age, value is 33
key is sex, value is 男