栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

小白学Python DAY2

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

小白学Python DAY2

1.字符串
    1.1字符串的输入输出
        输入:input()---->所有input()输入的都是字符串类型
        输出:print()
'''
字符串
'''
s1 = 'hello'
s2 = s1
s3 = 'hello'
s4 = 'hello1'
print(s1, s2, s3)
print(id(s1))  # id():获取内存地址
print(id(s2))
print(id(s3))
print(id(s4))
print(s1 is s2)  # is:比较的是内存地址,结果是bool类型
print(s1 is s4)
'''
小练习--->字母和数字的组合(下标),随机产生验证码
'''
import random
filename = ''
s = 'QHUJFUHSKHhfkhhuihja1234487685'
for i in range(4):
    index = random.randint(0, len(s) - 1)#随机产生下标
    filename += s[index]#获取下标匹配的字母
print(filename)
    1.2字符串的切片
        1.2.1 字符串索引机制: 1.0~len(s)-1
                      2.-len(s)~-1
                 例如:例如:  A  B  C  D  E  F
                      index:0   1  2  3  4  5 ----->从前往后
                            -6 -5 -4 -3 -2 -1 ----->从后往前
'''
字符串的获取
'''
# s1='https://www.bilibili.com/video/BV1R7411F7JV?p=31&spm_id_from=pageDriver&vd_source=b48454820a3fd825265eef66d6df4c82'
s1 = 'ABCDEF'
print(s1[4])  # E
print(s1[0])  # A
print(s1[-1])  # F
print(s1[-1], s1[-5])  # F B
print(len(s1))  # 6,通过len(s)可以获取字符串的长度
        1.2.2 切片:
            格式:字符串变量[start:end]---->结果:包含start,不包含end
                 字符串变量[start:end:step]---->step:1.步长,2.方向: step  正数 从右向左
'''
切片
'''
s = 'ABCDEFG'
print(s[1:4])  # BCD
print(s[:5])  # 默认从零开始  ABCDE

print(s[-3:7])  # 两套规则可以交叉使用
print(s[-3:])

x = s[:]
print(x)
print(s)
print(id(x))
print(id(s))  # 内容一样,地址也一样

# 取中间值
print(s[1:-1])

print(s[:7:2])  # ACEG
print(s[1::2])
# step:1.步长,2.方向: step  正数 从右向左
print(s[::4])  # AE
print(s[-3::-4])  # EA

print(s[0:6:-2])  # 无值
print(s[6:0:-2])  # GECA
    1.3字符串的常见操作
        获取长度:len()
        查找内容:find(),index(),rfind(),rindex()
        判断:startswith(),endswith(),isalpha(),isdigit(),isalnum,isspace(),isupper(),islower()
        计算出现次数:count()
        替换内容:replace()
        切割字符串:split(),rsplit(),splitlines(),partition(),rpartition()
        修改大小写:capitalize(),title(),upper(),lower()
        空格处理:ljust(),rjust(),center(),lstrip(),rstrip(),strip()
        字符串拼接:join()
        (1).获取长度:len()
s='https://www.bilibili.com/video/BV1R7411F7JV?p=32&spm_id_from=pageDriver&vd_source=b48454820a3fd825265eef66d6df4c82'
print(len(s))#获取字符串的长度
        (2).查找
            find():从左往右查找,遇到符合要求的返回位置,没有找到返回-1
            rfind():从右往左找,遇到符合要求的返回位置,没有找到返回-1
            index():从左往右查找。
            index()与find()区别:index()没有找到会报错,find()没有找到返回-1
'''查找--->find ,index,rfind,lfind'''
path = 'https://www.bilibili.com/video/BV1R7411F7JV?p=32&spm_id_from=pageDriver&vd_source=b48454820a3fd825265eef66d6df4c82.gif'
i = path.find('_')  # 查找'_'的位置
i1=path.find('video')#查找多个字符,返回第一个字符的位置
print(i)
print(i1)
n = path[i + 1:]  # 第一个_后面所有内容
print(n)
print('----')
n1 = path.rfind('.')  # 从右往左找
print(path[n1:])
n2 = path.index('.')
print(path[n2:])
        (3).判断:返回值都是布尔类型
            startswith():判断是否以xxx开头,是返回True,不是返回False
            endswith():判断是否以xxx结尾,是返回True,不是返回False
