03-12 python语法入门之流程控制之for循环
一、什么是for循环?
- 循环就是重复做某件事,for循环就是python提供第二种循环机制。
二、为何要有for循环?
- 理论上for循环做的事情,while循环都可以做。之所以要用for循环,是因为for循环在循环取值比while循环更简洁。(循环取值也叫遍历)
三、for循环的语法(如何用for循环)
- 伪代码示例
# 运行原理:
# 第一次从可迭代对象中取出第一个值赋值给变量名,再执行循环体代码.
# 第二次从可迭代对象中取出第二个值赋值给变量名,接着执行循环体代码.
# ......
# 第n次从可迭代对象中取出第n个值赋值给变量名,接着执行循环体代码,取完所有值,循环结束
for 变量名 in 可迭代对象: # 可迭代对象可以是:列表、字典、字符串、元组、集合
代码1
代码2
代码3
...
四、for循环基本使用之循环取值
1、列表循环取值
- 注意:列表循环取值,默认取出的是第一层的值。
# 简单版: 利用for循环
li = ['alex_dsb', 'lxx_dsb', 'egon_nb']
for i in li: # 第一次:i='alex_dsb' 第二次:i='lxx_dsb' 第三次:'egon_nb'
print(i)
# 复杂版:利用while循环
li = ['alex_dsb', 'lxx_dsb', 'egon_nb']
i = 0
while i < 3: # i条件范围:0~2,且共循环3次
print(li[i])
i += 1
2、字典循环取值
- 注意:没有附加属性的字典的取值,默认取出的是字典的key
# 简单版:利用for循环
dic = {'k1': 111, 'k2': 2222, 'k3': 333}
for key in dic:
print(dic[key])
# 复杂版:while循环可以遍历字典,太麻烦了
3、字符串循环取值
- 注意:字符的循环取值,取出的是字符串中的每个字符(注意:空格也是字符)
# 简单版:利用for循环
msg = "you can you up,no can no bb"
for char in msg:
print(char)
# 复杂版:while循环可以遍历字符串,太麻烦了
五、总结for循环与while循环的异同
- 相同之处:都是循环,for循环可以干的事,while循环也可以干
- 不同之处:
- while循环称之为条件循环,循环次数取决于条件何时变假。
- for循环称之为“取值循环”,循环次数取决于in后包含值得个数。
六、for循环基本使用之控制循环次数
引入:in后直接放一个数据类型来控制循环次数有局限性,当循环次数过多时,数据类型所包含值的个数就需要伴随增加,因此我们就用rang来控制循环次数再好不过了。
1、range功能介绍
- 强调:for循环并不是一定要进行循环取值操作,如果只是单纯的执行循环的次数我们使用range就好。
# 只指定结尾:range(10)
顾头不顾尾,默认从0开始。从0开始,从9结束。
# 指定开头和结尾:range(1,9)
指定开始指定结束。从1开始,到8结束。
# 指定开头和结尾及步长:
range(1,9,1)默认步长为1,步长代表从当前值的基础上相加,比如当前值为1,在当前值基础上加1得2,下一个值也就是2。从1开始,从8结束,每次加1。
2、range功能深入(了解)
2.1 range在python2与python2的简单介绍
- 举例:range在python3里是一只老母鸡,在python2中是一筐鸡蛋
# 在python2中
'''
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
>>> range(1,9) # 1...8
[1, 2, 3, 4, 5, 6, 7, 8]
>>>
>>> range(1,9,1) # 1 2 3 4 5 6 7 8
[1, 2, 3, 4, 5, 6, 7, 8]
>>> range(1,9,2) # 1 3 5 7
[1, 3, 5, 7]
'''
# 在python3中
"""
>>> range(10)
range(0, 10)
>>> range(1, 9)
range(1, 9)
>>> range(1, 9, 1)
range(1, 9)
>>> range(1, 9, 2)
range(1, 9, 2)
"""
2.2 for+range+len实现索引取值操作(麻烦,所以不推荐)
- 上面 for+可迭代对象 的取值操作是直接遍历取值,而我们也可以通过 for+range 实现索引取值
# 索引取值(不推荐)
li = ['aaa', 'bbb', 'ccc']
for i in range(len(li)):
print(i, li[i])
# 直接遍历取值(推荐)
for i in li:
print(li)
七、for+break 与 for+else 实现用户登录功能
- 强调:终止for循环只有break一种方案
- break:立刻终止本层循环
- else:与for循环关联,只有在循环正常执行完毕,且没有被break打断的情况下else中的子代码块才会生效。
# 需求:用户登录,每次输错都答应提示错误次数。输错三次退出循环并打印提示。登录成功退出循环。
username = 'egon'
password = '123'
for i in range(3):
inp_username = input("please input your username>>:")
inp_password = input('please input your password>>:')
if inp_password == password and inp_username == username:
print("登录成功")
break
else:
print('错误【%s】次' % (i + 1))
else:
print("错误三次,强制退出。。。")
八、for+continue
# 需求:打印0~6之间的数,4不打印
for i in range(7):
if i == 4:
continue
print(i)
九、for循环嵌套
- 强调:外层循环循环一次,内层循环循环完毕以后,才会进入到下一次外层循环。
for out_num in range(3):
print('------外层的代码【{}】-----'.format(out_num))
for in_num in range(5):
print('内层的代码【{}】'.format(in_num))
十、用户交互功能之print详细介绍
1、print之打印多值
- 注意:多个打印,逗号隔开,我们发现打印出来有个空格。
2、print之end参数的使用
- 用法:
print(值1,值2,值n,end='\n')
,end用在所有值末尾,且end默认参数就是换行符\n
,print功能会在输出结果之前为输出的值末尾加上end指定的参数。同时我们也可以对end参数进行指定。
print('hello', end='*')
print('world', end='|')
'''
hello*world|13
'''
3、print之换行符
print('hello\n', end='')
print('world\n', end='')
'''
hello
world
'''
总结for循环3大作用
- for+可迭代对象 可以实现循环遍历取值
- for+range+len 可以实现索引取值(不推荐)
- for+range 可以控制循环次数