zoukankan      html  css  js  c++  java
  • 从零开始的循环

    # 今日内容

    * 流程控制if
    * 流程控制while
    * 流程控制for
    * 数据类型int,float
    * 数据类型str以及内置方法

    ### if判断

    模拟人对某些事物的判断并作出不同的决策的能力

    计算机由于要像人一样的去工作,那么它必须也要具备判断事物对错的能力,从而作出不同的响应

    实际中的例子,面前走过一个妹纸,你会想好不好看,要不要超过去看看正脸等等

    程序中比如ATM取款机,需要接收你输入的用户名和密码来判断你是否是合法用户等等

    ```python
    if 条件:
    代码1
    代码2
    代码3
    ...
    # 代码块(同一缩进级别的代码,例如代码1、代码2和代码3是相同缩进的代码,这三个代码组合在一起就是一个代码块,相同缩进的代码会自上而下的运行)
    ```

    比如你眼前走过了一个生物,你的大脑会迅速的采集这些信息然后判断是不是女人,年龄在18到24之间,长是否好看等,映射到计算机上就是比对一堆变量

    ```python
    # if
    cls = 'human'
    gender = 'female'
    age = 24

    if cls == 'human' and gender == 'female' and age > 28 and age < 28:
    print('开始表白')

    print('end...')
    ```

    ### if…else

    ```python
    if 条件:
    代码1
    代码2
    代码3
    ...
    else:
    代码1
    代码2
    代码3
    ...
    ```

    if...else表示if成立代码成立会干什么,else不成立会干什么。

    ```python
    # if...else
    cls = 'human'
    gender = 'female'
    age = 38

    if cls == 'human' and gender == 'female' and age > 16 and age < 22:
    print('开始表白')
    else:
    print('阿姨好')
    ```

    ### if…elif…else

    ```python
    if 条件1:
    代码1
    代码2
    代码3
    ...
    elif 条件2:
    代码1
    代码2
    代码3
    ...
    elif 条件3:
    代码1
    代码2
    代码3
    ...
    ...
    else:
    代码1
    代码2
    代码3
    ...
    ```

    if...elif...else表示if条件1成立干什么,elif条件2成立干什么,elif条件3成立干什么,elif...否则干什么。


    ```python
    # if...elif...else
    cls = 'human'
    gender = 'female'
    age = 28

    if cls == 'human' and gender == 'female' and age > 16 and age < 22:
    print('开始表白')
    elif cls == 'human' and gender == 'female' and age > 22 and age < 30:
    print('考虑下')
    else:
    print('阿姨好')
    ```

    # 练习(掌握)

    ## 练习1:成绩评判

    * 如果 成绩>=90,打印"优秀"
    * 如果 成绩>=80 并且 成绩<90,打印"良好"
    * 如果 成绩>=70 并且 成绩<80,打印"普通"
    * 其他情况:打印"差"


    ```python
    # 成绩评判
    score = input("your score: ")
    score = int(score) # 注意类型转换


    if score >= 90:
    print('优秀')
    # elif score >= 80 and score < 90:
    elif score >= 80:
    print('良好')
    # elif score >= 70 and score < 80:
    elif score >= 70:
    print('普通')
    else:
    print('差')
    ```

    ## 练习2:模拟登录注册


    ```python
    # 模拟登录注册
    user_from_db = 'jason'
    pwd_from_db = '123'

    user_from_inp = input('username: ')
    user_from_inp = input('password: ')

    if user_from_inp == user_from_db and pwd_from_inp == pwd_from_db:
    print('login successful')
    else:
    print('username or password error')
    ```

    ## 练习3:上下班

    ```python
    如果:今天是Monday,那么:上班
    如果:今天是Tuesday,那么:上班
    如果:今天是Wednesday,那么:上班
    如果:今天是Thursday,那么:上班
    如果:今天是Friday,那么:上班
    如果:今天是Saturday,那么:出去浪
    如果:今天是Sunday,那么:出去浪

    today=input('>>: ')
    if today == 'Monday':
    print('上班')
    elif today == 'Tuesday':
    print('上班')
    elif today == 'Wednesday':
    print('上班')
    elif today == 'Thursday':
    print('上班')
    elif today == 'Friday':
    print('上班')
    elif today == 'Saturday':
    print('出去浪')
    elif today == 'Sunday':
    print('出去浪')
    else:
    print('''必须输入其中一种:
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday Sunday
    ''')
    today=input('>>: ')
    if today == 'Monday' or today == 'Tuesday' or today == 'Wednesday' or today == 'Thursday' or today == 'Friday':
    print('上班')
    elif today == 'Saturday' or today == 'Sunday':
    print('出去浪')
    else:
    print('''必须输入其中一种:
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
    ''')
    ```

    ## if嵌套

    ```python
    # if的嵌套
    cls = 'human'
    gender = 'female'
    age = 18
    is_success = False

    if cls == 'human' and gender == 'female' and age > 16 and age < 22:
    print('开始表白')
    if is_success:
    print('那我们一起走吧...')
    else:
    print('我逗你玩呢')
    else:
    print('阿姨好')
    ```

    ### while循环

    实际生活中类似于重复的做一些事情,流水线上的工人反复劳动,直到下班时间到来

    程序中需不需要做重复的事情呢?以刚刚的验证用户名和密码的例子为例,用户无论输入对错,程序都会立马结束,真正不应该是这个样子。。。

    ```python
    while 条件
    code 1
    code 2
    code 3
    ...

    while True:
    print('>>>1')
    print('>>>2')
    print('>>>3')
    # 避免死循环
    ```

    基于while完善校验功能

    ```python
    # 实现ATM的输入密码重新输入的功能
    user_db = 'nick'
    pwd_db = '123'
    while True:
    inp_user = input('username: ')
    inp_pwd = input('password: ')
    if inp_user == user_db and pwd_db == inp_pwd:
    print('login successful')
    else:
    print('username or password error')
    ```

    小问题:用户输错了确实能够获取重新输,但用户输对了发现还需要输,这我就忍不了

    ## while+break

    break的意思是终止掉当前层的循环,执行其他代码。

    ```python
    # break语法演示
    while True:
    print('1')
    print('2')
    break
    print('3')
    # 上面仅仅是演示break用法,实际不可能像我们这样去写,循环结束应该取决于条件
    ```

    ```python
    user_db = 'jason'
    pwd_db = '123'
    while True:
    inp_user = input('username: ')
    inp_pwd = input('password: ')
    if inp_user == user_db and pwd_db == inp_pwd:
    print('login successful')
    break
    else:
    print('username or password error')
    print('退出了while循环')
    ```

    ## while+continue

    continue的意思是终止本次循环,直接进入下一次循环

    先给我完成一个需求说循环打印出1,2,3,4,5,6,7,8,9

    ```python
    n = 1
    while n < 4:
    print(n)
    n += 1 # 这一行不加又会是死循环
    ```

    然后需求变一下循环打印1,2,3,4,5,7,8,9,数字6不打印

    ```python
    n = 1
    while n < 10:
    if n == 6:
    n += 1 # 如果注释这一行,则会进入死循环
    continue
    print(n)
    n += 1
    ```

    ps:continue不能加在最后一步执行的代码,因为代码加上去毫无意义

    ```python
    while True:
    if 条件1:
    code1
    code2
    code3
    ...
    continue # 无意义
    elif 条件1:
    code1
    code2
    code3
    ...
    continue # 无意义
    else:
    code1
    code2
    code3
    ...
    continue # 无意义
    ```

    ### while循环嵌套

    ATM密码输入成功还需要进行一系列的命令操作,比如取款,比如转账。并且在执行功能结束后会退出命令操作的功能,即在功能出执行输入q会退出输出功能的while循环并且退出ATM程序。

    ```python
    # 退出内层循环的while循环嵌套
    user_db = 'jason'
    pwd_db = '123'
    while True:
    inp_user = input('username: ')
    inp_pwd = input('password: ')
    if inp_user == user_db and pwd_db == inp_pwd:
    print('login successful')
    while True:
    cmd = input('请输入你需要的命令:')
    if cmd == 'q':
    break
    print('%s功能执行'%cmd)
    else:
    print('username or password error')
    print('退出了while循环')
    ```

    ```python
    # 退出双层循环的while循环嵌套
    user_db = 'jason'
    pwd_db = '123'
    while True:
    inp_user = input('username: ')
    inp_pwd = input('password: ')
    if inp_user == user_db and pwd_db == inp_pwd:
    print('login successful')
    while True:
    cmd = input('请输入你需要的命令:')
    if cmd == 'q':
    break
    print('%s功能执行'%cmd)
    break
    else:
    print('username or password error')
    print('退出了while循环')
    ```

    上述方法有点low,有多个while循环就要写多个break,有没有一种方法能够帮我解决,只要我退出一层循环其余的各层全都跟着结束>>>:定义标志位

    ```python
    # 退出双层循环的while循环嵌套
    user_db = 'jason'
    pwd_db = '123'
    flag = True
    while flag:
    inp_user = input('username: ')
    inp_pwd = input('password: ')
    if inp_user == user_db and pwd_db == inp_pwd:
    print('login successful')
    while flag:
    cmd = input('请输入你需要的命令:')
    if cmd == 'q':
    flag = False
    break
    print('%s功能执行'%cmd)
    else:
    print('username or password error')
    print('退出了while循环')
    ```

    ### while+else(了解)

    while+else:else会在while没有被break时才会执行else中的代码。

    ```python
    # while+else
    n = 1
    while n < 3:
    if n == 2:break # 不会走else
    print(n)
    n += 1
    else:
    print('else会在while没有被break时才会执行else中的代码')
    ```



    限制用户登陆错误尝试次数

    ## for循环

    现在我想循环去除一个列表里面每一个元素,用while循环如何书写?

    ```python
    name_list = ['jason', 'nick', 'tank', 'sean']

    n = 0
    while n < len(name_list): # while n < 4:
    print(name_list[n])
    n += 1
    ```

    我现在想获取字典里面的多个值,你用while循环还能实现吗?

    这个时候就需要使用另外一种循环机制for循环:不依赖于索引取值

    ```python
    for name in name_list:
    print(name) # 对比与while更加简便

    # 再来看for循环字典会得到什么
    info = {'name': 'jason', 'age': 19}
    for item in info:
    print(item) # 拿到字典所有的key
    print(info[item])

    # for可以不依赖于索引取指,是一种通用的循环取指方式
    # for的循环次数是由被循环对象包含值的个数决定的,而while的循环次数是由条件决定的
    ```

    for循环也可以按照索引取值

    ```python
    for i in range(1, 10): # range顾头不顾尾
    print(i)

    # python2与python3中range的区别(cmd窗口演示即可)

    # for循环按照索引取值
    name_list = ['jason', 'nick', 'tank', 'sean']
    # for i in range(0,5): # 5是数的
    for i in range(len(name_list)):
    print(i, name_list[i])
    ```

    ### for+break

    跳出本层循环

    ```python
    # for+break
    name_list = ['nick', 'jason', 'tank', 'sean']
    for name in name_list:
    if name == 'jason':
    break
    print(name)
    ```

    ### for+continue

    跳出本次循环,进入下一次循环

    ```python
    # for+continue
    name_list = ['nick', 'jason', 'tank', 'sean']
    for name in name_list:
    if name == 'jason':
    continue
    print(name)
    ```

    ### for循环练习题

    ```python
    # 1.打印99乘法口诀表
    '''
    1*1=1
    2*1=2 2*2=4
    3*1=3 3*2=6 3*3=9
    ...
    9*1=9.................9*9=81
    '''
    for i in range(1,10): #i=3
    for j in range(1,i+1):
    print('%s*%s=%s ' %(i,j,i*j),end='') #i=2 j=2
    print()
    ```

    for循环
    不依赖于索引取值
    for循环语法结构
    for 变量名 in 容器类型:
    代码1,
    代码2,
    代码3,
    代码4,




    len() # 获取数据类型(容器类型)的个数,字符串是特例 获取的是字符串中字符的个数

    range在python2与python3中的区别(*****)

    python2中
    1.range其实就是一个列表
    2.xrange其实就是你python3中的range

    python3中range是一个老母猪,你需要值的时候我才给你
    尝试写了一个登录验证程序
    count=0
    user_load_massage={'user_name_db':'user_password_db','lk':'mm'}
    user_choice='N'
    is_loadsuccesd=1
    input_cluse='请输入您的'
    cd=0
    while is_loadsuccesd==1:
        if count ==4:
            if user_choice == 'N':
                user_choice = input('您已经输入错误四次密码,如果您选择输入Y继续尝试,输入任意键退出>>>:')
            if user_choice == 'Y':
                    count += 1
    
            else:
                print('登陆程序已关闭。')
                break
    
    
    
    
        else:
            user_name = input('%s用户名》》》:'%input_cluse)
            user_password = input('%s密码》》》:'%input_cluse)
            if user_name in user_load_massage:
    
                if  user_load_massage[user_name]==user_password:
                   print('登录成功')
                else:
                    input_cluse = '请确认并再次输入您的'
                    count += 1
                    if count<5:
                        print('密码错误,请重新输入,您的再次输入机会剩余%s次' % (4 - count))
                    else:
                        print('密码错误,请重新输入,您的再次输入机会剩余%s次' % (8 - count))
                    if count==8:
                        print('尝试次数超过限制,程序已经强制结束')
                        break
    
                    continue
    
            else:
                print('用户名输入错误或不存在')
    登陆验证




























  • 相关阅读:
    序列化
    python_模块与包
    python_常用内置模块
    python_生成器
    python_文件操作
    你好,mysql
    2017年12月20日 内置对象
    2017年12月17日 ASP.NET 12个表单元素&&简单控件/复合控件
    2017年12月16日 ASP.NET基本用法
    2017年12月14日 LinQ高级查&&Asp.net WebForm Asp.net MVC
  • 原文地址:https://www.cnblogs.com/Sunbreaker/p/11123245.html
Copyright © 2011-2022 走看看