码迷,mamicode.com
首页 > 其他好文 > 详细

神奇的循环知识

时间:2018-06-05 18:43:23      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:break   大小   int   不执行   NPU   个数   很多   显示   循环条件   

  • 流程控制之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,后面的所有都无法执行。

 

 

 

 

 

 

 

 

        

神奇的循环知识

标签:break   大小   int   不执行   NPU   个数   很多   显示   循环条件   

原文地址:https://www.cnblogs.com/huanghua6/p/9134188.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!