'''
startswith,endswith介绍

'''
s = 'fdsgrgjoigUIHVnkhgyiif.2656.gif'
result1 = s.startswith('fds')  # 判断是否以xxx开头,是返回True,不是返回False
result2 = s.endswith('gif')  # 判断是否以xxx结尾,是返回True,不是返回False
print(result1)
print(result2)
'''
startswith,endswith对应小练习
  模拟文件上传,键盘输入上传文件的名称,判断文件名是否大于6位以上,扩展名是否是:.jpg,gif,png格式
  如果不是则提示上传失败,如果名字不满足条件,而扩展名满足条件则随机生成一个6位数字组成的文件名,打印成功上传xxxx.png
'''
1.
import random

name = input('输入图片文件名称:')
# 判断扩展名
if name.endswith('gif') or name.endswith('jpg') or name.endswith('png'):
    # 判断文件名字
    n = name.rfind('.')
    file = name[:n]  # 切片
    if len(file) < 6:
        # 随机生成名字
        filename = ''
        s = 'QHUJFUHSKHhfkhhuihja1234487685'
        for i in range(5):
            index = random.randint(0, len(s) - 1)  # 随机产生下标
            filename += s[index]  # 获取下标匹配的字母
        name = filename + name[n:]
    print('成功上传%s文件' % name)
else:
    print('文件格式错误!上传失败')
            isalpha():判断全部由字母组成
            isdigit():判断全部由数字组成
            isalnum():判断全部由字母,数字组成
            isspace():判断是否是空白字符串
            isupper():判断是否为大写字母
            islower():判断是否为小写字母
'''
isalpha,isdigit,isalnum,isspace,isupper,islower
'''
s = 'HELLO'
result = s.isalpha()  # 判断是否由字母组成
result1 = s.isupper()  # 判断是否为大写字母
result2 = s.islower()  # 判断是否为小写字母
print(result1)
print(result2)
print(result)
s = '100sc'
result = s.isdigit()  # 判断全部由数字组成
result1 = s.isalnum()  # 判断全部由字母,数字组成
print(result)
print(result1)
s = ' '
print(s.isspace())  # 判断是否是空白字符串
'''
isalpha,isdigit,isalnum,isspace,isupper,islower对应小练习---->登录
用户名或者手机号码+密码登录
用户名(admin):全部小写,首字母不能是数字,长度必须是6位以上
手机号码(12345678912):纯数字  长度11
密码(123456):必须是六位数字

以上符合条件则进入下层验证:
判断用户名+密码是否正确---->成功,失败
'''

flag = True
while flag:
    name = input('用户名/手机号:')
    # 判断
    if (name.islower() and name[0].isalpha() and len(name) >= 6) or (name.isdigit() and len(name) == 11):
        while True:
            # 验证密码
            password = input('密码:')
            if password.isdigit() and len(password) == 6:
                # 验证
                if (name == 'admin123' or name == '12345678912') and password == '123456':
                    print('用户登录成功!')
                    flag = False  # 控制循环  ,跳出外层循环
                    break
                else:
                    print('用户名或者密码有误!')
                    break  # 跳出密码循环
            else:
                print('密码必须是六位数字!')
    else:
        print('登录失败,请重新登录!')
        (4).计算出现次数:count()---->统计某个字符的个数
'''
计算出现次数:count
'''
path = 'https://www.bilibili.com/video/BV1R7411F7JV?p=32&spm_id_from=pageDriver&vd_source=b48454820a3fd82526'
n = path.count('i')  # 统计i出现的次数
print(n)
        (5).替换:replace(old,new,count)--->count默认为全部替换,可以通过count指定次数
