◎知识点
循环结构的概述
while语句
for-in语句
◎脚本练习
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ @FileName: while.py @Function: while definition @Author: Zhihe An @Site: https://chegva.com @Time: 2021/6/30 """ """一、循环结构的概述""" """ 1、为什么需要循环结构? 如果要打印1到10之间的所有自然数,你可能会这样实现: print(1) print(2) print(3) print(4) print(5) print(6) print(7) print(8) print(9) print(10) 如果要打印1到1000之间的所有自然数,你就要写1000行代码,而且这1000行代码都是重复的 print语句,唯一的区别在于要打印的自然数不同 """ """ 2、什么是循环结构? 使用循环结构,上面的需求可以这样实现: i = 1 while i < 11: print(i) i += 1 或者这样实现: for i in range(1, 11): print(i) 代码量少了很多,而且没有重复的代码 如果要打印1到1000之间的所有自然数,只需要把11改为1001就可以了 循环结构指的是:程序根据循环条件反复执行某段代码,直到不满足循环条件为止 python提供了两种实现循环结构的语句:while语句和for-in语句 """ """二、while语句""" """ while语句的语法格式: 初始化部分 while 循环条件: 循环体 其中,循环体对应的代码块必须缩进 (1) 初始化部分:用于设置循环的初始条件,比如循环控制变量的初始值 (2) 循环条件:每次循环都要判断循环条件的布尔值,以决定继续循环还是终止循环 循环条件中通常包含循环控制变量 (3) 循环体:这是循环操作的主体内容,可以是一条语句,也可以是多条语句 循环体中的某些语句用于改变循环控制变量的值,从而改变循环条件的布尔值 while语句的执行流程: 执行完一次初始化部分之后,反复判断循环条件的布尔值 如果循环条件的布尔值为False,则终止循环 如果循环条件的布尔值为True,则执行循环体,执行完循环体后再次判断循环条件的布尔值 """ i = 1 while i < 11: print(i) i += 1 """ 应该确保让循环条件的布尔值在某一时刻变为False,以避免while语句陷入死循环(无限循环), 即永远不会终止的循环 i = 1 while True: print(i) i += 1 """ """ 有时候循环条件可能不太容易确定,需要在循环体中才能决定是否要退出循环,在这种情况下, 可以使用while-True-break结构,也就是说,通过while True构造一个无限循环, 在循环体中满足某个条件时通过break退出循环 """ while True: word = input('请输入一个单词:') if not word: break print('输入的单词是:', word) """三、for-in语句""" """ 1、什么是for-in语句? for-in语句专门用于遍历序列、字典和集合等类型的对象 其中,遍历指的是:把对象的所有元素依次访问一遍。每访问一个元素,称之为一次迭代。因此, 可以使用for-in语句遍历的对象又被称为可迭代对象 for-in语句的语法格式: for 自定义的变量 in 要遍历的可迭代对象: 循环体 其中,循环体对应的代码块必须要缩进 如果循环体内不需要访问自定义的变量,可以将自定义的变更替代为下划线_ for-in语句的执行流程: 反复判断是否遍历完可迭代对象中的所有元素: 如果已经遍历完可迭代对象中的所有元素,则终止循环 如果没有遍历完可迭代对象中的所有元素,则自定义的变量自动被赋予当前迭代的元素值,然后执行循环体, 执行完循环体后再次判断是否遍历完可迭代对象中的所有元素 当迭代次数已知时,推荐使用for-in语句;当迭代次数未知时,推荐使用while语句 """ """ 2、使用for-in语句遍历range、列表、元组和字符串等序列 """ for number in range(1, 4): print(number) for _ in range(1, 4): print('Hello') for number in [1, 2, 3]: print(number) for number in (1, 2, 3): print(number) for char in '123': print(char) """ 在遍历序列的过程中,如果需要对序列进行修改,最好先通过切片操作生成一份序列的拷贝 """ words = ['Java', 'Python', 'Kotlin', 'Swift', 'Go'] for word in words[:]: if len(word) < 5: words.remove(word) print(words) # ['Python', 'Kotlin', 'Swift'] """ 3、使用for-in语句遍历集合和字典 """ s = {2, 3, 1} for number in s: print(number) for number in sorted(s): print(number) d = {'Fruits': 86, 'Books': 88, 'Videos': 83} # "自定义的变量自动被赋予当前迭代的元素值"中的"元素值"指的是字典的key for elem in d: print(elem) for key in d.keys(): print(key) for value in d.values(): print(value) for key, value in d.items(): print(key, '→', value)
▽ while语句的流程图
▽ for-in语句的流程图