• python小记3


    本节需要了解:

    1. 程序的描述方式
    2. 程序的组织结构
    3. 顺序结构
    4. 常用的条件语句
    5. and和or运算
    6. 循环结构for与while
    7. 程序跳转语句break和continue
    8. pass空语句
    9. 程序流程图
    10. 课堂小任务

    1.程序的描述方式

    1. 自然语言:使用人类语言,直接描述程序,比如:IPO描述(输入数据→处理数据→输出结果)
    2. 流程图:是最直观易懂的表达方式,主要适用于较短的算法
    3. 伪代码:介于自然语言和编程语言之间的一种算法描述语言

    在这里插入图片描述

    r=eval(input('请输入圆的半径:'))
    S=3.14*r*r
    C=2*3.14*r
    print('圆的面积为:',round(S,2))
    print('圆的周长为:',round(C,2))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    请输入圆的半径:3
    圆的面积为: 28.26
    圆的周长为: 18.84
    
    • 1
    • 2
    • 3

    2.程序的组织结构

    在这里插入图片描述

    1.顺序结构

    # 赋值运算符的执行顺序从右到左
    name='张三' # 将'张三'赋值给name
    age=20 # 将20赋值给age
    a=b=c=d=100 # 将a,b,c,d的值同时赋为100,链式赋值
    name1,age1='李四',22 # 元组分解赋值
    print(name1,age1)
    [name2,age2]=['王五',30] # 列表分解赋值
    print(name2,age2)
    a,b,c,d='room' # 字符串分解赋值
    print(a,b,c,d)
    a,*b='room'# 扩展的解包赋值
    print(a,b)
    print('----------输入输出语句,也是典型的顺序结构--------------')
    name=input('请输入您的姓名:')
    age=eval(input('请输入您的年龄:'))
    lucky_number=eval(input('请输入您的幸运数字:'))
    print('姓名:',name)
    print('年龄:',age)
    print('幸运数字:',lucky_number)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    李四 22
    王五 30
    r o o m
    r ['o', 'o', 'm']
    ----------输入输出语句,也是典型的顺序结构--------------
    请输入您的姓名:爱听歌的阿漓
    请输入您的年龄:20
    请输入您的幸运数字:2
    姓名: 爱听歌的阿漓
    年龄: 20
    幸运数字: 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.选择结构

    if语句

    在这里插入图片描述

    number=eval(input('请输入您的六位中奖号码:'))
    # 使用if语句
    if number==123456:
        print('恭喜您,中奖了!')
    if number!=123456:
        print('您与大奖擦肩而过!')
    # 以上if判断的表达式,使用比较运算符,称为比较表达式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    请输入您的六位中奖号码:123456
    恭喜您,中奖了!
    
    • 1
    • 2
    # 0的布尔值是False,非0的布尔值是True
    n=98 # 赋值
    if n%2: # 98%2 的余数为0
        print(n,'为奇数')
    if not n%2:
        print(n,'为偶数')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    98 为偶数
    
    • 1
    # 判断一个字符串是否为空字符串
    # 空字符串的布尔值是False,非空字符串的布尔值是True
    x=input('请输入一个字符串:')
    if x:
        print('x是非空字符串')
    if not x:
        print('x是空字符串')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    请输入一个字符串:
    x是空字符串
    
    • 1
    • 2

    表达式也可以是一个单纯的变量

    flag=eval(input('请输入一个布尔类型的值:True或False'))
    if flag: # flag是一个布尔类型的变量,值为True或False
        print('flag的值为True')
    if not flag:
        print('flag的值是False')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    请输入一个布尔类型的值:True或False3>2
    flag的值为True
    
    • 1
    • 2
    # 使用if语句,如果语句只有一句代码,可以将语句直接写在冒号的后面
    a=10
    b=5
    if a>b:max=a
    print('a和b的最大值为:',max)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    a和b的最大值为: 10
    
    • 1

    if语句的常见问题

    1. 忘记加:
    2. 缩进错误

    if…else…语句

    number=eval(input('请输入您的六位中奖号码:'))
    if number==123456:
        print('恭喜您中奖了!')
    else:
        print('很遗憾,大奖与您擦肩而过!')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    请输入您的六位中奖号码:123456
    恭喜您中奖了!
    
    • 1
    • 2
    # number==123456为True时,将'恭喜您中奖了!'的值赋值给result,否则将'很遗憾,大奖与您擦肩而过!'赋值给result
    
    number=eval(input('请输入您的六位中奖号码:'))
    result='恭喜您中奖了!'if number==123456 else '很遗憾,大奖与您擦肩而过!'
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    请输入您的六位中奖号码:123456
    恭喜您中奖了!
    
    • 1
    • 2

    多重if

    score=eval(input('请输入你的成绩:'))
    # 判断
    if score<0 or score>=100:
        print('成绩有误')
    elif 0<=score<60:
        print('E')
    elif 60<=score<70:
        print('D')
    elif 70<=score<80:
        print('C')
    elif 80<=score<90:
        print('B')
    else:
        print('A')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    请输入你的成绩:55
    E
    
    • 1
    • 2

    嵌套if

    answer=input('请问,您喝酒了么?y/n')
    if answer=='y': # 代表喝酒了
        proof=eval(input('请输入酒精含量:'))
        if proof<20:
            print('构不成酒驾,祝您一路平安')
        elif proof<80:
            print('已构成酒驾标准,请不要开车')
        else:
            print('已达到醉驾标准,请千万不要开车')
    else:# 代表没喝酒
        print('你走吧,没你啥事儿')
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    请问,您喝酒了么?y/ny
    请输入酒精含量:12
    构不成酒驾,祝您一路平安
    
    • 1
    • 2
    • 3

    and与or

    and连接条件:需要同时满足多个条件

    or连接条件:只需满足其中一个条件即可

    user_name=input('请输入您的用户名:')
    pwd=input('请输入您的密码:')
    if user_name=='爱听歌的阿漓' and pwd=='123456':
        print('登陆成功!')
    else:
        if user_name!='爱听歌的阿漓':
            print('登录失败,用户名不正确!')
        else:
             print('登录失败,密码不正确!')
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    请输入您的用户名:爱听歌的阿漓
    请输入您的密码:123456
    登陆成功!
    
    • 1
    • 2
    • 3
    score=eval(input('请输入您的成绩:'))
    if score<0 or score>100:
        print('成绩无效')
    else:
        print('您的成绩为:',score)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    请输入您的成绩:34
    您的成绩为: 34
    
    • 1
    • 2

    3.循环结构

    遍历循环for

    # 遍历字符串
    for i in 'hello':
        print(i)
    
    • 1
    • 2
    • 3
    h
    e
    l
    l
    o
    
    • 1
    • 2
    • 3
    • 4
    • 5

    range()函数:

    产生一个[n,m)的有序数列

    for i in range(1,11):
        print(i,end=' ')
    
    • 1
    • 2
    1 2 3 4 5 6 7 8 9 10 
    
    • 1
    for i in range(1,11):
        if i%2:
            print(i,'是奇数')
        else:
            print(i,'是偶数')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1 是奇数
    2 是偶数
    3 是奇数
    4 是偶数
    5 是奇数
    6 是偶数
    7 是奇数
    8 是偶数
    9 是奇数
    10 是偶数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    # 计算1-10之间的累加和
    sum=0 # 用于存储累加和
    for i in range(1,11):
        sum+=i
    print('1-10的累加和:',sum)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1-10的累加和: 55
    
    • 1
    # 计算100-999之间的水仙花数
    
    for i in range(100,1000):
        sd=i%10
        tens=i//10%10
        hundred=i//100
        if sd**3+tens**3+hundred**3==i:
            print(i)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    153
    370
    371
    407
    
    • 1
    • 2
    • 3
    • 4

    遍历循环的扩展形式

    在这里插入图片描述

    基本使用

    # 计算1-10之间的累加和
    sum=0 # 用于存储累加和
    for i in range(1,11):
        sum+=i
    else:
        print('1-10的累加和:',sum)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1-10的累加和: 55
    
    • 1

    在这里插入图片描述

    无限循环while

    1. 初始化变量
    2. 条件判断
    3. 循环体
    4. 改变变量
    
    answer=input('今天要上课么?y/n') # 1. 初始化变量
    while answer=='y': # 2. 条件判断
        print('好好学习,天天向上!') # 3. 循环体
        answer=input('今天要上课么?y/n') # 4. 改变变量
    
    • 1
    • 2
    • 3
    • 4
    • 5
    今天要上课么?y/ny
    好好学习,天天向上!
    今天要上课么?y/ny
    好好学习,天天向上!
    今天要上课么?y/nn
    
    • 1
    • 2
    • 3
    • 4
    • 5
    # 求1-100之间的累加和
    sum=0# 存储累加和
    i=1 # 1. 初始化变量
    while i<101: # 2. 条件判断
        sum+=i # 3. 循环体
        i+=1 # 4. 改变变量
    print('1-100之间的累加和:',sum)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    1-100之间的累加和: 5050
    
    • 1

    无限循环whlie的扩展形式

    在这里插入图片描述

    # 求1-100之间的累加和
    sum=0# 存储累加和
    i=1 # 1. 初始化变量
    while i<101: # 2. 条件判断
        sum+=i # 3. 循环体
        i+=1 # 4. 改变变量
    else:
        print('1-100之间的累加和:',sum)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    1-100之间的累加和: 5050
    
    • 1

    使用无限循环while模拟实现登录

    i=0 # 循环执行的次数
    while i<3: # 0 1 2 当i=3时  3<3 False,循环结束
        user_name=input('请输入您的用户名:')
        pwd=input('请输入您的六位数密码:')
        # 判断
        if user_name=='爱听歌的阿漓' and pwd=='123456':
            print('正在登录,请稍后!')
            i=4
        else:
            if i<2:
                print('用户名和密码不正确,您还有',2-i,'次机会')
            i+=1
    if i==3:
            print('不好意思,三次均输入错误')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    请输入您的用户名:爱听歌的阿漓
    请输入您的六位数密码:123456
    正在登录,请稍后!
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    在这里插入图片描述

    三行四列长方形

    for i in range(1,4):
        for j in range(1,5):
            print('*',end='')
        print() 
    
    • 1
    • 2
    • 3
    • 4
    ****
    ****
    ****
    
    • 1
    • 2
    • 3

    直角三角形

    for i in range(1,6):
        for j in range(1,i+1):# 1-->1  2-->2
            print('*',end='')
        print()
    
    • 1
    • 2
    • 3
    • 4
    *
    **
    ***
    ****
    *****
    
    • 1
    • 2
    • 3
    • 4
    • 5

    倒直角三角形

    for i in range(1,6):
        for j in range(1,7-i):
            print('*',end='')
        print()
    
    • 1
    • 2
    • 3
    • 4
    *****
    ****
    ***
    **
    *
    
    • 1
    • 2
    • 3
    • 4
    • 5

    等腰直角三角形

    for i in range(1,6):
        for j in range(1,6-i):
            print(' ',end='')
        for k in range(1,i*2):# 1-->1  2-->3 3-->5 
            print('*',end='')
        print()
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
        *
       ***
      *****
     *******
    *********
    
    • 1
    • 2
    • 3
    • 4
    • 5
    row=eval(input('请输入菱形的行数:'))
    # 上半部分
    top_row=(row+1)//2
    while row%2==0:
        print('重新输入菱形的行数')
        row=eval(input('请输入菱形的行数:'))
        
    for i in range(1,top_row+1):
        for j in range(1,top_row+1-i):
            print(' ',end='')
        for k in range(1,i*2):# 1-->1  2-->3 3-->5 
            if k==1 or k==i*2-1:
                print('*',end='')
            else:
                print(' ',end='')
        print()
    
    # 下半部分
    bottom_row=row//2
    for i in range(1,bottom_row+1):
        for j in range(1,i+1):
            print(' ',end='')
    #         print()
        for k in range(1,2*bottom_row-2*i+2):
            if k==1 or k==2*bottom_row-2*i+2-1:
                print('*',end='')
            else:
                print(' ',end='')
    
                print()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    请输入菱形的行数:7
       *
      * *
     *   *
    *     *
     *   *
      * *
       *
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    跳转函数break

    在这里插入图片描述

    sum=0
    for i in range (1,100):
        sum+=i
        if sum>20:
            print(i)
            break
    print(sum)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    6
    21
    
    • 1
    • 2
    i=0
    while i<3:
        user_name=input('请输入用户名:')
        pwd=input('请输入密码:')
        if user_name=='lyl' and pwd=='888888':
            print('系统正在登录,请稍后...')
            break # 直接退出循环
        else:
            if i<2:
                print('用户名或密码不正确,你还有',2-i,'次机会')
        i+=1
    else:
        print('三次均输入错误!')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    请输入用户名:lyl
    请输入密码:888888
    系统正在登录,请稍后...
    
    • 1
    • 2
    • 3
    user_name=input('请输入用户名:')
        pwd=input('请输入密码:')
        if user_name=='lyl' and pwd=='888888':
            print('系统正在登录,请稍后...')
            break # 直接退出循环
        else:
            if i<2:
                print('用户名或密码不正确,你还有',2-i,'次机会')
        i+=1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    for i in range(0,3):
        user_name=input('请输入用户名:')
        pwd=input('请输入密码:')
        if user_name=='lyl' and pwd=='888888':
            print('系统正在登录,请稍后...')
            break # 直接退出循环
        else:
            if i<2:
                print('用户名或密码不正确,你还有',2-i,'次机会')
    else:
        print('三次均输入错误')
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    请输入用户名:lyl
    请输入密码:3
    用户名或密码不正确,你还有 2 次机会
    请输入用户名:3
    请输入密码:3
    用户名或密码不正确,你还有 1 次机会
    请输入用户名:3
    请输入密码:3
    三次均输入错误
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    arr=[]
    for i in "hello":
        arr.append(i)
    print(arr)
    
    • 1
    • 2
    • 3
    • 4
    ['h', 'e', 'l', 'l', 'o']
    
    • 1

    程序跳转语句continue

    # 计算1-100之间的偶数和
    s=0
    i=1
    while i < 101:
        if i%2==1:
            i+=1        
            continue
        s+=i
        i+=1
    print(s)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    2550
    
    • 1

    实战一

    # 判断所给出的年份是否为闰年
    while True:
        year = eval(input('请输入一个年份:>'))
        if (year%4==0 and year %100!=0) or (year%400==0):
            print(year,'年是闰年')
        else:
            print(year,'年是平年')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    请输入一个年份:>200
    200 年是平年
    请输入一个年份:>2000
    2000 年是闰年
    
    • 1
    • 2
    • 3
    • 4

    实战二

    在这里插入图片描述

    while True:
        print('---------欢迎使用10086查询功能---------\n'+
          '1.查询当前余额\n'+
         '2.显示当前的剩余流量\n'+
         '3.显示当前剩余通话时长\n'+
         '0.退出系统')
        choose=eval(input('请输入您要执行的操作:'))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    ---------欢迎使用10086查询功能---------
    1.查询当前余额
    2.显示当前的剩余流量
    3.显示当前剩余通话时长
    0.退出系统
    
    • 1
    • 2
    • 3
    • 4
    • 5
    answer ='y'
    while answer == 'y':
        print('---------欢迎使用10086查询功能---------\n'+
          '1.查询当前余额\n'+
         '2.显示当前的剩余流量\n'+
         '3.显示当前剩余通话时长\n'+
         '0.退出系统')
        choice=input('请输入您要执行的操作:')
        if choice=='1':
            print('当前余额为:234.5元')
        elif choice=='2':
            print('当前的剩余流量为4GB')
        elif choice=='3':
            print('当前剩余通话时长300分钟')
        elif choice=='0':
            print('退出')
            break
        else:
            print('输入有误!请重新输入~')
        answer=input('还要继续操作吗?y/n')
    else:
        print('程序退出,谢谢您的使用')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    ---------欢迎使用10086查询功能---------
    1.查询当前余额
    2.显示当前的剩余流量
    3.显示当前剩余通话时长
    0.退出系统
    请输入您要执行的操作:1
    当前余额为:234.5元
    还要继续操作吗?y/nn
    程序退出,谢谢您的使用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    实战三

    # 输出9*9乘法口诀表
    for i in range(1,10):
        for j in range(1,i+1):
            print(str(j)+'*'+str(i)+'='+str(i*j),end='  ')
        print()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1*1=1  
    1*2=2  2*2=4  
    1*3=3  2*3=6  3*3=9  
    1*4=4  2*4=8  3*4=12  4*4=16  
    1*5=5  2*5=10  3*5=15  4*5=20  5*5=25  
    1*6=6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
    1*7=7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
    1*8=8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
    1*9=9  2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    for i in range(1,10):
        for j in range(1,1+i):
            print('*',end='')
        print()
    
    • 1
    • 2
    • 3
    • 4
    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    实战四

    import random
    rand=random.randint(1,100)
    count=1 # 记录猜的次数
    while count<=3:
        number=eval(input('在我心中有个数(1-100)请你猜一猜:'))
        print('你还有'+str(3-count)+'次机会')    
        if number==rand:
            print('猜对了')
            break
        elif number>rand:
            print('猜大了')
            count+=1
            continue
        elif number<rand:
            print('猜小了')
            count+=1
            continue
        if count==3:
            print('您的次数已经用完')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    PL/0指令集
    作为前端你还不懂MutationObserver?那Out了
    沉浸式体验与 AI 数智助理一起工作的一天
    RedisSearch:一个基于Redis的搜索引擎模块
    模拟版图设计工程师要学些什么?从入门到入行,你想知道的都在这里了
    CAP定理一文带你速解(通俗易懂,图文并茂)
    【C】atoi和offsetof的介绍和模拟实现
    接口测试-一个脚本里,用测试套运行多个脚本
    WPF中的数据模板
    HTML
  • 原文地址:https://blog.csdn.net/m0_74007393/article/details/128197078