'''
替换replce()
'''
s = '小花喜欢唱歌!'

print(s.replace('小花', '**', 1))#替换
        (6).切割
            split('分隔符','maxsplit'):maxsplit 最多分割的次数,默认值是全部分割。将分割后的内容放入一个列表容器中,返回结果为列表
            rsplit('分隔符','maxsplit'):类似上面,从右边开始分割
            splitlines():按行分割
            partition():
            rpartition():
'''
分割
'''
s = '小花 小丽 小军 小刘 小王'
result = s.split(' ')  # 将分割后的内容放入一个列表容器中
print(result)  # ['小花', '小丽', '小军']
result = s.rsplit(' ', 1)  # 从右边开始切一刀
print(result)  # ['小花 小丽', '小军']

s = '''小花喜欢唱歌!
小花喜欢唱歌!
小花喜欢唱歌!'''
result = s.splitlines()
print(result)

s = '小花 小丽 小军 小刘 小王'
result = s.partition(' ')
print(result)
        (7).修改大小写
            capitalize():第一个单词首字母大写
            title():将每个单词的首字母转大写
            upper():将字符串中所有字母转大写
            lower():将字符串中所有字母转小写
'''
修改大小写
'''
s = 'helLo world'
print(s.title())  # 将每个单词的首字母转大写
print(s.upper())  # 将字符串中所有字母转大写
print(s.lower())  # 将字符串中所有字母转小写
print(s.capitalize())  # 第一个单词首字母大写
        (8).空格处理
            添加空格:控制字符串的对齐方式
                ljust(X):给定X个字符,将内容左对其
                rjust(X):给定X个字符,将内容右对齐
                center(X):给定X个字符,将内容放在中央位置
            删除空格:删除字符串左侧或者右侧的空格
                lstrip():去掉左侧空格
                rstrip():去掉右侧空格
                strip():去掉左右两侧空格
'''
空格处理
'''
name = input('用户名:')
print(len(name))  # 当输入中有空格时也会被计数

s = '  admin  '
print(len(s))
result = s.strip()  # 去掉左右两侧空格
print(len(result))
print(result)
print('-----')
result1 = s.rstrip()  # 去除右侧空格,左侧类似
print(len(result1))
print(result1)
print('---')
s = 'hello world'
result = s.center(30)  # 取30个字符的中间
print(result)
result1 = s.ljust(30)  # 取30个字符的左侧
print(result1)
result2 = s.rjust(30)  # 取30个字符的右侧
print(result2)
        (9).字符串拼接:join
'''
字符串拼接
'''
s='hello'+'world'
print(s)
'''
字符串总练习----模拟论坛
'''
msg = input('发表一句话:')
print('-' * 50)
print('以下为回复内容:')
while True:
    # 输入用户名
    username = input('输入用户名:')
    while True:
        # 输入回复内容
        comment = input('评论:')
        comment = comment.strip()
        # 验证内容
        if len(comment) != 0:
            # 验证长度
            if len(comment) <= 20:
                # 是否存在敏感词汇
                comment = comment.replace('恶心', '**')
                print('{0}发表的内容是:{1}'.format(username, comment))
                break
            else:
                print('不能超出20字!')
        else:
            print('评论内容不能为空!')
    # 成功发出评论,否则重新输入
    pass
2.列表 []
    2.1 列表的介绍
        2.1.1 定义列表
            (1).空列表:名=[]
            (2).有内容的列表:['A','B'....]、[[],[],[]...]
        2.1.2 列表内容获取
            通过索引(获取),切片方式和字符串类似
'''
列表介绍
'''
list1 = []  # 空列表
print(list1)
list2 = ['牛奶', '面包', '辣条', '火腿肠']
print(list2[3])  # 获取列表中内容,同各国索引(下标)
print(list2[:2])  # 切片机制与字符串类似
    2.2 列表的增删改查
        2.2.1 列表的添加
            (1).append():在末尾添加元素
            (2).insert():在指定位置插入元素
            (3).extend():合并两个列表,作用同加号
                格式:a.extend(b)---->将b的内容放在a中
