PYTHON字典 元祖 列表尝试应用
Posted chenansen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PYTHON字典 元祖 列表尝试应用相关的知识,希望对你有一定的参考价值。
1、 使用 join 方法将下划线添加到列表的每一个元素拼接成字符串,li = [‘alex‘, ‘eric‘, ‘rain‘]
li = [‘boom‘, ‘TNT‘, ‘zhadan‘] daying = "_".join(li) print(daying)
2、 查找列表中元素,移除每个元素的空格,并查找以 a 或 A 开头 并且以 c 结尾的所有元素。
li = ["alec", " aric", "Alex", "Tony", "rain"]
tu = ("alec", " aric", "Alex", "Tony", "rain")
dic = {‘k1‘: "alex", ‘k2‘: ‘ aric‘,"k3": "Alex", "k4": "Tony"}
将三个字段合并到一起 然后进行判断可节省代码量:
txts=li+list(tu)+list(dic.values) for txt in txts: print(txt.strip()) for txt in txts: txt.lower() if txt.startswith("a") and txt.endswith("c"): print(tu)
列表: []
li = [‘alex‘, ‘eric‘, ‘rain‘]
a.计算列表长度并输出 使用 len 函数即可
long =len(li)
b. 列表中追加元素 “seven”,并输出添加后的列表 使用 append 函数即可
li.append("seven")
c. 请在列表的第 1 个位置插入元素 “Tony”,并输出添加后的列表 使用 insert 函数即可
li.insert(0,"Tony")
d. 请修改列表第 2 个位置的元素为 “Kelly”,并输出修改后的列表 使用切片器修改
li[1]="kelly"
e. 请删除列表中的元素 “eric”,并输出修改后的列表 使用remove 专门查找删除
li.remove("eric")
f. 请删除列表中的第 2 个元素,并输出删除的元素的值和删除元素后的列表 使用 pop 函数
daying=li.pop(1) print(daying,li)
g. 请将列表所有的元素反转,并输出反转后的列表 使用 reverse 转置
li.reverse() print(li)
h. 请使用 enumrate 输出列表元素和序号(序号从 100 开始) 使用 enumerate 来导出序号
i=enumerate(li) print(i)
元组 ()
元组的大部分可用函数和列表并没有什么,主要的区别在于 元组的第一层元素不可变动,不可添加,不可删除。
字典{}
字典当中可使用的大部分函数也相同, 但是和元组、列表不一样的特点是 字典里面的内容是无序的,其他两个确是有序的。
dic = {‘k1‘: "v1", "k2": "v2", "k3": [11,22,33]}
使用 keys()、values() items() 可以分别输出 字典的 key、值和整个元素
使用 update 可以更新字典 如字典中无,则添加进去
dic.update(k4="v4") print(dic)
setdefault 也可以添加
dic.setdefault("k1","hah") print(dic)
使用 list() 、 tuple() 、dict() 、 可分别转换为 列表 元组 字典
布尔值是false的值的有:
0 {} [] () none “”
3、元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个 key 中,将小于 66 的值保存至第二个key 的值中。
这个是将数值保存到同一个位置中
lis=[11,22,33,44,55,66,77,88,99,90] dic={‘k1‘:0 ,‘k2‘:0 } for li in lis: if li > 66 : dic[‘k1‘]+=li if li <= 66 : dic[‘k2‘]+=li print(dic.items())
这个是将所有字段保存到同一个位置当中
lis=[11,22,33,44,55,66,77,88,99,90] dic={‘k1‘:"" ,‘k2‘:"" } for li in lis: if li > 66 : dic[‘k1‘]+=str(li) if li <= 66 : dic[‘k2‘]+=str(li) print(dic.items())
还有使用sort() 方法可以更加简洁
li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90] li.sort() #排序 z = li.index(66) l = len(li) dic = {"k1": li[z + 1:l], "k2": li[0:z]} print(dic)
4、输出商品列表,用户输入序号,显示用户选中的商品商品 li = ["手机", "电脑", ‘鼠标垫‘, ‘游艇‘]
a. 允许用户添加商品
b. 用户输入序号显示内容
li = ["手机", "电脑", ‘鼠标垫‘, ‘游艇‘] dic={} for i,v in enumerate(li,1): dic[i]=v while True: print(dic) xuanzeqi = input("添加商品请按+,精确显示商品请按*,退出请按q") if xuanzeqi == "+": shangping=input("请添加商品名称") i+=1 dic[i]=shangping elif xuanzeqi=="*": shangpinghaoma=int(input("请输入你想要精确显示的商品号码")) print(dic[shangpinghaoma]) elif xuanzeqi=="q": break
5、购物车
功能要求:
要求用户输入总资产,例如: 2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
goods = [ {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998}, ] zongjiager=2000 while True: print(goods) goumaizongjia = 0 shangping=input("请输入你想购买的商品名称,输入q退出购物") for good in goods: if good["name"] == shangping : pannduanzhi = zongjiager - good["price"] if pannduanzhi < 0 : print("您的余额不足,购买不成功您剩余金额为"+str(zongjiager)) else: goumaizongjia += good["price"] zongjiager-=goumaizongjia print("成功购买,您剩余金额为"+str(zongjiager)) if shangping == "q": print("谢谢光临") break
6、
用 Python 开发程序自动计算方案:
公鸡 5 文钱一只,母鸡 3 文钱一只,小鸡 3 只一文钱,用 100 文钱买 100 只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母
鸡,小鸡要买多少只刚好凑足 100 文钱
gongji_jiage=5 gongji_zuidashuliangs = range(1,21) muji_jiage = 3 muji_zuidashuliangs = range(1,34) xiaoji_jiage = 3 xiaoji_zhuidashuliangs = range(1,101) ls=[] for gongji_shuliang in gongji_zuidashuliangs: for muji_shuliang in muji_zuidashuliangs: for xiaoji_shuliang in xiaoji_zhuidashuliangs: if gongji_shuliang*gongji_jiage+muji_shuliang*muji_jiage+xiaoji_shuliang/xiaoji_jiage==100 and gongji_shuliang+ muji_shuliang+xiaoji_shuliang == 100: ls.append(("公鸡",gongji_shuliang,"母鸡",muji_shuliang,"小鸡",xiaoji_shuliang)) print(len(ls)) print(ls)
有一个大问题就是变量名称以后不能设置太长,不然这让既不方便阅读代码 也不方便 编写代码
7、用户交互显示 三级列表制作
a. 允许用户增加内容
b. 允许用户选择查看某一个级别内容
dic = {
"植物":
{"草本植物":
["牵牛花", "瓜叶菊", "葫芦", "翠菊", "冬小麦", "甜菜"],
"木本植物":
["乔木", "灌木", "半灌木", "如松", "杉", "樟"],
"水生植物":
["荷花", "千屈菜", "菖蒲", "黄菖蒲", "水葱", "再力花", "梭鱼草"]},
"动物":
{"两栖动物":
["山龟", "山鳖", "石蛙", "娃娃鱼", "蟾蜍", "龟", "鳄鱼", "蜥蜴", "蛇"],
"禽类":
["雉鸡", "原鸡", "长鸣鸡", "昌国鸡", "斗鸡", "长尾鸡", "乌骨鸡"],
"哺乳类动物":
["虎", "狼", "鼠", "鹿", "貂", "猴", "貘", "树懒", "斑马", "狗"]}}
kongzhiqi = True while kongzhiqi == True : print(dic.keys()) #一级菜单栏 panduan=input("请输入你想要进行的操作, 1:精确查看列表内容请输入c, 2:添加列表内容请输入b, 3:推出模块请输入q") #二级菜单栏 if panduan == "c": lb1=input("输入你要查看的列表名") while kongzhiqi == True : print(dic[lb1].keys()) panduan1 = input("请输入你想要进行的操作, 1:精确查看列表内容请输入c, 2:添加列表内容请输入b, 3:推出模块请输入q 4:输入h返回上级菜单") #三级菜单 if panduan1 == "c": lb2 = input("输入你要查看的列表名") while kongzhiqi == True : print(dic[lb1][lb2]) panduan2=input("请输入你想要进行的操作, 1:添加列表内容请输入b, 3:推出模块请输入q 4:输入h返回上级菜单") # 添加内容 if panduan2 == "b": txt = input("请输入你要添加的名称") dic[lb1][lb2].append(txt) # 返回上级列表 elif panduan2 == "h": break # 退出模块 elif panduan2 == "q": kongzhiqi = False print("成功退出") # 错误指令 else: print("请输入正确的指令") #添加内容 elif panduan1 =="b": txt = input("请输入你要添加的名称") dic[lb1].setdefault(txt) #返回上级列表 elif panduan1 == "h": break #退出模块 elif panduan1 == "q": kongzhiqi = False print("成功退出") #错误指令 else: print("请输入正确的指令") #添加内容 elif panduan == "b": txt= input("请输入你要添加的名称") dic.setdefault(txt) #退出模块 elif panduan == "q": kongzhiqi = False print("成功退出") #输入错误 else: print("请输入正确的指令")
上面这种三级列表的编辑方式知识单纯使用 if语句 和 while循环,但是代码的数量很大 基本上在每一成绩的列表下面都建立的对应的功能判断,这样对于代码的使用率太低。
如何解决这个问题,首先就是考虑如何将三级列表的功能选项 集合到一起, 让功能选择在深入到各级列表中都能使用。
这边有如下方法,由于查询的列表是一个字典,编辑查询时使用的是key属性,那么将key编成一个列表,并存储到一个新建的字段当中,并进行不断叠加,代码如下:
kongzhiqi = True key_case =[] while kongzhiqi : #解决三层控制器想要在同一段代码中实现而不冲突,最重要的就是 在不断循环选择过程中对文本字典当中的 Key 的叠加。 diejia = dic for key in key_case: diejia = diejia[key] print("当前所有子节点:",list(diejia.keys())," ") choice = input("请输入你想要进行的操作, 1:精确查看列表内容请输入c, 2:添加列表内容请输入b, 3:推出模块请输入q, 4:返回上一级请输入d") if choice.lower() == "c": chazhao = input("请输入要查看的列表名称") if chazhao in diejia: key_case.append(chazhao) else: print("该列表名不存在") elif choice.lower()== "b" : tianjia = input("请输入你要在此列表中添加的内容") if tianjia in diejia: print("该列表名已存在") else: diejia[tianjia] = {} elif choice.lower() == "d": if key_case : key_case.pop() else: print("已经是最高级了") elif choice.lower() == "q": kongzhiqi = False print("成功退出") else: print("请输入正确的指令")
经过了这么多题目的尝试过后,对于python编辑篇幅也越来越长, 在编辑过程中体验最深刻的就是python的一个代码缩进量的问题,python是靠缩进量来判断代码的层级等等,一开始还不熟悉 在缩进这个问题上耗费了许多时间,
还有就是代码注释问题,一定要添加注释,方便于自己检查代码和识别代码, 还有就是变量的名称问题,不太过于太长,这样对于变量的查看不利。
以上是关于PYTHON字典 元祖 列表尝试应用的主要内容,如果未能解决你的问题,请参考以下文章