神奇的循环知识
Posted huanghua6
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神奇的循环知识相关的知识,希望对你有一定的参考价值。
-
流程控制之if判断
-
流程控制之while循环
-
流程控制之for循环
if语法:
if条件:(if条件形成后,/n后会缩进四个空格)
代码1
代码2
代码3
----------------------------------------------------------------------------
语法一:
cls=‘human‘
sex=‘famele‘
ale=22
if cls==‘human‘ and sex==‘famele‘ and ale>18 and ale<30 : (如果条件成立)
print(‘表白‘) (条件成立运行该行代码)
print(‘end.....‘) (无论条件是否成立,最后都会运行该行代码)
----------------------------------------------------------------------------------
语法二:
cls=‘human‘
sex=‘famele‘
ale=22
if cls==‘human‘ and sex==‘famele‘ and ale>23 and ale<50: (如果条件成立)
print(‘表白‘) (条件成立运行该行代码)
else: (前面条件不成立的话)
print(‘阿姨好‘) (前面条件不成立的话,运行该行代码)
print(‘end.....‘) (最后执行该行代码)
--------------------------------------------------------------------------------------
如果:成绩>=90,那么:优秀
如果成绩>=80且<90,那么:良好
如果成绩>=70且<80,那么:普通
cj=input(‘请输入分数:‘)
cj=int(cj) (如果不输入该行,那么系统会提示str不能和下面的int做大小对比,所以必须把填入的分数,字符串转换成整形)
if cj >=90:
print(‘优秀‘)
elif cj >=80 and cj<90:
print(‘良好‘)
elif cj >=70 and cj<80:
print(‘普通‘)
——————————————————————————————————
name=‘huanghua‘
paw=‘123‘
name1=input(‘请输入用户名:‘)
paw1=input(‘请输入密码:‘)
if name==name1 and paw==paw1:
print(‘输入正确‘)
else:
print(‘输入错误‘)
其中我自犯过的错:我首先写成paw=123,结果在输入界面输入123后,显示(‘输入错误’);这是应为paw=123 显示为int,int无法与str做
对比,所以两种解决模式:1.paw=‘123‘ 这样的话表示paw之后是str,str能和str之间做对比;2.在paw=input(‘请输入密码’)的下一行输入
paw=int(paw1),目的是将用户之后输入的str自动转换成int模式。
————————————————————————————————————————————————
cls=‘human‘
sex=‘famele‘
ale=22
bb=False
if cls==‘human‘ and sex==‘famele‘ and ale==22:
print(‘表白‘)
if bb:
print(‘在一起‘)
else:
print(‘我逗你玩的‘)
else:
print(‘阿姨好‘)
print(‘end.....‘)
这里面采用了一个嵌套模式,就是在if后面再增加if判断,新增一个bb=False,也是条件之一,表示在完成第一个if后,在嵌套下一个if条件,
条件不成立显示(表白)(我逗你玩的);
如果bb=True,在第一个条件成立够,第二个if bb:表示条件成立,显示(表白)(在一起)
但是如果第一个if条件不成立的话,它将直接跳到else,显示(阿姨好),之前的if bb条件将直接跳过,因为它是在第一个if 大框架之下,和else没有关系。
—————————————————————————————————————————————————————————————
while
while的语法,while的循环又称为条件循环。
name=‘huanghua‘
paw=‘123‘
while True:
name1=input(‘请输入姓名:‘)
paw1=input(‘请输入密码:‘)
if name==name1 and paw==paw1:
print(‘输入正确‘)
else:
print(‘输入错误‘)
while True:循环的条件为True,表示循环的条件为对的情况下;但是运行后出现了死循环,就是我输入账号,密码无论对错都在循环,并没有在输入对的情况下结束循环。
—————————————————————————————————————————————————————————————
while+break:
break 的意思是终止掉当前层的循环,执行其他代码。
name=‘huanghua‘
paw=‘123‘
while True:
name1=input(‘请输入账号:‘)
paw1=input(‘请输入密码:‘)
if name==name1 and paw==paw1:
print(‘输入正确‘)
break
else:
print(‘输入错误‘)
这次程序中添加了break,但是添加的很巧妙,它是在第一条条件成立后面加的break,表示如果第一条条件成立后将结束本次循环,后面都不循环.
—————————————————————————————————————————————————————————————
while+continue
continue的意思是终止掉本次循环,直接进入下一次循环。
记住:continue一定不要加到循环体最后一步执行的代码。
n=1
while n<11:
print(n)
n+=1
1 2 3 4 5 6 7 8 9 10
n等于1
while循环条件是:n要循环小于11的数字
打印以上条件的n值
在每次n循环后都要+1,后再在显示+1后的值(n=1,n+1=2显示2,以上n=2的基础上再+1=3,以此类推,直到小于11,等于10)
——————————————————————————————————————————————————————————
n=1
while n<11
if n==8 :
n+=1
continue
print(n)
n+=1
显示1 2 3 4 5 6 7 9 10
逻辑是:和之前一样n=1,while循环的条件是n要循环小于11的数,(如果n在循环到等于8的条件下,继续按照没循环后面加1,当循环到8的时候,结束本次8的循环,接着打印之后的数字,之后一直循环到小于11的数字之前都要在循环数值情况加加1)。
这里面重点是:
if n==8:
n+=1
continue
里面很多都会忘记增加n+=1,因为以为最后一步有了就不需要了。如果少这位代码的话,出来的值就运行到7之后就停止运行了,原因是系统是从上到下运行,他在达到条件等于8后它就跳过本次循环了直接循环打印8之前的数值,最后的n+=1达不到效果。
————————————————————————————————————————————————————————————
while True:
if条件1:
code1
code2
continue (如果这里加continue是正确的,因为加在这里表示程序运行到这里后将结束code3 code4的程序,这里加comtinue是正确的)
code3
code4
continue (如果将continue加在这里是毫无意义的,应为程序运行到这里本来已经结束了,这里加是错的)
————————————————————————————————————————————————————————-————
while 嵌套:
name=‘huanghua‘
paw=‘123‘
while True:
name1=input(‘请输入账号:‘)
paw1=input(‘请输入密码:‘)
if name==name1 and paw==paw1:
print(‘输入正确‘)
while True:
cmd=input(‘输入执行的功能:‘)
if cmd==‘q‘:
break
print(‘%s功能执行中....:‘%cmd)
break
else:
print(‘输入错误‘)
当中有两个while循环,嵌套作用,主要是引申在账号,密码输入正确后,之后的操作再次循环,当在输入执行功能中要求输入q后,要求退出所有循环,所有此代码中有两次break,break是代表时终止掉当前循环,第一个break是代表输入q后,当前break是只对应if的条件等于q时,结束掉后面所有操作,返回输入账号,密码的界面,再次while循环;第二次的break输入在与第一次if对齐,表示到此行后,结束所有的while循环的if条件。
——————————————————————————————————————————————————————————————————————————————————————————
while+True:
name=‘huanghua‘
paw=‘123‘
tag=True:
while tag:
name1=input(‘请输入账号:)
paw1=input(‘请输入密码‘)
if name==name1 and paw==paw1:
print(‘输入正确")
while tag:
cmd=inpurt(‘请输入命令:)
if cmd==‘q‘
tag=False
else:
print(‘%s功能执行中....‘%cmd)
else:
print(‘输入错误‘)
该代码增加了tag=True,这是个变量的关系,相当于tag等于True这个值,之前代码中while True:这个可更改为while tag,意思是一样的,
其次之前在cmd==‘q’后面需要加bresk,但是在该代码中都取消了break,后面增加tag=False后,将之前所以tag=True 的值全部更改为False,
在while循环中值为真,就能循环,只为假就停止循环,True为真能循环,False为假,都不能循环,所以之后如果cmd=‘q’后,增加tag值为False,它就跳到第二个while tag ,发现该值为False,假的不循环,再跳到第一个while tag后同上,就全部停止循环。
——————————————————————————————————————————————————————————
while+else:
n=1
whil n<5:
if n==3:
break
print(n)
n+=1
else:
print(‘=====")
显示1 2.
因为当n==3时,加了个break后,后面的代码就不执行了。
——————————————————————————————————————————————
n=1
while n<5:
print(n)
n+=1
else:
print(‘=======‘)
显示1 2 3 4 ==========
————————————————————————————————————————————————
for 循环:
names=[‘egon‘,‘asb‘,‘wsb‘,‘lsb‘,‘csb‘]
n=0
while n<len(names):
print(names[n])
n+=1
显示:egon asb wsb lsb csb
我们剖析下以上步骤:
取列表里面的值,首先把列表里面的值定义个n,因为n是要取值我们从最左边开始计算,最左边电脑取值都是0开始,所以我们用0计算,
然后我们用while 循环模式取值,给n一个定义,n要小于列表的长度,长度定义为len,len后面必须标注列表的变量名,接着我们开始打印names的列表值,names的列表值,我们用n来定义过,所以在打印names的值,需要在后面加个n,最后在标注n值在每次输出时候都要
进一位。
————————————————————————————————————————————————————————————
info={‘name‘:‘egon‘,‘age‘:18,‘sex‘:‘male‘}
取字典info中key的值和key,valse值
for k in info:
print(k)
显示name,age,sex
字典中name是key值,egon是valse值。
for k in info:
print(k,info[k])
显示name engon; age 18; sex male
其中字典中取key值或valse值需要套用一个公式:
for key名 in 字典变量名:
print(key名)
取到的是key!
for key值 in 字典名:
print(key名,字典名[key名])
就能取到key值和valse值。
names=[‘egon‘,‘asb‘,‘wsb‘,‘lsb‘,‘csb‘]
取列表中的值:
for k in names:
print(k)
显示engo,asb,wsb,lsb,csb
通过for循环定义同时也能取到列表值
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
for+range :
range : 范围
for k in range (1,10): for 循环1开始到10结束,顾头不顾尾
print(k)
显示1 2 3 4 5 6 7 8 9
————————————————————————————————————————
for k in range(10): (10)只写10的话,那么他起始默认值就是0,顾头不顾尾
print(k)
显示0 1 2 3 4 5 6 7 8 9
——————————————————————————————————————————
for k in range (1,10,2): (1,10,2)循环1到10之间的值,顾头不顾尾,最后的2代表每打印第一个数后跨过之后的数字取第三数字,以
print(k) 此类推,如果不写默认的值是1)
显示1 3 5 7 9
————————————————————————————————————————————
name=[‘egno‘,‘axx‘,‘wxx‘,‘’lxx‘,‘hxx‘]
for k in range (5):
print(k,name[k])
显示0,engo 1,axx 2,wxx 3,lxx 4hx
for循环通过索引来找出0,1,2,3,4, 在按照key ,valse的方式取出valse值
for k in range (len(name)): 用(len(列表名)) 就能直接取出列表的长度
print(k,name[k])
————————————————————————————————————————————
嵌套for循环使用:
for k in range(4):
print(‘-----第一层%s-----‘%k)
for i in range(3):
print(‘ 第二层%s‘%i)
显示-----第一层0-----
第二层0
第二层1
第二层2
------第一层1------
第二层0
第二层1
第二层2
------第二层2-----
第二层0
第二层1
第二层2
------第一层3------
第二层0
第二层1
第二层2
其中就是for循环嵌套使用,其中有两次for循环,第一次为大循环,第二次为小循环,for循环嵌套使用,遵循以一次最外面的for循环执行一次,接着执行一次里面的小循环,如果里面的循环嵌套多次,就保证将里面的小循环执行好多次后,在绕回来再一次执行外面的大循环,再执行里面的小循环。以此类推。
——————————————————————————————————————————————————————————
for+break:
name=[‘engo‘,‘lxx‘,‘wxx‘,‘hww‘,‘yrr‘]
for k in name:
if k==‘wxx‘
break
print(k)
显示:engo lxx
但for 循环满足的if的条件后,用break,代表终止本层循环,后面不再执行,就显示前面的值。
依次类推,如果把break,更改为continue的话,但if条件满足后,跳掉满足条件的那一条,其他照样执行。
————————————————————————————————————————————————————
for+else
a=[1,2,3,4,5]
for k in a:
print(k)
else:
print(‘end.....‘)
显示1 2 3 4 5 end..........
说明for循环和else是可以嵌套使用的。
a=[1,2,3,4,5]
for k in a:
if k==3:
break
else:
print(‘end.....‘)
显示1 2
为什么不显示后面的数字和else对应的打印条件呢?应为在k值等于3时,就会被break,后面的所有都无法执行。
以上是关于神奇的循环知识的主要内容,如果未能解决你的问题,请参考以下文章