Python咒语大全(学习笔记与使用指南)

目录

字符串格式限制,%xd(整数),%x.yf(小数点浮点数)

f“内容{变量}快速格式化

案例1:股价预测

INPUT语句

案例2:INPUT登陆界面语句

布尔类型函数基础运用

案例3:比较运算符的运用

IF语句基本格式

案例4:IF语句+INPUT语句练习

案例5:IF ELSE语句

案例6:IF ELIF ELSE语句

案例7:猜数字小游戏

案例8:IF ELSE嵌套规则

案例9:IF ELSE嵌套(符合工龄的员工可享受旅游)

案例10:IF ELSE嵌套(随机猜数字小游戏)

WHILE 循环语句(附题1-100总和)

案例11:WHILE 循环猜数字并统计参与次数

案例12:WHILE 嵌套语句循环应用(给猫送礼物案例)

end=' '与\t的应用

案例13:九九乘法表While循环

FOR循环语句(遍历循环/依次循环)

案例14:统计以下文字有几个a(FOR循环)

Range语句

案例15:While语句与For语句的区别(玫瑰花案例)

案例16:判断有多少个偶数和奇数

案例17:FOR循环嵌套(减肥案例)

案例18:FOR与WHILE两个一起循环嵌套

案例19:九九乘法表FOR循环

CONTINUE和BREAK中断

案例20:循环综合(发放绩效5分以上的人发1w奖金)

lenth函数

定义函数

函数的传入参数

案例21:函数练习(升级版自动查核酸)

函数返回值

函数返回值None类型

函数的说明文档

函数的嵌套调用

函数的全局变量和局部变量

案例22:函数综合案例(存钱/取钱/余额)

数据容器以及列表定义

列表的下标索引

列表的常用操作(append/extend/insert/del/remove/pop/count/index/len)

案例23:年龄列表

While和FOR遍历函数

元组的基本操作

案例24:元组应用('周杰伦',11,['football','music'])

字符串的定义和操作

数据容器(序列)的切片

案例25:序列的切片练习

集合的定义与操作

案例26:集合案例

案例27:字典案例

字典的常用操作

案例28:字典案例实践(升职加薪)

数据容器的通用操作(列表/字典/集合/字符串/元组)

演示字符串大小比较

函数的多返回值

函数的多种参数使用形式

函数作为参数传统

Lambda匿名函数

文件的读取方法

案例29:文件读取并统计

文件的写出操作

文件的追加写入文件

案例30:文件操作的综合案例

异常的捕获

异常的传递性

模块的概念与导入

自定义模块并导入

自定义Python包