​
'''
列表添加

'''
list1 = []
list2 = ['面包']
list1.append('火腿肠')  # 在末尾添加元素
print(list1)
list1.append('酸奶')
list1.append('辣条')
print(list1)
list2.append('薯条')
print(list2)
# 整合----->加号可以用在数字,字符串,列表
# print(list1 + list2)
print('-----')
list1.extend(list2)  # 将list(2)添加到list1中
print(list1)

​
        2.2.2 列表的删除
            (1).pop(index):根据下标删除列表中的元素,注意索引范围。pop无参数时从后往前依次删除一个元素
            (2).remove():根据元素名称进行删除,当列表中有多个相同值,只删除第一个遇到的(从左往右),后面的元素不会被删除,与关键字in一起使用
            (3).clear():清空列表,还可继续添加
            (4).del  :会删除内存地址,不可继续添加
                格式:del 列表[位置] --> 根据下标位置删除。与pop类似
'''
列表的删除--->pop  remove  clear
'''
list1 = ['牛奶', '面包', '酸奶', '酸奶', '辣条', '火腿肠', '酸奶']
print(list1.pop(2))
print(list1)
print(list1.pop())  # pop()执行一次删除一个元素,默认从后往前删
print(list1)
list1.remove('辣条')  # 根据元素名称进行删除
print(list1)
# 判断是否存在要删除的元素---->
if '辣条啊' in list1:
    print('存在')
else:
    print('不存在')
删除列表重复元素
n = 0
while n < len(list1):
    if list1[n] == '酸奶':
        list1.remove('酸奶')
    else:
        n += 1
print(list1)
list1.clear()  # 清空列表所有内容
print(list1)
del list1[3]#根据下标位置删除
print(list1)
        2.2.3 列表的修改:
            insert(位置,元素):元素占了指定位置,其他元素只能往后移动
'''
列表的修改---->insert index
'''
list1 = [1, 2, 3, 4, 5]
# list1.insert(1, 8)  # insert(位置,元素)--->元素占了指定位置,其他元素只能往后移动
# print(list1)
weizhi = list1.index(3)  # 找到元素位置
list1[weizhi] = 8
print(list1)
print(list1.count(5))#寻找元素个数,
        2.2.3 列表的查找
            (1).index(元素):根据元素找到该元素的位置下标,返回值是下标位置
            (2).count(元素):寻找元素个数,如果返回值为0则不存在
    2.2 遍历列表
        2.2.1 sort():默认是升序,可以通过reverse来控制升序还是降序
                sort(reverse=True)---->True:倒序,False:升序
        2.2.2 reverse():对原有列表进行反转,无排序
'''
随机生成1-20之间的随机整数,保存到列表中,遍历打印
'''
import random

numbers = []
for i in range(8):
    ran = random.randint(1, 20)
    numbers.append(ran)
print(numbers)
numbers.reverse()  # 对原有列表进行反转,无排序
print(numbers)
print('----')
numbers.sort()  # 排序,默认是升序
print(numbers)
print('----')
numbers.sort(reverse=True)  # 倒序
print(numbers)
    2.3 列表嵌套
'''
买多件
商品名称:价格、数量
列表的嵌套---->列表添加
'''
flag = True
container = []
total = 0  # 商品的总价
numbers = 0  # 商品的总数量
while flag:
    # 添加商品
    name = input('商品名称:')
    price = input('商品价格:')
    number = input('商品数量:')
    goods = [name, price, number]
    # 将商品加入container
    container.append(goods)
    total += float(price) * int(number)
    numbers += int(number)
    answer = input('是否继续添加?(按Q或q退出)')
    if answer == 'q' or answer == 'Q':
        flag = False
# 遍历container
print('名称t价格t数量')
for goods in container:
    print('{}t{}t{}'.format(goods[0], float(goods[1]), int(goods[2])))
