(三)PYTHON字典 元祖 列表尝试应用

(三)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']+=liif 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]=vwhile True:print(dic)xuanzeqi = input("添加商品请按+,精确显示商品请按*,退出请按q")if xuanzeqi == "+":shangping=input("请添加商品名称")i+=1dic[i]=shangpingelif 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 = 0shangping=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-=goumaizongjiaprint("成功购买,您剩余金额为"+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 = Truewhile kongzhiqi == True :print(dic.keys())#一级菜单栏panduan=input("请输入你想要进行的操作,\n1:精确查看列表内容请输入c,\n2:添加列表内容请输入b,\n3:推出模块请输入q")#二级菜单栏if panduan == "c":lb1=input("输入你要查看的列表名")while kongzhiqi == True :print(dic[lb1].keys())panduan1 = input("请输入你想要进行的操作,\n1:精确查看列表内容请输入c,\n2:添加列表内容请输入b,\n3:推出模块请输入q\n4:输入h返回上级菜单")#三级菜单if panduan1 == "c":lb2 = input("输入你要查看的列表名")while kongzhiqi == True :print(dic[lb1][lb2])panduan2=input("请输入你想要进行的操作,\n1:添加列表内容请输入b,\n3:推出模块请输入q\n4:输入h返回上级菜单")# 添加内容if panduan2 == "b":txt = input("请输入你要添加的名称")dic[lb1][lb2].append(txt)# 返回上级列表elif panduan2 == "h":break# 退出模块elif panduan2 == "q":kongzhiqi = Falseprint("成功退出")# 错误指令else:print("请输入正确的指令")#添加内容elif panduan1 =="b":txt = input("请输入你要添加的名称")dic[lb1].setdefault(txt)#返回上级列表elif panduan1 == "h":break#退出模块elif panduan1 == "q":kongzhiqi = Falseprint("成功退出")#错误指令else:print("请输入正确的指令")#添加内容elif panduan == "b":txt= input("请输入你要添加的名称")dic.setdefault(txt)#退出模块elif panduan == "q":kongzhiqi = Falseprint("成功退出")#输入错误else:print("请输入正确的指令")

  上面这种三级列表的编辑方式知识单纯使用 if语句 和 while循环,但是代码的数量很大 基本上在每一成绩的列表下面都建立的对应的功能判断,这样对于代码的使用率太低。

  如何解决这个问题,首先就是考虑如何将三级列表的功能选项 集合到一起, 让功能选择在深入到各级列表中都能使用。

  这边有如下方法,由于查询的列表是一个字典,编辑查询时使用的是key属性,那么将key编成一个列表,并存储到一个新建的字段当中,并进行不断叠加,代码如下:

kongzhiqi = Truekey_case =[]while kongzhiqi :#解决三层控制器想要在同一段代码中实现而不冲突,最重要的就是 在不断循环选择过程中对文本字典当中的 Key 的叠加。diejia = dicfor key in key_case:diejia = diejia[key]print("当前所有子节点:",list(diejia.keys()),"\n")choice = input("请输入你想要进行的操作,\n1:精确查看列表内容请输入c,\n2:添加列表内容请输入b,\n3:推出模块请输入q,\n4:返回上一级请输入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 = Falseprint("成功退出")else:print("请输入正确的指令")

  经过了这么多题目的尝试过后,对于python编辑篇幅也越来越长, 在编辑过程中体验最深刻的就是python的一个代码缩进量的问题,python是靠缩进量来判断代码的层级等等,一开始还不熟悉 在缩进这个问题上耗费了许多时间,

还有就是代码注释问题,一定要添加注释,方便于自己检查代码和识别代码, 还有就是变量的名称问题,不太过于太长,这样对于变量的查看不利。

posted on 2018-08-19 20:47 痘疤脸 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/chenansen/p/9501798.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

定点数与浮点数的表示方法

计算机组成原理——定点数与浮点数 计算机中常用的数据表示格式有两种&#xff0c;一是定点格式&#xff0c;二是浮点格式。一般来说&#xff0c;定点格式容许的数值范围有限&#xff0c;要求的处理硬件比较简单。而浮点格式容许的数值范围很大&#xff0c;要求的处理硬件比较…

【剑指offer】面试题33:二叉搜索树的后序遍历序列

输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true。否则返回false。假设输入的数组的任意两个数字都互不相同。 代码&#xff1a; package offer; public class ti33 { static boolean VerifyTree(int nums[],int start,in…

AI 3.0》王飞跃教授推荐序——未来智能:人有人用,机有机用

☉ 王飞跃中国自动化学会监事长中国科学院自动化研究所复杂系统管理与控制国家重点实验室主任来源&#xff1a;德先生转自&#xff1a;中国自动化学会初见梅拉妮米歇尔之名&#xff0c;还是20世纪80年代末研究她与侯世达关于类比推理的开创性程序“Copycat”&#xff08;拷贝猫…

计算机组成原理——计算机系统的性能指标(机器字长、存储容量、运算速度)

计算机组成原理——计算机系统的性能指标 计算机系统的性能指标&#xff08;机器字长、存储容量&#xff0c;运算速度&#xff09;&#xff1a; 1. 吞吐量&#xff1a; 一台计算机在某一时间间隔内能够处理的信息量。 2. 响应时间&#xff1a; 从输入有效到系统产生响应之间…

【剑指offer】面试题34:二叉树中和为某一值的路径

输入一颗二叉树和一个整数&#xff0c;打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 代码&#xff1a; package offer; import java.util.ArrayList; class BineryTree1 { int val; Bine…

自动驾驶发展调查:产业化还需技术“破冰”

