一:流程控制之while循环
1:循环的基本语法及用法
二:死循环:条件永远为True
三:结束while循环的两种方式
3.1:将条件改为False
3.2:break 直接结束本层
四:嵌套多层while循环
4.1:添加break
4.2:添加False
五:while+continue的使用
六:while+else的使用
七:for循环 (取值)
7.1:固定语法跟使用
7.2:for循环的结束方式
7.2.1:for+break
7.2.2:for+continue
7.2.3:for+range()
·什么是循环?
重复做某件事
·为何要有循环?
为了控制计算机能像人一样去重复做某件事
·如何用循环
1.1.1:基本语法
while 条件:
代码1
代码2
代码3
1.1.2:基本用法
案例1:
i = 0 # 设置变量值=0
tag = True # 设置循环条件为True
while tag: # 开始循环条件
if i == 5: # 设置判断条件当变量值i条件=5时
tag = False # 循环条件就转为False
print(i) # 开始输出i
i += 1 # 每次输出i时叠加1
>>> 1
2
3
4
5
#循环逻辑:
i=0
判断i==5
条件为True
i+1=1
判断i==5
条件为True
(i)1+1=2
判断i==5
条件为True
(2)+1=3
判断i==5
条件为True
,3+1=4
,4+1=5
判断i==5
条件转为False
(i)5+1=6
判断条件已转为False
结束
#结论: while循环条件为True的情况下将不断循环,当条件转为False时运行完本次,下次在运行的时候才会结束。
#可理解为:先判断后+1,当运行到i(4)+1=5时,继续运行(i)5+1=6时回到第一判断条件不成立结束。
案例2:
i=0
tag = True
while tag:
print(i)
i += 1
if i == 5:
tag = False
>>> 0
1
2
3
4
#可理解为:先+1后判断,当运行到(i)4+1=5时,底部判断条件成立,回到第一个判断条件不成立结束。
案列3:简化
i = 0
while i < 6:
print(i)
i += 1
>>> 1
2
3
4
5
案列1:
while True:
x = input(">>> ")
y = input(">>> ")
案列2:
while True:
print(1)
#注意此操作会导致cpu飙升。
3.1:将条件改为False
特点:等到本次运行代码运行完毕后,下一次循环判断条件才会生效。
案列1:
i = 0 # 设置变量值=0
tag = True # 设置循环条件为True
while tag: # 开始循环条件
if i == 5: # 设置判断条件当变量值i条件=5时
tag = False # 循环条件就转为False
print(i) # 开始输出i
i += 1 # 每次输出i时叠加1
>>> 1
2
3
4
5
特点:立即干掉while循环
i = 0
tag = True
while tag:
if i == 5:
break #加入break循环到i (4)+1=5时满足条件直接结束本层不打印=5
print(i)
i += 1
>>> 0
1
2
3
4
格式:
while True:
while True:
while True:
break
break
break
#按代码块添加break直接结束本层循环
格式:
tag=True
while tag:
while tag:
while tag:
tag = False
#添加False每次循环结束后判断,若判断条件成立,循环后在结束。
案例1:
tag = True #设置变量值为True
while tag: #循环变量
inp_user= input("username>>> ") #请用户输入姓名
inp_pwd=input("password>>> ") #请用户输入密码
if inp_user == "egon" and inp_pwd == "123": #判断用户输入的姓名和密码与正确的是否相同
print('login successful') #若对,显示登陆成功
#tag = False #判断为Fals循环结束后结束
break #直接到本层结束
else: #否则
print('usname or password error') #判断输入的账号和密码是错误的
>>>username>>> 11
password>>> 77
Process finished with exit code 0
案例2:
while True: #设置循环条件为True
inp_usname = input("usname>>>") #设置用户输入信息
inp_pwd = input("password>>>") #设置用户输入密码
if inp_usname == "egon" and inp_pwd == "123": #判断用户输入的姓名和密码与正确的是否相同
print("login successful") #判断输入的正确登录那么登录成功
while True: #设置循环条件为True
print(""" #设置要执行的命名编号
0:退出
1:取款
2:存款
3:转账
""")
choice = input("请输入您的编号") #输入要执行的命令编号
if choice == "0": #判断命令编号为0
break #直接结束本层
elif choice == "1": #判断命令编为1
print("正在取款。。。") #执行
elif choice == "2": #判断命令编号为2
print("正在存款。。。") #执行
elif choice == "3": #判断命令编号为3
print("正在转账。。。") #执行
else: #否则
print("输入的命令不存在。") #输入错误
break #以上任意一个判断命令执行后从那层结束
else: #这层是第一个判断用户输入密码和姓名如果不是第一次判断的输入正确那么就是就是
print("usname or password error") #提醒用户输入错误
#此案列为嵌套循环多种方式结束结合案列,总体可概括为每个代码块执行一个命令,判断条件出现后转为子代码块,但,在出现循环的情况时要记住循环的代码块都要能继续循环!
while+continue:结束本次循环,直接进入下一次
案列:
count = 0 #设置变量值为True
while count < 6: #循环变量值<6
if count == 2 or count == 4: #设置判断条件=2和=4
count += 1 #当2和4时继续+1
continue #当判断条件=2和=4结束当次循环,进入下一次
print(count) #打印变量值
count += 1 #变量值+1
>>> 0
1
3
5
#在continue在同一级别中底下不要在写代码,不会再执行。
#continue 不要要加在最后一步!
else的子代码块会在while循环正常死忙时运行,没有被break结束的就是正常死亡。
例:
count = 0
while count < 6:
if count == 2 or count == 4:
count += 1
continue
print(count)
count += 1
else:
print("....")
7.1.1:固定语法:for x(可变) in+包含多元素的类型
7.1.2:使用:一般用来取值
案例1:
以上面举例不难发现,相比之下比while更简单,同样列表,字典,字符串也可以取值循环。
names = ["agon","tom","jack","lili"] #变量名和值
for x in names: #用for x in 取出name个数
print(x) #打印变量值
>>> agon
tom
jack
lili
#总结:while循环取决于False,for循环取决于in后面的变量值的个数。
案例2:
for x,y in [["name","egon"],["agon",18],["gender","male"]]:
print(x,y)
>>> name egon
agon 18
gender male
#运用赋值解压取值,可以直接将数据从列表里提取出来。
案例3:
dic={
"k1":111,"k2":222,"k3":333}
for x in dic:
print(x,dic[x]) #dic[x]看作key:value
>>> k1 111
k2 222
k3 333
案列4:
for x in "holle":
print(x)
>>> h
o
l
l
e
加入break直接取值到本层结束 案例:
for i in [11,22,33,44,55]:
if i == 33:
break
print(i)
>>> 11
22
加入continue跳过本层取值,继续其他取值
例:
for i in [11,22,33,44,55]:
if i == 33:
continue
print(i)
>>> 11
22
44
55
在python2解释器中,range(3)=[0,1,2],即扔一个鸡蛋返回一筐子鸡蛋。
而在python3解释器中,range(3)=range(0,3),即扔一个鸡蛋返回了一直老母鸡。(请注意,取值时顾头不顾腚)。
可以通过range来控制循环次数。
例:
for X in range(3):
print(111)
print(222)
print(333)
##设置循环3遍,
7.2.4:for +enumerate的使用
ennumerate可将列表中的数据取出后带着这个数据所在的位置
例:
f
or i in enumerate(["egon","tom","jack"]): 将括号里的内容赋值给i
print(i)
>>>(0, 'egon')
(1, 'tom')
(2, 'jack')
还可以同时赋值给两个变量,可单独取出。
例:
for i,name in enumerate(["egon","tom","jack"]): #将列表中的内容赋值给i,name可以同时去两个,也可以单独取
print(i,name)
>>>0 egon
1 tom
2 jack
例: 字典取值也可以
for x in enumerate({
"k1":111,"k2":222,"k3":333}):
print(x)
>>>(0, 'k1')
(1, 'k2')
(2, 'k3')