print('商品共{}件,总价是:{}元'.format(numbers, total))
'''
练习:
1.生成8个1-100之间的随机整数,保存到列表中
2.键盘输入一个1-100之间的整数,将整数插入到排序后的列表中(升降没有要求)
'''
# 练习1
import random

list = []
for i in range(8):
    ran = random.randint(1, 100)
    list.append(ran)
print(list)
# 练习2
list.sort()
print(list)
print('-----')
num = int(input('输入一个1-100之间的整数:'))
list.append(num)
list.sort()
print(list)
'''
冒泡排序
'''
num = [2, 54, 7, 33, 26, 1, 43, 8, 13, 4]
for j in range(0, len(num) - 1):
    for i in range(0, len(num) - 1 - j):
        if num[i] > num[i + 1]:
            a = num[i]
            num[i] = num[i + 1]
            num[i + 1] = a
print(num)
3.元组 ()
    空元组: 名=()
    有内容元组: 名=('元素',),名=('元素','元素',...)。如果元组中只有一个元素,必须添加逗号
    元组与列表相似,不同之处在于元组的元素不能修改(增删改),元组只能查看(count(),index())
        count('元素'):寻找元素个数,如果返回值为0则不存在
        index('元素',索引起始位置,索引结束位置(不包含)):返回为下标位置
    下标和切片同样适用--->注意下标不要越界
    list(tuple)---->元组转成列表
    tuple(list)---->列表转元组
'''
元组
'''
t1 = ()
print(type(t1))
t2 = ('aa')
print(type(t2))  # 
t2 = ('aa',)
print(type(t2))  # 
t2 = ('aa', 'bh')
print(type(t2))
# 下标和切片同样适用
t3 = ('a', 'b', 'c', 'd', 'a', 'g', 'a')
# print(t3[0])
# print(t3[1:])  # ('b', 'c', 'd')
# print(t3[::-1])  # 逆序
n = t3.count('a')
print(n)
print('-----')
index = t3.index('a', 1, 6)  # index('元素',索引起始位置,索引结束位置(不包含)),返回为下标位置
print(index)
'''
练习王者荣耀角色管理
角色:姓名,性别,职业
添加角色
删除角色
修改角色
查询角色  单个角色
显示所有角色
退出系统
'''
import random
import time

print('*' * 40)
print('t欢迎来到王者荣耀')
print('*' * 40)
role = input('请选择游戏人物:(1.鲁班 2.后裔 3.李白 4.孙尚香 5.貂蝉 6.诸葛亮)n')
coins = 1000
# 保存自己的武器容器
weapon_list = []