案例31:功能模块包的综合案例


 

  1. 字符串格式限制,%xd(整数),%x.yf(小数点浮点数)

    num1=11
    num2=11.345
    print("数字11宽度限制5,结果是:%5d " % num1)
    print("数字11宽度限制1,结果是:%1d " % num1)
    print("数字11.345宽度限制7,小数精度2,结果是:%7.2f"  % num2)
    print("数字11.345宽度不限制,小数精度2,结果是:%.2f" % num2)
  2. f“内容{变量}快速格式化

    name = "桑迪"
    set_up_year = 2018
    stock_price =19.88
    print(f"我是{name},成立于:{set_up_year}年,我今天的股票价格是:{stock_price}")
    print("2*10 的结果是:%d" %(2 * 10))
    print(f"2*8 的结果是:{2*8}")
    print("字符串在Python中的类型名是:%s" % type("字符串"))
  3. 案例1:股价预测

    #自己做的(略有瑕疵)
    name = "上海搜猫"
    stock_price = 20.36
    stock_code = 398238432
    stock_price_daily_growth_factor = 1.27
    growth_days = 16
    sum = 20.32
    print(f"公司名{name},当前股票价格是:{stock_price},股票代码:{stock_code},每日增长系数为{stock_price_daily_growth_factor},经过{growth_days}天后")
    print(f"股票高达:%2.2f" % sum)
    
    #官方答案(正确运算)
    name = "上海搜猫"
    stock_price = 19.99
    stock_code = "003032"
    stock_price_daily_growth_factor = 1.2
    growth_days = 7
    
    finally_stock_price =stock_price *stock_price_daily_growth_factor ** growth_days
    
    print(f"公司名{name},当前股票价格是:{stock_price},股票代码:{stock_code},每日增长系数为{stock_price_daily_growth_factor},经过{growth_days}天后")
    print("每日增长系数:%.1f , 经过%d天的增长后,股票达到了: %.2f" %(stock_price_daily_growth_factor,growth_days,finally_stock_price))
  4. INPUT语句

    print("请告诉我你是谁?")
    name = input()
    print("我知道了,你是:%s" % name)
    同样,也可以直接用input语句写码
    name = input("请告诉我你是谁?")
    print("我知道了,你是:%s" % name)
    如果是输入数据类型
    num = input("请告诉我你的银行卡密码:")
    print("你的银行卡密码的类型是: ",type(num))
    数据类型转换
    num = input("请告诉我你的银行卡密码:")
    num= int(NUM)
    print("你的银行卡密码的类型是: ",type(num))
  5. 案例2:INPUT登陆界面语句

    user_name = "桑迪"
    user_type = "SVIP"
    print(f"您好,{user_name},您是我们是尊敬的{user_type}用户,我爱你")
  6. 布尔类型函数基础运用

    bool_1 = True
    bool_2 = False
    print(f"bool_1的变量内容是:{bool_1},类型是:{type(bool_1)}")
    print(f"bool_1的变量内容是:{bool_2},类型是:{type(bool_2)}")
  7. 案例3:比较运算符的运用

    #==相等
    num1 = 10
    num2 = 10
    print(f"10 == 10的结果是:{num1==num2}")
    #!=不相等
    num3 = 15
    num4 = 20
    print(f"10 != 15的结果是:{num3 != num4}")
    #字符串==相等
    name1 = "Sandy"
    name2 = "Gulangyu"
    print(f"Sandy == Gulangyu 的结果是:{name1 == name2}")
    #><比较
    num5 = 15
    num6 = 5
    print(f"10 > 5的结果是:{num5 > num6}")
    print(f"10 < 5的结果是:{num5 < num6}")
    #>=与<=比较
    num7 = 25
    num8 = 25
    print(f"25 <= 25的结果是:{num7 <= num8}")
    print(f"25 >= 25的结果是:{num7 >= num8}")
  8. IF语句基本格式

    age = 20
    print(f"我今天已经{age}岁了")
    if age >= 18:
        print("我是成年人")
        print("即将仗剑走天涯")
    print("岁月如梭,往事只能回忆")
  9. 案例4:IF语句+INPUT语句练习

    #自己写的
    print("欢迎来到猫咪魔幻世界!请告诉我你的年龄")
    age = input()
    print("我知道了,你的年龄是:%s" % age)
    age = int(age)
    if age >= 18:
        print("您已成年")
        print("游玩需要购买门票60元")
    print("祝您游玩愉快!")
    
    #官方写的,加上了if else语句,else和if是同级别,没有缩进
    age = int(input("请输入你的年龄: "))
    if age >= 18 :
        print("您已成年,游玩需要买票")
    else:
        print("您未成年,可以免费游玩")
    print("祝您游玩愉快!")
  10. 案例5:IF ELSE语句

    height = int(input("请输入您的身高(cm)"))
    if height >= 120 :
        print("您是个大个子,需要支付门票120元")
    else :
        print("小朋友,尽情玩耍吧!")
    print("祝您游玩愉快!")
  11. 案例6:IF ELIF ELSE语句

    #elif语句可以写多条,进行多条选择(每一条一个个都会展示)
    height = int(input("请输入您的身高(cm)"))
    vip_level =int(input("请输入您的VIP级别"))
    day = int(input("请告诉我今天是几号"))
    if height < 120 :
        print("您是个小孩子,可以免门票")
    elif vip_level > 3 :
        print("您的VIP会员级别大于3,可以免门票")
    elif day == 1:
        print("今天是1号免费日,可以免费游玩")
    else :
        print("快交钱!快交钱")
    print("祝您游玩愉快!")
    #以上代码的简写版本(代码只要满足前一个,后面就不会继续执行了)
    if int(input("请输入您的身高(cm)")) < 120 :
        print("您是个小孩子,可以免门票")
    elif int(input("请输入您的VIP级别")) > 3 :
        print("您的VIP会员级别大于3,可以免门票")
    elif int(input("请告诉我今天是几号")) == 1:
        print("今天是1号免费日,可以免费游玩")
    else :
        print("快交钱!快交钱")
    print("祝您游玩愉快!")
  12. 案例7:猜数字小游戏

    num = 8
    if int(input("请猜一个数字")) == num:
        print("恭喜第一次数据就猜对了呢")
    elif int(input("猜错了,请再猜一次:")) == num :
        print("猜对了")
    elif int(input("猜错了,请再猜最后一次:")) == num :
        print("最后一次,你终于对了!")
    else:
        print("你是大笨蛋,快交钱!")
  13. 案例8:IF ELSE嵌套规则

    #嵌套(当外层if满足条件时,才会执行内层if的判断;若if不满足条件,直接执行外层esle)
    print("欢迎来到冒险家乐园!")
    if int(input("请输入您的身高(cm)")) > 120 :
        print("您不是小孩子,不可以免门票哦")
        print("您的VIP会员级别大于3,可以免门票")
        if int(input("请输入您的VIP级别")) > 3 :
            print("您的VIP会员级别大于3,可以免门票")
        else:
            print("快交钱!快交钱")
    else:
        print("欢迎小朋友免费游玩")
    print("祝您游玩愉快!")
  14. 案例9:IF ELSE嵌套(符合工龄的员工可享受旅游)

    #自己写的
    age = int(input("请输入年龄"))
    year = int(input("请输入工龄"))
    level= int(input("请输入级别"))
    
    if age >= 20:
        print("成年人一枚")
        if age <= 60 :
            print("年龄符合标准")
            if year >=3 :
                print("年龄符合标准,工龄也符合满足条件")
            else:
                print("工龄不符合旅游条件")
        elif level > 5:
            print("资历级别达到P5级别")
        else:
            print("年龄过大或级别不达标,不可以参加团建旅行")
    else:
        print("Sorry啦,你再熬一熬吧!")
    
    #官方答案
    age = 20
    year = 3
    level =1
    if age >= 18 :
        print("你已经是成年人了!")
        if age < 60 :
            print("你的年龄也达标了!")
            if year >3:
                print("恭喜你,年龄和入职时间都达标了,可以参加旅游")
            elif level >=5:
                print("恭喜你,年龄、级别达标,可以参加旅游")
            else:
                print("不好意思,年龄达标,入职时间和级别不达标")
        else:
            print("不好意思,年龄太大了")
    else:
        print("不好意思,你还没有成年")
  15. 案例10:IF ELSE嵌套(随机猜数字小游戏)

    #自己写的,问题多多
    import random
    num = random.randint(1,10)
    num1 =int(input("请在1-10中随机输入一个数字:"))
    if num1 == num :
        print("恭喜你,一次性答对")
    elif num1 > num:
        print("您输入的数字大于原来的数字,还有2次机会")
        if num1 ==num :
            print("恭喜你,把握住了第2次的机会")
        elif num1  > num:
            print("您输入的数字大于原来的数字,还有最后1次机会")
        elif num1  < num:
            print("您输入的数字小于原来的数字,还有最后1次机会")
            if num1  == num:
                print("恭喜你,把握住了最后一次的机会")
            elif num1  > num:
                print("您输入的数字大于原来的数字,game over")
            elif num1 < num:
                print("您输入的数字小于原来的数字,还game over")
    elif num1  < num:
        print("您输入的数字小于原来的数字,还有2次机会")
        if num1  ==num :
            print("恭喜你,把握住了第2次的机会")
        elif num1  > num:
            print("您输入的数字大于原来的数字,还有最后1次机会")
        elif num1  < num:
            print("您输入的数字小于原来的数字,还有最后1次机会")
            if num1  == num:
                print("恭喜你,把握住了最后一次的机会")
            elif num1  > num:
                print("您输入的数字大于原来的数字,game over")
            elif num1  < num:
                print("您输入的数字小于原来的数字,还game over")
    print("欢迎再次来玩!")
    
    #官方写的
    import random
    num = random.randint(1,10)
    guess_num = int(input("请在1-10中随机输入一个数字:"))
    if guess_num == num :
        print("恭喜第一次就猜中了")
    else :
        if guess_num >num :
            print("你猜的数字大了")
        else:
            print("你猜的数字小了")
    
        guess_num = int(input("再次输入你需要的数字:"))
        if guess_num == num :
            print("恭喜第二次猜中了")
        else:
            if guess_num > num:
                print("你猜的数字大了")
            else:
                print("你猜的数字小了")
    
            guess_num = int(input("第三次输入你需要的数字:"))
            if guess_num == num:
                print("恭喜第三次猜中了")
            else:
                print("三次机会用完了,请购买复活币")
  16. WHILE 循环语句(附题1-100总和)

    i=0
    while i<100 :
        print("nakdnjasd")
        i+=1
    #求1-100的和
    sum = 0
    i=1
    while i<=100:
        print("nakdnjasd")
        sum += i
        i += 1
    print(f"1-100的累加是:{sum}")
  17. 案例11:WHILE 循环猜数字并统计参与次数

    import random
    num = random.randint(1,100)
    count = 0
    #设置一个True的循环标志
    flag =True
    while flag:
        guess_number =int(input("请随机输入1-100一个数字:"))
        count += 1
        if guess_number == num:
            print("猜中了")
            #设置为False是终止循环的条件
            flag = False
        else :
            if guess_number > num:
                print("猜大了,重来")
            else:
                print("猜小了,重来")
    print(f"你总共猜测了{count}次")
  18. 案例12:WHILE 嵌套语句循环应用(给猫送礼物案例)

    i = 1
    while i <=5 :
        print(f"今天是第{i}天,准备养猫")
        #内层循环的变量
        j = 1
        while j <= 10:
            print(f"送给猫咪第{j}包猫粮")
            j += 1
        print("小猫咪,我热爱你")
        i += 1
    print(f"坚持到第{i-1}天时,小猫咪主动和我回家")
  19. end=' '与\t的应用

    #end=' '两行内容可以并列一行文字
    print("你长得真好看 ",end='')
    print("我对你一见钟情",end='')
    
    #\t可以让多行字符串对齐
    print("你长得\t真好看 ")
    print("我对\t你一见钟情")
    print("You are\tmy sunshine ")
    print("I am a\tbig big girl")
    print("You are\tmy sunshine ")
    print("I am \tbig girl")
  20. 案例13:九九乘法表While循环

    #定义外层循环
    i = 1
    while i<=9 :
    
        #定义内循环
        j = 1
        while j <= i :
            #内层循环的print语句,不要换行,通过\t制表符进行对齐
            print(f"{j}*{i} = {j*i}\t",end='')
            j += 1
    
        i += 1
        print()#print啥呀不输出,就是输出一个换行
  21. FOR循环语句(遍历循环/依次循环)

    #for循环无法构建无限循环
    name = "飘来的云真漂亮"
    #将name的内容依次取出赋予x临时变量
    for x in name :
        print(x)
  22. 案例14:统计以下文字有几个a(FOR循环)

    #数一数以下文字有几个a
    name = "I have an apple and a banana"
    #定义一个变量,统计有多少个a
    count = 0
    for x in name :
        if x == "a":
            count += 1
    
    print(f"总共有几个a:{count}")
  23. Range语句

    #range语法1:range(num)
    for x in range(10):
        # 从0开始到10结束(不包含10本身)
        print(x)
    #range语法2:range(num1,num2)
    for y in range(5,10):
        #从5开始到10结束(不包含10本身,数字间隔为默认1)
        print(y)
    #range语法3:range(num1,num2,step)
    for m in range(5,10,2):
        # 从5开始到10结束(不包含10本身,数字间隔为2)
        print(m)
  24. 案例15:While语句与For语句的区别(玫瑰花案例)

    #WHILE语句循环
    i = 1
    while i<=10:
        print("送玫瑰花")
        i += 1
    #FOR语句循环
    for x in range(10):
        print("送玫瑰花")
  25. 案例16:判断有多少个偶数和奇数

    n = 0
    for x in range(1,100):
        print(x)
        if x % 2 == 0:
            print(f"偶数有:{x}")
            n += 1
            print(f"偶数有count{n}个")
            print(f"奇数有count{100-n}个")
  26. 案例17:FOR循环嵌套(减肥案例)

    i = 1
    for i in range(1,101):
        print(f"今天是减肥的第{i}天")
        m = 1
        for m in range(1,11):
            print(f"跑了第{m}圈步")
        print(f"跑了第{m}圈,瘦了1kg")
    print(f"跑了第{i}天,瘦了10kg")
    #官方案例
    x = 1
    for x in range(1,101):
        print(f"今天是向观众唱歌的第{x}天")
        for y in range(1,11):
            print(f"给观众唱歌的第{y}首")
        print(f"我在第{x}天的时候成功了!")
    print(f"第{x}天,我得奖了!")
  27. 案例18:FOR与WHILE两个一起循环嵌套

    #WHile嵌套可以与FOR嵌套相互使用
    #For嵌套
    x = 1
    for x in range(1,101):
        print(f"今天是向观众唱歌的第{x}天")
        for y in range(1,11):
            print(f"给观众唱歌的第{y}首")
        print(f"我在第{x}天的时候成功了!")
    print(f"第{x}天,我得奖了!")
    #While嵌套
    m = 1
    for m in range(1,101):
        print(f"今天是向观众唱歌的第{m}天")
        n = 1
        while n <= 10:
            print(f"给观众唱歌的第{n}首")
            n += 1
        print(f"我在第{m}天的时候成功了!")
    print(f"第{m}天,我得奖了!")
  28. 案例19:九九乘法表FOR循环

    #外层循环控制行数i
    for i in range(1, 10) :
        # 内循环控制行数j
        for j in range(1, i + 1):
            # 内循环中输出每一行的内容
            print(f"{j} * {i} = {j * i}\t", end='')
         # 外层循环可以通过print输出一个回车符
        print()
  29. CONTINUE和BREAK中断

    #continue和break只能在所在循环上起作用,无法对上层循环起作用
    #continue循环本次结束(中断本次(临时))
    for i in range(1,6):
         print("语句1")
         continue
         print("语句2")
     print("语句3")
     
    # #continue 案例
    for i in range(1,6):
        print("语句1")
        for j in range(1, 6):
            print("语句2")
            continue
            print("语句3")
        print("语句4")
    
    #break循环本次结束(中断所在循环(永久))
    for i in range(1,3):
        print("语句1")
        for j in range(1, 3):
            print("语句2")
            break
            print("语句3")
    print("语句4")
  30. 案例20:循环综合(发放绩效5分以上的人发1w奖金)

    #定义账户余额
    money = 10000
    #for循环给员工发工资
    for i in range(1, 21) :
        # num是绩效
        import random
        score = random.randint(0, 10)
        if score < 5 :
            print(f"员工{i}绩效分{score},不满足条件,不发奖金,下一位")
           #continure跳过发放
            continue
    
        #判断余额足不足
        if money >= 1000:
                money -= 1000
                print(f"员工{i}满足条件,发放奖金1000元,公司账户余额还有{money}元")
        else:
            print(f"余额不足,当前余额:{money}元,下个月再来")
            #停止发工资了
            break
  31. lenth函数

    #len( )统计长度
    name = "youaremysunshine"
    lenth = len(name)
    print(lenth)
    #统计长度,不使用函数
    str1 = "itheima"
    str2 = "itcastmeilimao"
    str3 = "python"
    #定义一个技数变量
    count = 0
    for i in str1 :
        count += 1
    print(f"字符串{str1}的长度是:{count}")
    
    count = 0
    for i in str2 :
        count += 1
    print(f"字符串{str2}的长度是:{count}")
    
    count = 0
    for i in str3 :
        count += 1
    print(f"字符串{str3}的长度是:{count}")
    
    #可以使用一个函数进行定义,来优化整个过程
    str1 = "itheima"
    str2 = "itcastmeilimao"
    str3 = "python"
    def my_len(data):
        count = 0
        for i in data :
            count += 1
            print(f"字符串{data}的长度是:{count}")
    
    my_len(str1)
    my_len(str2)
    my_len(str3)
  32. 定义函数

    '''
    #函数的定义
    def 函数名(传入参数):
        函数体
        return 返回值
    '''
    #1.定义一个函数,输出相关信息
    def small_cat():
        print(f"我是世界上最可爱的小猫咪,喜欢喵喵叫")
    #2.调用函数,让定义的函数开始工作
    small_cat()
    
    def ture_love():
        print(f"我是布偶猫鼓浪屿宝宝\n我真的很爱很爱你")
    #2.调用函数,让定义的函数开始工作
    ture_love()
  33. 函数的传入参数

    '''
    def add():
        result = 1+2
        print(f"1+2的结果是:{result}")
    '''
    def add(x, y,z):
        result = x + y + z
        print(f"{x}+{y}+{z}的结果是:{result}")
    #调用函数,传入被计算的2个数字
    add(7,3,9)
  34. 案例21:函数练习(升级版自动查核酸)

    #     自己写的
    def practice( ):
        print(f"欢迎来到魔法世界,请出示您的健康码以及72小时绿码证明!")
    practice( )
    import random
    tem = random.randint(30.00,40.00)
    print(f"此时此刻,您的体温是:{tem} ")
    if tem <= 37.5:
        print(f"体温合格,欢迎光临!")
    else:
        print(f"回家洗洗睡吧!")
    # 官方答案
    def official( num ):
        print(f"欢迎来到魔法世界,请出示您的健康码以及72小时绿码证明!")
        if num <= 37.5:
            print(f"体温合格,欢迎光临!")
        else:
            print(f"回家洗洗睡吧!")
    official( 37.9 )
  35. 函数返回值

    #语法判断
    '''
    def 函数(参数...)
        函数体
        return 返回值
    变量 = 函数(参数)
    '''
    #函数返回值
    def add(a,b):
        result = a+b
        #通过返回值,将相加的结果返回给调用者
        return result
    #函数的返回值可以通过变量去接收
    r = add(1,2)
    print(r)
    #再来一次
    def add(a,b):
        result = a+b
        #通过返回值,将相加的结果返回给调用者
        return result
        # 返回结果后,还想输入一句话,千万不要写在return后面,因为不会执行的
        #print("我怎么这么好看")错误案例
    r = add(1,2)
    print(r)
  36. 函数返回值None类型

    #演示特殊自变量:None,用在函数无返回值上,用于if判断中(none = false),空的无意义的
    #无return语句的函数返回值
    def say_hi ():
        print("你好呀")
    
    result=say_hi ()
    print(f"无返回值函数返回值为{result}")
    print(f"无返回值函数返回值为{type(result)}")
    
    #主动返回None语句的函数返回值
    def say_hi2 ():
        print("你好呀")
        return None
    
    result=say_hi2 ()
    print(f"无返回值函数返回值为{result}")
    print(f"无返回值函数返回值为{type(result)}")
    
    #none用于if判断:
    def check_age(age):
        if age > 18:
            return "大美女"
        else:
            return None
    
    result = check_age(16)
    if not result :
        #进入if表示result是none值,也是False
        print("未成年")
    
    #none用于声明无内容的变量上
      name = None
  37. 函数的说明文档

    #定义函数,进行文档说明,多行注释(6个双引号,在中间会车即可)
    def add(x,y)
        """
        add函数可以接收2个参数进行2数相加
        :param x: 形参x表示相加的一个数字
        :param y: 形参y表示相加的另一个数字
        :return: 返回值是2数相加的结果
        """
        result = x + y
        print(f"2数相加的结果是{result}")
        return  result
    
    add(5,6)
  38. 函数的嵌套调用

    # 定义函数func_a,并在内部调用func_b
    def func_a():
        print("---1---")
        #嵌套使用func_b
        func_b()
        print("---3---")
    # 定义函数func_a
    func_a()
  39. 函数的全局变量和局部变量

    #局部变量(num)
    def test_a ():
        num = 100
        print(num)
    test_a()
    #出了函数体,局部变量(num)就无法使用了
    print(num)
    
    #全局变量(函数内外都可以正常使用)
    num = 200
    def test_a():
        print(f"test_a:{num}")
    def test_b():
        print(f"test_a:{num}")
    test_a()
    test_b()
    print(num)
    
    #global关键字
    num = 200
    def test_a():
        print(f"test_a:{num}")
    def test_b():
        num = 500 #局部变量
        print(f"test_a:{num}")
    test_a()
    test_b()
    print(num)
    
    #global关键字,在函数申明变量为全局变量
    num = 200
    def test_a():
        print(f"test_a:{num}")
    def test_b():
        global num #把内部定义的变量设置为全局变量
        num = 500
        print(f"test_a:{num}")
    test_a()
    test_b()
    print(num)
  40. 案例22:函数综合案例(存钱/取钱/余额)

    '''#自己写的代码版本
    #name顾客姓名/money银行卡余额
    money = 50000
    name = input(f"请输入您的姓名")
    print(f"-------------余额-------------\n当前用户是:{name}")
    def money_yue( ):
        print(f"当前存款为:{money}元")
    money_yue( )
    import random
    money1 = random.randint(100,50000)
    def money1_yue( ):
        print(f"当前随机取款为:{money1}元")
    money1_yue( )
    money2 =money - money1
    def money2_yue( ):
        print(f"随机取款后,当前余额为{money}-{money1}={money2}元")
    money2_yue( )
    '''
    
    #官方答案
    #定义全局变量qian和xingming
    qian = 50000
    xingming =None
    #要求客户输入姓名
    xingming = input(f"请输入您的姓名: ")
    #定义查询函数
    def query(show_header):
        #show_header 表头参数
        if show_header:
           print(f"-------------查询余额-------------")
        print(f"{xingming},您好,您的余额还剩余{qian}元")
    
    #定义存款函数
    def saving(num):
        global qian #qian在函数内部定义为全局变量
        qian += num
        print(f"-------------存款-------------")
        print(f"{xingming},您好,您存款{num}元已成功")
        #调用query函数查询余额
        query(False)
    #取款
    def get_money(num):
        global qian
        qian -= num
        print(f"-------------取款-------------")
        print(f"{xingming},您好,您存款{num}元已成功")
        query(False)
    #主菜单参数
    def main():
        print(f"-------------主菜单-------------")
        print(f"{xingming},您好,欢迎来到美丽猫ATM,请选择操作:")
        print("查询余额\t[1]")
        print("存款\t[2]")
        print("取款\t[3]")
        print("退出\t[4]")
        return input(f"请输入你的选择:")
    #设置无限循环,确保程序不退出
    while True:
        keyboard_input = main()
        if keyboard_input == "1":
            query(True)
            continue
        elif keyboard_input == "2":
            num =int(input("您想要存入多少钱,请输入:"))
            saving(num)
            continue
        elif keyboard_input =="3":
            num =int(input("您想要取入多少钱,请输入:"))
            get_money(num)
            continue
        else:
            print(f"退出,欢迎下一次光临!")
            break
  41. 数据容器以及列表定义

    #数据容器(一种可以存储多个元素的Python数据类型)
    # 数据库中的数据容器:list(列表),tuple(元祖),str(字符串),set(集合),dict(字典)
    name_list = ['布偶猫','狸花猫','无毛猫','小橘猫','蓝猫']
    print(name_list)
    
    #定义一个列表 list
    my_cat =["我可爱的小猫咪","布偶猫","Gulangyu"]
    print(my_cat)
    print(type(my_cat))
    
    my_cat = ["我可爱的小猫咪",100,True]
    print(my_cat)
    print(type(my_cat))
    
    #定义一个嵌套列表
    my_list = [[1,2,3],[4,5,6]]
    print(my_list) 
    print(type(my_list))
  42. 列表的下标索引

    #下标索引fa
    name_list = ['春风','惊蛰','立夏','芒种','秋分']
    # 正向索引[0]开始,'春风','惊蛰','立夏','芒种','秋分
    print(name_list[0])
    print(name_list[1])
    print(name_list[2])
    # 反向索引[-1]开始,'秋分,'芒种','立夏','惊蛰','春风'
    print(name_list[-1])
    print(name_list[-2])
    print(name_list[-3])
    #嵌套型的下标索引
    name_list = [[1,2,3],[4,5,6]]
    print(name_list[1],[1])
  43. 列表的常用操作(append/extend/insert/del/remove/pop/count/index/len)

    #定义一个函数
    mylist = ["apple","orange","Alice"]
    #查找某元素在列表中的下标索引
    index = mylist.index("Alice")
    print(f"Alice在列表中的下标索引是:{index}")
    #查找的元素如果不存在,会报错
    # index = mylist.index("Jack")
    # print(f"Alice在列表中的下标索引是:{index}")
    #修改特定位置的元素值 语法:列表【下标】=值
    mylist[0]='榴莲小姐'
    print(f"列表被修改元素值后,结果是:{mylist}")
    #在列表中自定义指定位置插入元素
    mylist.insert(1,"best")
    print(f"列表插入元素后,结果是:{mylist}")
    #append列表尾部追加元素
    mylist.append("我最爱我自己")
    print(f"列表插入元素后,结果是:{mylist}")
    #extend列表尾部追加元素
    mylist2 = [1,2,3]
    mylist.extend(mylist2)
    print(f"列表插入元素后,结果是:{mylist}")
    #删除元素
    mylist = ["apple","orange","Alice"]
    #del删除
    del mylist2
    print(f"列表删除元素后,结果是:{mylist}")
    #pop删除
    mylist = ["apple","orange","Alice"]
    element = mylist.pop(2)
    print(f"列表删除元素后,结果是:{mylist},取出的元素是{element}")
    #remove删除(删除第一个出现的内容)
    mylist = ["apple", "Alice","orange","Alice","Happy"]
    mylist.remove("Alice")
    print(f"列表删除元素后,结果是:{mylist},取出的元素是{element}")
    #列表全部清除
    mylist.clear()
    print(f"列表清空后,结果是:{mylist}")
    #统计某元素在列表中的数量
    mylist = ["apple", "Alice","orange","Alice","Happy"]
    count = mylist.count("Alice")
    print(f"列表中Alice的数量是:{count}")
    #统计列表中,总共有多少个元素(len)
    mylist = ["apple", "Alice","orange","Alice","Happy"]
    count = len(mylist)
    print(f"列表的元素数量总共有:{count}个")
  44. 案例23:年龄列表

    age = [21,25,21,23,22,20]
    #追加一个数字31,到列表的尾部
    age.append(31)
    print(f"新增的数据是{age}")
    #追加一个新列表{29,33,30},到列表尾部
    age2 = [29,33,30]
    age.extend(age2)
    print(f"新增的数据是{age}")
    #取出第一个元素
    num1=age[0]
    print(f"第一个元素是{num1}")
    #取出最后一个元素
    num2 = age[-1]
    print(f"最后一个元素是{num2}")
    #查找元素31
    index = age.index(31)
    print(f"31在列表中的下标索引是:{index}")
  45. While和FOR遍历函数

    #用WHILE循环遍历列表的演示函数
    def list_while_func():
        my_list = ["apple","华为","Shanghai"]
    #循环控制变量通过下标索引来控制,默认0
    #每一次循环将下标索引变量+1
    #循环条件:下标索引变量 < 列表的元素数量
    #定义一个变量用来标记列表的下标
        index = 0 #初始值0
        while index < len(my_list):
        # 通过index变量去处对应下标的元素
              element = my_list[index]
              print(f"列表的元素:{element}")
        #将循环变量index 每一次循环都+1
        index  +=  1
    list_while_func()
    
    
    #用for循环遍历列表的演示函数
    def list_for_func():
        my_list =[1,2,3,4,5]
        for element in my_list:
            print(f"列表的元素有:{element}")
    list_for_func()
  46. 元组的基本操作

    #定义元组
    t1 = (1,"HI",True)
    t2 = ()
    t3 = tuple()
    print(f"t1的类型是:{type(t1)},内容是:{t1}")
    print(f"t2的类型是:{type(t2)},内容是:{t2}")
    print(f"t3的类型是:{type(t3)},内容是:{t3}")
    
    #定义单个元素的元组
    t4 = ("hellow")
    print(f"t4的类型是:{type(t4)},内容是:{t4}")
    
    #元组的嵌套
    t5 = ((1,2,3),(4,5,6))
    print(f"t5的类型是:{type(t5)},内容是:{t5}")
    
    #下标索引取出内容
    num = t5[1][2]
    print(f"从嵌套元组中取出的数据:{num}")
    
    #index查找方法
    t6 = ("春眠不觉晓","床前明月光","漂亮的大太阳")
    index = t6.index("床前明月光")
    print(f"在元素t6查找床前明月光,下标是{index}")
    
    #count统计方法
    t7 = ("苹果","香蕉","草莓","苹果","草莓","西瓜")
    num = t7.count( "苹果")
    print(f"苹果的数量有{num}个")
    
    #元组的操作:len的函数统计元组元素数量
    t8 = ("苹果","香蕉","草莓","苹果","草莓","西瓜")
    num2 = len(t8)
    print(f"苹果的数量有{num2}个")
    
    #元组的遍历:while
    index = 0
    while index < len(t8):
        print(f"元组的元素有:{t8[index]}")
        #至关重要
        index += 1
    
    #元组的遍历:for
    for element in t8:
        print(f"2元组的元素有:{element}")
        
    # 修改元组的内容
    # t8[0]="itcast"
    
    # 定义一个元组
    t9 = (1,2,["haha","hehe"])
    print(f"t9的内容是:{t9}")
    t9[2][0] = "小猫咪宝宝"
    t9[2][1] = "小狗狗"
  47. 案例24:元组应用('周杰伦',11,['football','music'])

    # 定义学生信息元组
    student = ('周杰伦', 11, ['football', 'music'])
    
    # 1. 查询年龄所在的下标位置
    age_index = student.index(11)
    print(f"年龄所在的下标位置是:{age_index}")
    
    # 2. 查询学生的姓名
    name = student[0]
    print(f"学生的姓名是:{name}")
    
    # 3. 删除爱好中的football
    # 由于元组内容不可变,需要先获取爱好列表,修改后再赋值
    hobbies = student[2]
    hobbies.remove('football')
    print(f"删除football后的爱好列表:{hobbies}")
    
    # 4. 增加coding爱好
    hobbies.append('coding')
    print(f"增加coding后的爱好列表:{hobbies}")
    
    # 打印最终的学生信息元组
    print(f"最终的学生信息元组:{student}")
  48. 字符串的定义和操作

    #定义一个字符串
    my_str = "gulangyu and xiaobaobao"
    
    #通过下标索引取值
    value = my_str[2]
    print(f"my_str的第二个值是{value}")
    
    #index方法
    value2 = my_str.index("and")
    print(f"my_str的and起始下标是{value2}")
    
    #replace替换
    new_my_str = my_str.replace("and","love")
    print(f"替换后的结果是{new_my_str }")
    
    #字符串分割(split)
    my_str = "xiaoming and lvbaoshi"
    my_str_list = my_str.split(" ")
    print(f"将字符串{my_str}进行split切分后得到:{my_str_list},类型是{type(my_str_list)}")
    
    #strip方法(去除前后空格)
    my_str = "             xiaoming and lvbaoshi        "
    my_str_new = my_str.strip( )#不穿入参数,去除收尾空格
    print(f"将字符串{my_str}进行stri后得到:{my_str_new}")
    my_str = "12xiaoming and lvbaoshi21"
    my_str_new = my_str.strip( "12")
    print(f"将字符串{my_str}进行strip12后得到:{my_str_new}")
    
    #统计字符串中某字符串出现的次数,count
    my_str = "linlinlinlinlinlinlinlinlinlhahahahalinlindasdas"
    count = my_str.count("li")
    print(f"将字符串{my_str}中li出现的次数:{count}")
    
    #统计字符串中的长度,len()
    num = len(my_str)
    print(f"字符串{my_str}的长度是:{num}")
  49. 数据容器(序列)的切片

    #对list进行切片,从1开始,4结束,步长1
    my_list = [0,1,2,3,4,5,6]
    result1 = my_list [1:4:1] #步长默认为1,所以可以省略不写
    print(f"结果1:{result1}")
    
    #对tuple进行切片,从头开始,到最后结束,步长1
    my_tuple = (0,1,2,3,4,5,6)
    result2 = my_tuple[:] #起始和结束不写表示从头到尾,步长为1可以省略
    print(f"结果1:{result2}")
    
    #对str进行切片,从头开始,到最后结束,步长2
    my_str = "01234567"
    result3 = my_str[::2]
    print(f"结果1:{result3}")
    
    #对str进行切片,从头开始,到最后结束,步长-1
    my_str = "01234567"
    result4 = my_str[::-1] #将序列反转了
    print(f"结果1:{result4}")
    
    #对列表进行切片,从3开始,到1结束,步长-1
    my_list = [0,1,2,3,4,5,6]
    result5 = my_list[3:1:-1]
    print(f"结果1:{result5}")
    
    #对tuple进行切片,从头开始,到最后结束,步长-2
    my_tuple = (0,1,2,3,4,5,6)
    result6 = my_tuple[::-2] #起始和结束不写表示从头到尾,步长为1可以省略
    print(f"结果1:{result6}")
  50. 案例25:序列的切片练习

    #练习案例:序列的切片实践(倒叙字符串、split分隔)
    #字符串"万过薪月,员序程丽美超,敌无下天"
    my_str = "万过薪月,员序程丽美超,敌无下天"
    
    #倒叙字符串,切片取出
    result1 = my_str[::-1][5:10]
    print(f"方式1的结果是{result1}")
    
    #切片取出,然后倒序
    result2 = my_str[5:10][::-1]
    print(f"方式1的结果是{result2}")
    
    #split分隔"," replace替换
    result3 = my_str.split(",") [1].replace("超" , " ")[::-1]
    print(f"方式1的结果是{result3}")
  51. 集合的定义与操作

    #定义集合
    my_set ={"春天","夏天","秋天","冬天","春天","夏天","秋天","冬天","春天","夏天","秋天","冬天"}
    my_set_empty = set() #定义空集合
    print(f"my_set的内容是:{my_set},类型是:{type(my_set)}")
    print(f"my_set_empty的内容是:{my_set_empty},类型是:{type(my_set_empty)}")
    
    #添加新元素
    my_set.add("想你的季节")
    my_set.add("如梦初醒")
    my_set.add("春天")
    print(f"my_set添加元素后的结果是:{my_set}")
    
    #移除元素
    my_set.remove("春天")
    print(f"my_set移除元素后的结果是:{my_set}")
    
    #随机取出来一个元素
    my_set ={"春天","夏天","秋天","冬天","春天","夏天","秋天","冬天","春天","夏天","秋天","冬天"}
    element = my_set.pop( )
    print(f"集合被取出的元素是{element},取出元素后:{my_set}")
    
    #清空集合,clear
    my_set.clear()
    print(f"集合被清空了,结果是{my_set}")
    
    #取2个集合的差集(set1里面有的,但是set2里面没有的数据)
    set1 = {1,2,3}
    set2 = {1,5,6}
    set3 = set1.difference(set2)
    print(f"取出差集后的结果是{set3}")
    print(f"取差集后,原有set1的内容是{set1}")
    print(f"取差集后,原有set2的内容是{set2}")
    
    #消除2个集合的差集
    set1 = {1,2,3}
    set2 = {1,5,6}
    set1.difference_update(set2)
    print(f"消除差集后,集合1结果是{set1}")
    print(f"消除差集后,集合2结果是{set2}")
    
    #2个集合合并为1个
    set1 = {1,2,3}
    set2 = {1,5,6}
    set3 = set1.union(set2)
    print(f"合并后,结果是{set3}")
    print(f"合并后,集合1结果是{set1}")
    print(f"合并后,集合2结果是{set2}")
    
    #统计集合元素数量len()
    set1 = {1,2,3}
    set2 = {1,5,6}
    set3 = set1.union(set2)
    num = len(set3)
    print(f"合并后,集合元素数量是{num}")
    
    #集合的遍历 集合不支持下标索引,不能用while
    set1 = {1,2,3,4,5}
    for element in set1:
        print(f"集合的元素有:{element}")
  52. 案例26:集合案例

    # 有如下列表对象:
    # my_list = ['猫咪','小狗','兔子','狐狸','cat','dog','rabbit','fox']
    #1.定义空集合 2.for循环遍历 3.for列表元素加入集合 4.元素去重后集合对象
    my_list = ['猫咪','小狗','兔子','狐狸','cat','dog','rabbit','fox','猫咪','小狗','兔子','狐狸','小狗','兔子','狐狸']
    my_list_empty = ( )
    print(f"my_list的值是{my_list},my_list_empty的值是{my_list_empty}")
    #1.定义空集合
    my_set = set()
    
    #2.for循环遍历
    for element in my_list:
        #在for循环中将列表的元素添加至集合
        my_set.add(element)
        print(f"动物园里有{element}")
    
    #最终得到元素去重后的集合对象,并打印输出
    print(f"列表的内容是{my_list}")
    print(f"通过for循环后,得到的集合对象是{my_set}")
  53. 案例27:字典案例

    #老师有一份名单,记录了学生的姓名和总成绩
    # 王力宏 77;周杰伦 88;林俊杰 99
    # 现在要将其通过python录入到程序中,并可以通过学生姓名检索学生成绩
    
    #定义字典
    my_dict1 = {"王力宏":99,"周杰伦":88,"林俊杰":77}
    
    #定义空字典
    my_dict2= { } #set()
    my_dict3 = dict()
    print(f"字典1的内容是:{my_dict1},类型{type(my_dict1)}")
    print(f"字典1的内容是:{my_dict2},类型{type(my_dict2)}")
    print(f"字典1的内容是:{my_dict3},类型{type(my_dict3)}")
    
    #定义重复key的字典
    my_dict1 = {"王力宏":99,"王力宏":88,"林俊杰":77}
    print(f"重复key的字典内容是{my_dict1}")
    
    #从字典中基于key获取value
    my_dict1 = {"王力宏":99,"周杰伦":88,"林俊杰":77}
    score = my_dict1["王力宏"]
    print(f"王力宏的考试成绩为{score}")
    score = my_dict1["周杰伦"]
    print(f"周杰伦的考试成绩为{score}")
    score = my_dict1["林俊杰"]
    print(f"林俊杰的考试成绩为{score}")
    
    #定义嵌套字典
    stu_score_dict = {
        "王力宏":{
            "语文":77,
            "数学":66,
            "英语":33
        },"周杰伦":{
            "语文": 88,
            "数学": 86,
            "英语": 55
        },"林俊杰":{
            "语文": 99,
            "数学": 96,
            "英语": 66
        }
    }
    print(f"学生的考试信息是:{stu_score_dict}")
    
    #从嵌套的字典中获取数据,比如看一下周杰伦语文信息
    zhou_score = stu_score_dict["周杰伦"]["语文"]
    print(f"周杰伦的语文成绩是:{zhou_score}")
    lin_score = stu_score_dict["林俊杰"]["英语"]
    print(f"林俊杰的语文成绩是:{lin_score}")
  54. 字典的常用操作

    #定义字典
    my_dict1 = {"王力宏":99,"周杰伦":88,"林俊杰":77}
    
    #新增元素
    my_dict1["张信哲"] = 66
    print(f"字典新增元素后,结果:{my_dict1}")
    
    #更新元素
    my_dict1["周杰伦"] = 33
    print(f"字典更新后,结果:{my_dict1}")
    
    #删除元素
    score = my_dict1.pop("周杰伦")
    print(f"移除元素后,结果:{my_dict1},周杰伦的考试分数{score}")
    
    #清空元素
    my_dict1.clear()
    print(f"字典清空了,结果:{my_dict1}")
    
    #获取全部key的操作
    my_dict1 = {"王力宏":99,"周杰伦":88,"林俊杰":77}
    keys = my_dict1.keys()
    print(f"字典全部key为{keys}")
    
    #遍历字典
    #方式1:通过获取到的全部key来完成遍历
    for key in keys:
        print(f"字典的key是{key}")
        print(f"字典的value是{my_dict1[key]}")
    # 方式2:直接对字典进行for循环,每一遍循环都是为了得到key
    for key in my_dict1:
        print(f"2字典的key是{key}")
        print(f"2字典的value是{my_dict1[key]}")
    
    #统计字典内的元素数量
    num = len(my_dict1)
    print(f"字典中的元素数量有{num}个")
  55. 案例28:字典案例实践(升职加薪)

    #如有以下员工,请使用字典完成数据的记录,并通过for循环,对所有级别为1的员工上升1级,薪水增加1000元
    #组织字典记录数据
    info_dict = {
        "王力宏":{
            "部门": "科技部",
            "工资": "3000",
            "级别": "1"
        },
        "周杰伦":{
            "部门": "市场部",
            "工资": "5000",
            "级别": "2"
        },
        "林俊杰":{
            "部门": "市场部",
            "工资": "7000",
            "级别": "3"
        },
        "张学友":{
            "部门": "科技部",
            "工资": "4000",
            "级别": "1"
        },
        "刘德华":{
            "部门": "市场部",
            "工资": "4000",
            "级别": "2"
        }
    }
    print(f"员工在升职加薪前的结果是{info_dict}")
    
    #for循环遍历字典
    for name in info_dict:
           #if条件判断符合条件的员工
           if info_dict[name]["级别"] == 1:
               #升职加薪操作
               #获取到员工信息字典
               employee_info_dict = info_dict[name]
               #修改员工信息
               employee_info_dict["级别"] = 2
               employee_info_dict["工资"] = employee_info_dict["工资"+1000] #employee_info_dict["工资"] +=1000
               #将员工的信息更新
               info_dict[name] = employee_info_dict
    #输出结果
    print(f"对员工升职加薪后的结果是{info_dict}")
    
    info_dict = {
        "王力宏": {"部门": "科技部", "工资": 3000, "级别": 1},  # 将工资和级别改为整数类型
        "周杰伦": {"部门": "市场部", "工资": 5000, "级别": 2},
        "林俊杰": {"部门": "市场部", "工资": 7000, "级别": 3},
        "张学友": {"部门": "科技部", "工资": 4000, "级别": 1},
        "刘德华": {"部门": "市场部", "工资": 4000, "级别": 2}
    }
    
    print(f"员工在升职加薪前的结果是{info_dict}")
    
    for name in info_dict:
        if info_dict[name]["级别"] == 1:  # 直接比较整数
            employee_info_dict = info_dict[name]
            employee_info_dict["级别"] = 2
            employee_info_dict["工资"] += 1000  # 正确的加法操作
            # 无需再次赋值 info_dict[name] = employee_info_dict
    
    print(f"对员工升职加薪后的结果是{info_dict}")
  56. 数据容器的通用操作(列表/字典/集合/字符串/元组)

    #数据容器大全
    my_list = [1,2,3,4,5]
    my_tuple = (1,2,3,4,5)
    my_str = 'abcdefg'
    my_set = {1,2,3,4,5}
    my_dict = {"key1":1,"key2":2,"key3":3,"key4":4,"key5":5}
    
    #len元素个数
    print(f"列表  元素个数有:{len(my_list)}")
    print(f"元组  元素个数有:{len(my_tuple)}")
    print(f"字符串  元素个数有:{len(my_str)}")
    print(f"集合  元素个数有:{len(my_set)}")
    print(f"字典  元素个数有:{len(my_dict)}")
    
    #max最大元素
    print(f"列表  最大的元素有:{max(my_list)}")
    print(f"元组  最大的元素有:{max(my_tuple)}")
    print(f"字符串  最大的元素有:{max(my_str)}")
    print(f"集合  最大的元素有:{max(my_set)}")
    print(f"字典  最大的元素有:{max(my_dict)}")
    
    #min最小元素
    print(f"列表  最小的元素有:{min(my_list)}")
    print(f"元组  最小的元素有:{min(my_tuple)}")
    print(f"字符串  最小的元素有:{min(my_str)}")
    print(f"集合  最小的元素有:{min(my_set)}")
    print(f"字典  最小的元素有:{min(my_dict)}")
    
    #类型转换:容器转列表
    print(f"列表   转 列表的结果是:{list(my_list)}")
    print(f"元组   转 列表的结果是:{list(my_tuple)}")
    print(f"字符串 转 列表的结果是:{list(my_str)}")
    print(f"集合   转 列表的结果是:{list(my_set)}")
    print(f"字典   转 列表的结果是:{list(my_dict)}")
    
    #类型转换:容器转元组
    print(f"列表   转 元组的结果是:{tuple(my_list)}")
    print(f"元组   转 元组的结果是:{tuple(my_tuple)}")
    print(f"字符串 转 元组的结果是:{tuple(my_str)}")
    print(f"集合   转 元组的结果是:{tuple(my_set)}")
    print(f"字典   转 元组的结果是:{tuple(my_dict)}")
    
    #类型转换:容器转集合
    print(f"列表   转 集合的结果是:{set(my_list)}")
    print(f"元组   转 集合的结果是:{set(my_tuple)}")
    print(f"字符串 转 集合的结果是:{set(my_str)}")
    print(f"集合   转 集合的结果是:{set(my_set)}")
    print(f"字典   转 集合的结果是:{set(my_dict)}")
    
    #类型转换:容器转字符串
    print(f"列表   转 字符串的结果是:{str(my_list)}")
    print(f"元组   转 字符串的结果是:{str(my_tuple)}")
    print(f"字符串 转 字符串的结果是:{str(my_str)}")
    print(f"集合   转 字符串的结果是:{str(my_set)}")
    print(f"字典   转 字符串的结果是:{str(my_dict)}")
    
    #容器通用排序功能sorted[reverse = True]
    print(f"列表   对象的排序结果是:{sorted(my_list)}")
    print(f"元组   对象的排序结果是:{sorted(my_tuple)}")
    print(f"字符串 对象的排序结果是:{sorted(my_str)}")
    print(f"集合   对象的排序结果是:{sorted(my_set)}")
    print(f"字典   对象的排序结果是:{sorted(my_dict)}")
    
    print(f"列表   对象的反向排序结果是:{sorted(my_list,reverse=True)}")
    print(f"元组   对象的反向排序结果是:{sorted(my_tuple,reverse=True)}")
    print(f"字符串 对象的反向排序结果是:{sorted(my_str,reverse=True)}")
    print(f"集合   对象的反向排序结果是:{sorted(my_set,reverse=True)}")
    print(f"字典   对象的反向排序结果是:{sorted(my_dict,reverse=True)}")
  57. 演示字符串大小比较

    #演示字符串大小比较
    #abc 比较 abd
    print(f"abd大于abc,结果:{'abd'>'abc'}")
    #a 比较 ab
    print(f"ab大于ab,结果:{'ab'>'a'}")
    #a 比较 A
    print(f"A大于a,结果:{'A'>'a'}")
    #key1 比较 key2
    print(f"Key2大于key1,结果:{'key2'>'key1'}")
  58. 函数的多返回值

    #演示使用多个变量,接收多个返回值
    def test_return ():
        return 1,2,3,"hellow",True
    x,y,z,m,n = test_return()
    print(x)
    print(y)
    print(z)
    print(m)
    print(n)
  59. 函数的多种参数使用形式

    #定义函数
    def user_info (name,age,gender):
        print(f"姓名是:{name},年龄:{age},性别:{gender}")
    
    # 位置参数 - 默认使用形式
    user_info('小明',20,'男')
    
    #关键字参数
    user_info(name = '小王',gender='女',age =11)
    user_info(gender ='女',name = '小陈',age =15)
    
    #缺省参数(默认值)
    def user_info (name,age,gender = '男'):
        print(f"姓名是:{name},年龄:{age},性别:{gender}")
    user_info('小天',13)
    user_info('小天',13,gender= '女')
    
    #不定长 - 位置不定长,*号
    #不定长定义的形式参数会作为元组存在,接收不定长数量的参数传入
    def user_info(*args):
        print(f" args的参数类型是:{type(args)},内容是:{args} ")
    user_info(1,2,3,'小明','男孩')
    
    #不定长 - 关键字不定长,**号
    def user_info(**kwargs):
        print(f" args的参数类型是:{type(kwargs)},内容是:{kwargs} ")
    # user_info(1,2,3,'小明','男孩')这种是错误的
    user_info(name = '小帅',age = 11,gender = '男孩',addr = '上海')
  60. 函数作为参数传统

    #定义函数,接收另一个函数作为传入参数
    def test_func(compute):
        result = compute(1,2) #computer是函数
        print(f"computer的类型是:{type(compute)}")
        print(f"计算结果是:{result}")
    
    #定义一个函数,准备作为参数传入另一个函数
    def compute(x,y):
        return x + y
    
    #调用,并传入函数
    test_func(compute)
  61. Lambda匿名函数

    # 定义一个函数,接收其他函数输入(lambda匿名函数)
    def test_func(compute):
        result = compute(1,2)
        print(f"结果是{result}")
    #通过lambda匿名函数的形式,将匿名函数作为参数的值
    test_func(lambda x,y:x+y)
  62. 文件的读取方法

    #打开文件
    import time
    
    f = open("/Users/li/Downloads/test","r",encoding="UTF-8")
    print(type(f))
    
    #读取文件-read()
    print(f"读取10个字节的结果是:{f.read(10)}")
    print(f"read方法读取的全部结果是:{f.read()}")
    print("-------------------------------------------")
    
    #读取文件 - readlines()
    Lines = f.readlines()#读取文件的全部行,然后封装到列表中
    print(f"lines对象的类型:{type(Lines)}")
    print(f"lines对象的内容:{Lines}")
    
    #读取文件 - readline()
    line1 = f.readline()
    line2 = f.readline()
    line3 = f.readline()
    print(f"第一行数据是{line1},第二行数据是{line2},第三行数据是{line3}")
    
    #for循环读取文件行
    for line in f:
        print(f"每一行数据是:{line}")
    
    #文件关闭
    time.sleep(500000)#程序睡眠50w秒
    f.close()
    
    # #with open的语法
    with open("/Users/li/Downloads/test","r",encoding="UTF-8") as f:
        for line in f:
          print(f"每一行数据是:{line}")
    
    time.sleep(500000)
  63. 案例29:文件读取并统计

    #单词计数,统计上海出现的次数
    #打开文件,以读取模式打开
    f = open("/Users/li/Downloads/test","r",encoding="UTF-8")
    
    #方式一:读取全部数据,通过字符串count方法统计上海出现的次数
    content = f.read( )
    count = content.count("上海")
    print(f"上海在文件中出现了:{count}次")
    
    #方法二:读取内容,一行一行读取
    count = 0  #使用count变量来累计上海的出现次数
    for line in f:
        line = line.strip() #去除开头和结尾的空格和换行符
        words = line.split(" ")
        print(words)
        for word in words:
            if word =="上海" :
                count += 1 #如果单词是上海,数量就可以累加+1
    
    #判断单词出现次数并累计
    print(f"上海出现的次数是:{count}")
    
    #关闭文件
    f.close()
  64. 文件的写出操作

    #打开文件,不存在的文件,r读w写a追加
    import time
    f = open("/Users/li/Downloads/test2","w", encoding="UTF-8")
    #write写入
    f.write("笑傲江湖,唯我独尊")#内容写入到内存中
    #flush刷新                #内容写入到内存中
    f.flush()
    time.sleep(500000)
    #close关闭文件             #close的办法,内置
    f.close()
    
    #打开一个存在的文件
    f = open("/Users/li/Downloads/test2","w", encoding="UTF-8")
    #write写入,flush刷新
    f.write("我是大美丽")
    #close关闭文件        
    f.close()
  65. 文件的追加写入文件

    #文件追加操作
    #打开一个不存在的文件
    f = open("/Users/li/Downloads/test3","a",encoding="UTF-8")
    #write 写入
    f.write("春风不度玉门关\n")
    #flush刷新
    f.flush()
    #close关闭
    f.close()
    #打开一个存在的文件
    f = open("/Users/li/Downloads/test3","a",encoding="UTF-8")
    #write写入、flush刷新
    f.write("\n是哪个朝代的诗人写的")
    #close.关闭
  66. 案例30:文件操作的综合案例

    #文件操作的综合案例
    #打开文件得到的文件对象,准备读取
    fr = open("/Users/li/Downloads/test3","r",encoding="UTF-8")
    #打开文件得到的文件对象,准备写入
    fw = open("/Users/li/Downloads/test3.bak","w",encoding="UTF-8")
    #for循环读取文件
    for line in fr:
        line = line.strip( )
        #判断内容,将满足的内容写出
        if line.split(",")[-1] == "测试":
            continue   #continue进入下一次循环,这一次后面的内容就跳过了
        #将内容写出去
        fw.write(line)
        #由于前面对内容进行了strip的操作,所以要手动的写出换行符
        fw.write("\n")
    
    #close2个文件对象
    fr.close()
    fw.close() #写出文件调用close会自动flush
  67. 异常的捕获

    #演示捕获异常
    #基本捕获语法
    try:
        f = open("/Users/li/Downloads/test4","r",encoding="UTF-8")
    except:
        print(f"出现异常了,因为文件不存在,我将open的模式,为w模式去打开")
        f = open("/Users/li/Downloads/test4","w",encoding="UTF-8")
    
    #捕获指定的异常
    try:
        print(name)
    except NameError as e :
        print("出现了变量未定义的异常")
        print(e)
    
    #捕获多个异常
    try:
        1/0
        print(name)
    except (NameError,ZeroDivisionError) as e:
        print("出现了变量未定义,或者除以0的异常错误")
    
    #未正确设置捕获异常类型,将无法捕获异常
    
    '''
    #捕获所有异常
    try:
        # 1/0
        # print(name)
        f = open("/Users/li/Downloads/test4","r",encoding="UTF-8")
        print("我是大魅力")
    except Exception as e:
        print("出现异常了")
    #else的功能
    else:
        print("好高兴,没有出现异常耶!")
    #finally的功能(无论有没有异常,最终都要处理的结果)
    finally:
        print("无论有没有异常,我都要贯彻到底")
        f.close()
  68. 异常的传递性

    #演示异常的传递性
    #定义一个出现异常的方法
    def func1():
        print("func1开始执行")
        num = 1/0
        print("func1结束执行")
    #定义一个无异常的方法,调用上面的方法
    def func2():
        print("func2开始执行")
        func1()
        print("func2结束执行")
    #定义一个方法,调用上面的方法
    def main():
        try:
           func2()
        except Exception as e:
            print(f"出现异常了,异常的信息是:{e}")
    
    main()
  69. 模块的概念与导入

    #演示模块的导入
    #使用import导入time模块使用sleep功能(函数)
    import time #导入python内置的time模块(time.py这个代码文件)
    print("你好")
    time.sleep(5) #通过time.可以使用模块内部的全部功能(类、函数、变量)
    print("我好")
    time.sleep(5)
    print("大家好")
    
    #使用from导入time的sleep功能
    from time import sleep
    print("你好")
    sleep(1)
    print("我很想你")
    sleep(2)
    print("不要再离开我了,我么")
    
    #使用*导入time模块的全部功能
    from time import * #*表示全部的意思
    print("有一天")
    sleep(1)
    print("我遇见了一个和你很像的人")
    sleep(2)
    print("才发现你已经在我心里住了很久很久")
    
    #使用*导入time模块的全部功能
    import  time as t
    print("那天重逢")
    t.sleep(1)
    print("你说我胖了")
    t.sleep(2)
    print("我以前也胖,但你忘了")
    
    from time import sleep as sl
    print("时光已逝永不回")
    sl(1)
    print("原本属于我们的合唱")
    sl(2)
    print("虽未开口,但藏于我心")
  70. 自定义模块并导入

    #自定义模块
    #导入自定义模块使用
    '''
    import test2
    test2.test(2,3)
    '''
    from test2 import test
    test(2,3)
    导入不同模块的同名功能
    from test2 import test
    from test3 import test
    test(2,3)
    
    # __main__变量
    from test2 import test
    
    # __all__变量
    from test3 import *
    test_a(1,2)
    test_b(5,3)
    
    '''
    test2
    def test(a,b):
        print(a + b)
    
    if __name__ == '__main__':
        test(1,2)
    '''
    
    '''
    test3
    __all__=['test_a']
    def test_a(a,b):
        print(a + b)
    
    def test_b(a,b):
        print(a - b)
    '''
  71. 自定义Python包

    #演示Python包
    #包名.模块名.目标
    #创建一个包
    
    #1.导入自定义的包中的模块,并使用
    import test20250611.model1
    import test20250611.model2
    test20250611.model1.info_print()
    test20250611.model2.info_print()
    
    #2.可以用from语句
    from test20250611 import model1
    from test20250611 import model2
    model1.info_print()
    model2.info_print()
    
    #3.更简易的语法
    from test20250611.model1 import  info_print
    from test20250611.model2 import  info_print
    info_print()
    
    #4.通过__all__变量,控制import*
    from test20250611 import *
    model1.info_print()
    model2.info_print()
  72. 案例31:功能模块包的综合案例

    """
    演示异常、模块、包的综合案例练习(模块包外的调试界面)
    """
    #创建my_utiles包,在包内创建:str_util.py和file_util.py 两个模块,并提供相应函数
    import my_utils.str_util
    from my_utils import file_util
    print(my_utils.str_util.str_reverse("我喜欢小猫咪"))
    print(my_utils.str_util.substr("我喜欢大猫咪",0,4))
    
    # file_util.print_file_info("/Users/li/Downloads/test3")
    file_util.append_to_file("/Users/li/Downloads/test3","我是大富翁")
    file_util.print_file_info("/Users/li/Downloads/test3")
    
    """
    字符串相关的工具模块
    """
    def str_reverse(s):
        """
        功能是将字符串完成反转
        :param s: 将被反转的字符串
        :return: 反转后的字符串
        """
        return s[::-1]
    
    def substr(s,x,y):
        """
        功能是按照给定的下标完成给定字符串的切片
        :param s: 即将被切片的字符串
        :param x: 切片的开始下标
        :param y: 切片的结束下标
        :return: 切片完成后的字符串
        """
        return s[x:y:1]
    
    if __name__ == '__main__':
        print(str_reverse("等到世界颠倒你才会爱我"))
        print(substr("等到世界颠倒你才会爱我",1,3))
    
    """
    文件处理相关的工具模块
    """
    def print_file_info(file_name):
        """
        功能是:将给定的文件内容输出到控制台中
        :param file_name: 即将被读取的文件路径
        :return: None
        """
        f = None
        try:
            f = open(file_name,"r", encoding="UTF-8")
            content = f.read()
            print("文件的全部内容如下")
            print(content)
        except Exception as  e:
            print(f"程序出现了异常,原因是:{e}")
        finally:
            if f: #如果变量是none,表示false,如果有任何内容,就是true
              f.close()
    
    def append_to_file(file_name,data):
        """
        功能:指定的数据追加到指定的文件中
        :param file_name: 指定的文件路径
        :param data: 指定的数据
        :return: None
        """
        f = open(file_name,"a",encoding="UTF-8")
        f.write(data)
        f.write("\n")
        f.close()
    
    if __name__ == '__main__':
        # print_file_info("/Users/li/Downloads/test3")
          append_to_file("/Users/li/Downloads/test3","我是超级大魅力")

你可能感兴趣的:(Python,python,开发语言)