来源&#xff1a;机器学习研究组订阅/ 导读 /在汽车产业转入存量博弈时代的关键节点&#xff0c;出行领域的变革也随之蓄势待发。汽车制造厂商、出行平台以及科技公司纷纷抢滩自动驾驶赛道。作为一个处于发展初期的产业&#xff0c;自动驾驶从技术路线到落地场景&#xff0c;从…

计算机组成原理——机器字长、指令字长、存储字长

计算机组成原理——机器字长、指令字长、存储字长 字长&#xff1a; 字长&#xff1a; 一个字中的二进制位的位数&#xff0c;是计算机系统结构中的一个重要特性。字长在计算机结构和操作的多个方面均有体现。计算机中大多数寄存器的大小是一个字长。计算机处理的典型数值也可…

【剑指offer】面试题35:复杂链表的复制(Java 实现)

请实现函数ComplexListNode* Clone(ComplexListNode * pHead),复制一个复杂链表。在复杂链表中&#xff0c;每个结点除了有一个m_pNext指针指向下一个结点外&#xff0c;还有一个m_pSibling指向链表中的任意结点或者NULL。结点的C定义如下&#xff1a; struct ComplexListNode…

人类倾向于高估人工智能的进步,低估自身智能的复杂性-读《AI 3.0》

有很多关于人工智能的书。亚马逊网站上就有20,000本。其中很多书都有戏剧性的标题&#xff0c;比如《生命3.0》 &#xff0c;《终极算法》 &#xff0c;尤其是《奇点来临》。梅勒妮 米切尔的新书的标题更加谦虚&#xff0c;但是在我看来&#xff0c;在这个主题上&#xff0c;它…

计算机操作系统——死锁(产生的必要条件与处理死锁的四个关卡)

计算机操作系统——死锁 前言&#xff1a;死锁&#xff1a;指多个进程因竞争共享资源而造成的一种僵局&#xff0c;若无外力作用&#xff0c;这些进程都将永远不能再向前推进。如果死锁发生&#xff0c;会浪费大量的系统资源&#xff0c;甚至会导致系统崩溃。 关于死锁的结论…

【剑指offer】面试题36:二叉搜索树与双向链表(java)

输入一棵二叉搜索树&#xff0c;将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点&#xff0c;只能调整树中节点指针的指向。 代码&#xff1a; package offer; class BineryTreeNode { int val; BineryTreeNode left null; BineryTreeNo…

科学难题的形成

来源&#xff1a;肖建华科学网博客传统上&#xff0c;把科学理论分为两类&#xff1a;唯象性科学理论和哲学性科学理论。大致而言&#xff0c;工程科学是以具体现象类来划分学科&#xff0c;此类学科的理论一般称为唯象性理论。而把各学科的共性特征抽象出来作为研究对象而建立…

冯·诺依曼计算机特点

冯诺依曼计算机特点 冯诺依曼&#xff0c;20世纪最重要的数学家之一。在现代计算机、博弈论、核武器和生化武器等众多领域内有杰出建树的最伟大的科学全才之一&#xff0c;被后人称为“计算机之父”和“博弈论之父”。 一、冯诺依曼计算机结构&#xff08;以运算器为中心&…

计算机操作系统——经典进程的同步问题

计算机操作系统——信号量机制与经典进程的同步问题 信号量机制 随着发展&#xff0c;信号量从整型信号量经记录型信号量&#xff0c;进而发展为“信号量集”机制。 一般来说&#xff0c;信号量的值与相应的资源的使用情况有关。 信号量的值仅由P、V操作改变。 信号量的初值…

【剑指offer】面试题39:数组中出现次数超过一半的数字

数组中有一个数字出现的次数超过数组长度的一半&#xff0c;请找出这个数字。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 代码&#xff1a; class Solution { public int majorityElement(in…

2020年度全球人工智能十大事件

该文章内容转载自战略前沿技术当前&#xff0c;新一代人工智能技术在全球蓬勃兴起&#xff0c;迅猛发展&#xff0c;与大数据、区块链、5G等新技术相互融合、相互因应&#xff0c;为经济社会发展尤其是数字经济发展注入新动能&#xff0c;正在深刻改变社会生产生活方式。与此同…

一头扎进sql之多表操作

一、多表查询时NULL值处理 要求返回比"allen"工资低的所有员工select a.ename,a.conn from emp a where a.conn < (select b.conn from emp b where b.ename allen) ; 正确的写法应该是select a.ename,a.conn from emp a where coalesce(a.conn,0) < (se…

当贝叶斯,奥卡姆和香农一起来定义机器学习

来源&#xff1a;数学中国【导读】当贝叶斯、奥卡姆和香农一起给机器学习下定义&#xff0c;将统计学、信息理论和自然哲学的一些核心概念结合起来&#xff0c;我们便会会发现&#xff0c;可以对监督机器学习的基本限制和目标进行深刻而简洁的描述。令人有点惊讶的是&#xff0…

eclipse中下载spring-tool-suite插件遇到的问题

eclipse中下载spring-tool-suite插件遇到的问题 我的eclipse的版本4.7.0&#xff0c;接下来以下载我的eclipse的对应STS版本3.8.4为例&#xff0c;讲一下遇到的问题。不同版本的eclipse对应不同的spring-tool-suite&#xff0c;具体的版本对应可以去其他的博客中寻找&#xff…

python - 内置函数

enumerate 将一个可迭代/可迭代对象变成enumerate类型 利用for循环可以对enumerate类型获得索引和值 1 lis (星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期七) 2 ret enumerate(lis, 1) # enumerate 可以接受第二个参数&#xff0c; 用于指定索引起始值 3 4 fo…