print('欢迎!{1}来到王者荣耀,当前金币有:{0}'.format(coins, role))
while True:
    choice = input('请选择:n1.购买武器 2.大战n 3.删除武器n 4.查看武器n 5.退出游戏n')
    if choice == '1':
        # 购买武器
        print('欢迎进入武器库:')
        # 列表放武器
        weapons = [['刀', 2000], ['枪', 200], ['大玩具', 250], ['剑', 600], ['手榴弹', 300], ['鹅毛扇', 600]]
        # 遍历武器库
        for weapon in weapons:
            print(weapon[0], weapon[1], sep='  ')
        # 提示输入要购买武器
        weapon_name = input('请输入要购买的武器名称:')
        # 1.原来有没有买过武器,2.输入的武器是否在武器库中
        if weapon_name not in weapon_list:
            # 输入的名称是否在武器库中
            for weapon in weapons:
                if weapon_name == weapon[0]:
                    # 购买武器
                    if coins >= weapon[1]:
                        coins -= weapon[1]
                        weapon_list.append(weapon[0])  # 添加到你自己的武器库中
                        print('{}购买武器:{}成功'.format(role, weapon_name))
                        break
                    else:
                        print('金币不足,赶快大战赚金币!')
                        break
                else:
                    print('输入武器名称错误!')
        else:
            print('已经拥有此武器!')
    elif choice == '2':
        # 大战  假设你有多个武器
        print('进入战场....')
        # 判断是否有武器
        if len(weapon_list) > 0:
            # 选择武器
            print('{}拥有的武器如下:'.format(role))
            for weapon in weapon_list:
                print(weapon)
            while True:
                weapon_name = input('请选择:')
                #
                if weapon_name in weapon_list:
                    # 选择的武器在自己的武器库中,开始对战,默认和张飞对战
                    ran1 = random.randint(1, 30)
                    ran2 = random.randint(1, 30)
                    if ran1 > ran2:
                        print('此局对战:张飞胜利!!')
                    elif ran1 < ran2:
                        coins += 200
                        print('此局对战:{0}胜利,目前金币是:{1}'.format(role, coins))

                    else:
                        print('此局平局,可以再次对战!'.format(role))

                    break

                else:
                    print('选择的武器不存在,请重新选择!')
            # 随机判断输赢
        else:
            print('还没有购买武器,赶快使用购买武器!')
    elif choice == '3':
        # 删除武器
        # 判断是否有武器
        print('武器太多,请扔几个....')
        if len(weapon_list) > 0:
            print('{}拥有的武器如下:'.format(role))
            for weapon in weapon_list:
                print(weapon)
            # 请选择要删除的武器
            while True:
                weapon_name = input('请选择要删除的武器名称')
                if weapon_name in weapon_list:
                    # 删除武器  remove(obj)  pop(index) clear  del_weapon_list[index]
                    weapon_list.remove(weapon_name)
                    # 思考  归还金币
                    # print(weapons)
                    # 遍历总的武器库
                    for weapon in weapons:
                        if weapon_name == weapon[0]:
                            coins += weapon[1]
                            break
                        else:
                            pass
                    break

                else:
                    print('输入武器名称有误!')
        else:
            print('你都没有武器,还多吗?   赶快购买去吧!')
    elif choice == '4':
        # 遍历武器
        print('{}拥有的武器如下:'.format(role))
        for weapon in weapon_list:
            print(weapon)
        print('总金币有:{}'.format(coins))
    elif choice == '5':
        # 退出游戏
        answer = input('确定要离开王者荣耀游戏吗?(y or Y/n)')
        if answer == 'y' or answer == 'Y':
            print('正在离开王者荣耀!')
            time.sleep(2)
            print('欢迎下次进入王者荣耀!')
            break
    else:
        print('输入错误,请重新选择')
