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 可以控制循环次数
posted @ 2020-03-10 16:35  给你加马桶唱疏通  阅读(284)  评论(0编辑  收藏  举报