• 神奇的循环知识


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

            

  • 相关阅读:
    xpath解析以及lxml解析库
    python sort()和sorted()的不同
    爬取电影天堂-二级页面抓取
    爬取猫眼电影榜单TOP100榜-以mysql数据库保存
    爬取猫眼电影榜单TOP100榜-以csv文件保存
    爬取猫眼电影榜单TOP100榜-以命令行输出
    爬虫 贪婪匹配以及非贪婪匹配
    爬取百度贴吧
    python 面试
    python 从array保存伪色彩图片 —— 发现的坑
  • 原文地址:https://www.cnblogs.com/huanghua6/p/9134188.html
Copyright © 2020-2023  润新知