4.字典 {}
    4.1 定义
        空字典:dict={}
        带值字典:dict={'参数':值','..':'..'...}
        元素:键值对  注意:键是唯一的,值允许重复
        下标或者切片不存在
'''
字典:{}
'''
dict1 = {}
print(dict1)
dict2= {'名字': '小丽', '年龄': 18}  # {'名字': '小丽', '年龄': 18}
print(dict2)
dict3 = dict([('name', 'lucky'), ('age', 18)])
print(dict3)
    4.2 操作
        4.2.1 添加,修改元素:
            字典名[key]=value ----->是添加还是修改,看字典中键是否存在,若存在,为修改,否则为添加
            注意:key是唯一的,所以在添加的时候如果出现同名的key,后面key对应的value则替换原来的
'''
字典:{}
'''
dict1 = {}
print(dict1)
dict2= {'名字': '小丽', '年龄': 18}  # {'名字': '小丽', '年龄': 18}
print(dict2)
dict3 = dict([('name', 'lucky'), ('age', 18)])
print(dict3)
'''
字典的增加,修改
'''
dict1 = {}
print(type(dict1))
dict1['name'] = '小丽'
print(dict1)
dict1['age'] = 18  # 添加元素
dict1['sex'] = '女'
print(dict1)  # {'name': '小丽', 'age': 18, 'sex': '女'}
# 修改值:键 可以添加,删除,不能修改,只能改变值
dict1['age'] = 21  # 修改元素
print(dict1)
'''
字典添加与修改练习:
book={}
书名,价格,作者,出版社
促销:价格折扣8折
打印最终字典中的内容
'''
book = {}
# 添加
book['书名'] = '狂人日记'
book['价格'] = 30
book['作者'] = '鲁迅'
book['出版社'] = '人民出版社'
print(book)
# 修改价格
book['价格'] *= 0.8
print(book)
        4.2.2 删除
            clear():清空字典
            pop():根据Key删除键值对,返回key对应的value
            popitem():删除的最后一个键值对,返回值:(key,value)
            del 字典名['key']:删除key对应的键值对

'''
删除字典
'''
book = {'书名': '狂人日记', '价格': 24.0, '作者': '鲁迅', '出版社': '人民出版社'}
book.clear()  # {}  clear():清空字典
print(book)
r = book.pop('书名')  # pop():根据Key删除键值对,返回key对应的value
print(r)
print(book)
r = book.popitem()  # popitem():删除的最后一个键值对,返回值:(key,value)
print(r)
print(book)
del book['价格']  #del 字典名['key']:删除key对应的键值对
print(book)
'''
删除小练习
books=[{},{}]
book={}
书名,价格,作者,出版社
有两本书,删除每一本里面的出版社

'''
books = [{'书名': '狂人日记', '价格': 24.0, '作者': '鲁迅', '出版社': '人民出版社'},
         {'书名': '流浪地球', '价格': 30, '作者': '刘慈欣', '出版社': '教育出版社'}]
for book in books:  # book是一个字典
    book.pop('出版社')
print(books)
        4.2.3 查询
            get('key','默认值'):根据key得到对应的value值,如果取不到,返回默认值
            dict['key']:取不到时会报错
    4.3  遍历
        如果使用for ..in 直接遍历字典,取出的是字典的key
        book.value():将字典中的所有的值取出来,将值存放在列表中
        book.keys():将字典中的键取出来
        book.items():成对取出,将一对放在元组里

'''
遍历与查询
'''
book = {'书名': '狂人日记', '价格': 24.0, '作者': '鲁迅'}
# value = book.get('书名','红楼梦')  # get('key','默认值'):根据key得到对应的value值,如果取不到,返回默认值
# print(value)

value = book['书名']  # 取不到时会报错
print(value)

# 遍历
for i in book:  # 如果使用for ..in 直接遍历字典,取出的是字典的key
    print(i)

# {'书名': '狂人日记', '价格': 24.0, '作者': '鲁迅', '出版社': '人民出版社'}
print(book.values())  # 将字典中的值取出来
for v in book.values():
    print(v)

print(book.keys())  # 将字典中的键取出来

print(book.items())  # 成对取出,将一对放在元组里
for i in book.items():
    print(i)

for k, v in book.items():
    print(k, v)

book.setdefault('出版社','人民教育出版社')#类似 添加 book[key]=value
print(book)
'''
字典大练习
books=[]--->可放多本书
书:{}
书名  作者  价格
添加三本书
不可添加同名书籍
'''
books = []
i = 0
while i < 3:
    dict1 = dict.fromkeys(['name', 'author', 'price'])
    name = input('输入书名:')
    # 判断书是否存在
    if name == dict1.get('name'):
        print('书名重复!')
        continue
    else:
        author = input('输入作者:')
        price = input('输入价格:')
        dict1['name'] = name
        dict1['author'] = author
        dict1['price'] = price
        books.append(dict1)
        i += 1
print(books)  # 结果为列表
5.集合
    5.1定义集合
        空集合:set()
        集合(set):是一个无序的不重复元素序列,使用{}或者set()函数创建
        特点:没有重复,无序的(没有下标);符号:{},花括号里为单独的元素,是集合
'''
集合
'''
set1 = {'zhangsan'}
print(type(set1))
# 去除重复元素
list = [1, 4, 2, 7, 4, 8, 4, 3, 7, 6, 2, 5]
set2 = set(list)
print(set2)
    5.2集合操作
        操作:add()
                set1.update(set2):将set2内容添加到set1中
'''
集合中添加元素
'''
set1 = set()  # 定义空集合
print(type(set1))
set1.add('快了')
print(set1)
print('----')
set2 = {'红楼梦'}
set1.update(set2)  # 将集合2的内容添加到集合1中
print(set1)
print(set2)
                remove():如果是集合中元素则删除,不是集合中元素则出错
                discard():不是元素也什么都不做
                del set():全删除
                clear():清空内容
                pop():随机删除集合中任意一个元素
set1={' bj5s', ' b53b', '565s', ' sg4d', ' gb64'}
set1.remove('565s')
print(set1)#{' b53b', ' bj5s', ' sg4d', ' gb64'}

set1.discard('567s')
print(set1)#{' b53b', ' sg4d', ' gb64', ' bj5s'}
        方法:
            集合的交集(set1|set2)---->intersection
            集合的并集(set1&set2)---->union
            集合的差集(set1-set2)---->difference
set2={1,2,3,4,6}
set3={2,3,4,8,9,7}
print(set2.intersection(set3))   #  集合的交集{2,3,4}
print(set3.union(set2))   #   并集{1, 2, 3, 4, 6, 7, 8, 9}
print(set3.difference(set2))  #  差集 {8, 9, 7}
print(set3|set2) # |  表示集合的并   {1, 2, 3, 4, 6, 7, 8, 9}
print(set3&set2) #  &  表示集合的交  {2,3,4}
print(set3-set2) # -  表示集合的差  {8, 9, 7}
'''
集合小练习
产生五组(不允许重复),字母与数字组成的验证码
'''
import random

code_list = set()
s = 'bfhb kgjbsjhb15634345gsdggsgs526njskg'
while True:
    code = ' '
    for i in range(4):
        # 方式一
        # r=random.choice(s)
        # code+=r
        # 方式二
        index = random.randint(0, len(s) - 1)
        code += s[index]
    # 将code添加到set中
    code_list.add(code)
    # 判断长度
    if len(code_list) == 5:
        break

print(code_list)
6.公共方法
list1 = [1, 2, 3, 4, 5, 9]
print(max(list1))  # 找最大值
print(min(list1))
print(sum(list1))  # 求和
print(abs(-1))  # 绝对值
# 对元组中进行排序...元组没有排序方法,只有列表有
t1 = (55, 63, 42, 1, 22, 62)
print(sorted(t1))  # 排序完返回一个新的列表,升序
print(sorted(t1, reverse=True))  # 降序
print(chr(95))  # 给定一ASCII码值返回对应字母
print(ord('a'))  # 给定字母返回ASCII码值
    符号:
        + (合并)  -->  主要用在字符串,列表,元组
        *  (复制) -->  主要用在字符串,元组 ,列表
        in  ---> 主要用在字符串,元组,列表,字典
        not in  -->主要用在字符串,元组,列表,字典
8.列表推导式
    列表推导式:最终结果是一个列表
    格式:1.[变量(最终的结果) for 变量 in 可迭代的变量]
         2.[i for i in 可迭代的 if 条件]
         3.[结果1 if 条件 else for 变量 in 可迭代的]
'''
列表推导式
小练习:1.请写出一段python代码实现分组一个list里面的元素,比如[1,2,3,..100]变成[[1,2,3],[4,5,6]...]
       2. 找出名字里面含有两个‘e’的放到新的列表中
       names=[['sdf','fergerg','sfsgrrd','egxdgre'],['sff','sgrerrr','fdsgbrtree']]
'''
if 5 > 3:
    print('--')
else:
    print('gaup''')

# 将1-20之间数字放到列表中
# 方法一-----》常规方法
list1 = []
for i in range(1, 21):  # 列表中是1到20
    list1.append(i)
print(list1)
# 方法二-----》:列表推导式
list1 = [i for i in range(1, 21)]  # 结果是1-20
print(list1)
list2 = [i + 2 for i in range(1, 10)]  # 先执行for循环,for循环的每个变量参与到i+3中来(每个数都加3),,i+3中内容即为列表内容,结果是3-11
print(list2)

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982058.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号