day2-列表、元组、字典、字符串

1.列表(list)

names=['悟空','艾玛','克林','龟仙人','天津饭','饺子','乌龟']
print(names)

---》列表,然后打印。

names=['悟空','艾玛','克林','龟仙人','天津饭','饺子','乌龟']# list section
section1=names[0] #下标从0开始
#print(section1) #结果为'悟空'seciton2=names[1:5] #取下标1至下标5之间的切片,包括1,但不包括5
#print(seciton2) #['艾玛', '克林', '龟仙人', '天津饭']section3=names[1:-1] #取下标1至下标-1(乌龟)之间的切片,包括1,但不包括-1
#print(section3) #['艾玛', '克林', '龟仙人', '天津饭', '饺子']####以下是两种从头截取#####
section4=names[0:3] #从头截取,到下标3位置,不包括3
section5=names[:3] #从头截取,到下标3位置,不包括3
#print(section4) #['悟空', '艾玛', '克林']
#print(section5) #['悟空', '艾玛', '克林']####以下试试截取到末尾#####
section6=names[3:] #从3截取到末尾
#print(section6) #['龟仙人', '天津饭', '饺子', '乌龟']
section7=names[3:-1] #不包括-1,所以这样无法截取到末尾
#print(section7) #['龟仙人', '天津饭', '饺子']####加大运动量,我要跳着前进#####
section8=names[0::2] #从头到尾,隔一取一
#print(section8) #['悟空', '克林', '天津饭', '乌龟']
section9=names[::2] #效果同上
#print(section9) #['悟空', '克林', '天津饭', '乌龟']section10=names[:] #all
print(section10) #['悟空', '艾玛', '克林', '龟仙人', '天津饭', '饺子', '乌龟']

---》以上为截取示例。

#############接下来试试增、删、改################

names=['悟空','艾玛','克林','龟仙人','天津饭','饺子','乌龟']# 新增
# names.append('比克大魔王') #我大魔王来了,哈哈哈
# print(names) #['悟空', '艾玛', '克林', '龟仙人', '天津饭', '饺子', '乌龟', '比克大魔王']
# names.insert(3,'安琪') #龟仙人,美女来了。。。
# print(names) #['悟空', '艾玛', '克林', '安琪', '龟仙人', '天津饭', '饺子', '乌龟', '比克大魔王']#修改
# names[2]='贝吉塔' #离我家艾玛远一点
# print(names) #['悟空', '艾玛', '贝吉塔', '龟仙人', '天津饭', '饺子', '乌龟']#删除
# del names[-2] #饺子被吃掉啦。。。
# print(names) #['悟空', '艾玛', '克林', '龟仙人', '天津饭', '乌龟']
# names.remove('龟仙人') #走开好色仙人
# print(names) #['悟空', '艾玛', '克林', '天津饭', '饺子', '乌龟']
# names.pop() #可怜的乌龟,没存在感,消失了都没人知道
# print(names) #['悟空', '艾玛', '克林', '龟仙人', '天津饭', '饺子']

#############扩展、拷贝、统计、排序&反转################

#扩展
kids=['悟饭','特兰克斯','撒旦']
names.extend(kids) #熊孩子来
print(names) #['悟空', '艾玛', '克林', '龟仙人', '天津饭', '饺子', '乌龟', '悟饭', '特兰克斯', '撒旦']#拷贝(浅浅的copy,后面会介绍deepcopy)
n_copy=names.copy()
n_copy[0]='大圣'
names[0]='至尊宝'
print('n_copy:',n_copy)
print('names:',names)#统计,只统计第一层
name_count=names.count('乌龟')
print(name_count)#排序
names[-1]='1'
names[-2]='b'
names[-3]='@'
names.sort()
print(names)#反转
names.reverse()
print(names)

#############列表循环、获取下标################

#列表循环
for n in names:print(n)#获取下标(只返回找到的第一个下标)
name=names.index('克林')
print(name)

#############我要深深的copy################

names=['悟空','艾玛','克林','龟仙人','天津饭','饺子','乌龟']#拷贝
# n_copy=names.copy()
# n_copy[0]='大圣'
# names[0]='至尊宝'
# print('n_copy:',n_copy)
# print('names:',names)# immortals=['天神','界王','大界王','界王神','乌龟']
# names.insert(1,immortals)
#print(names)
########套了一层列表,继续试试copy###########
# n_copy=names.copy()
# names[0]='至尊宝' #一层正常copy
# names[1][0]='bobo' #修改二层列表,打印看看,咋都变了呢?
# n_copy[1][0]='喵喵' #修改二层列表,打印看看,咋都变了呢?
# print('n_copy:',n_copy)
# print('names:',names)
#####浅copy,只复制一层,子列表未被复制一份,所以一个修改后,两者都变,可以理解为指向同一内存地址########我想深深的copy咋整?############
# import copy
# n_copy=copy.deepcopy(names)
# names[1][0]='bobo' #deepcopy,达到了想要的效果
# n_copy[1][0]='喵喵' #deepcopy,达到了想要的效果
# print('n_copy:',n_copy)
# print('names:',names)

 

2.元组(tuple)

names=('悟空','艾玛','克林','龟仙人','天津饭','饺子','乌龟','饺子')
name_count=names.count('饺子') #tuple count
name_index=names.index('天津饭') #tuple index
print(names) #('悟空', '艾玛', '克林', '龟仙人', '天津饭', '饺子', '乌龟', '饺子')
print('count:',name_count) #count: 2
print('index of 天津饭:',name_index) #index of 天津饭: 4# tuple loop
for n in names:print(n)

---》使用类似列表

3.字典(dict)

'''
字典特性
1.dict是无序的
2.key值必须是唯一的
'''
infos={
'stu1101':'TengLan Wu',
'stu1102':'LuoLa LongZe',
'stu1103':'MaryYa XiaoZe'
}
info=infos['stu1101'] #key-value取值
infos['stu1104']='Jinkong Cang' #新增元素
infos['stu1101']='武藤兰' #修改
#infos.pop('stu1104') #标准删除姿势
#del infos['stu1104'] #换个姿势删除
#infos.popitem() #随机删除一个

#标注查找
# if 'stu1101' in infos:
# print('Yes,it is exsit.')
# else:
# print('not exsit')

#获取
# print(infos.get('stu1101')) #获取
# print(infos['stu1101']) #同上
##########But,if key is non-exsitent!#############
# print(infos.get('stu1106')) #stu1106不存在,返回none
# print(infos['stu1106']) #会报错KeyError: 'stu1106'

---》最简单的字典

#多级字典嵌套及操作
addresses={'江苏':{'徐州':{'铜山':{'汉王':{},'大庙':{},'大彭':{}},'泉山':{'Town1': {},'Town2': {},'Town3': {}},'鼓楼':{}},'南京':{},'苏州':{}},'北京':{},'上海':{}
}# #第一层
# print('--------L1--------')
# for province in addresses:
#     print(province)
# #第二层
# print('--------L2--------')
# for city in addresses['江苏']:
#     print(city)
# #第三层
# print('--------L3--------')
# for district in addresses['江苏']['徐州']:
#     print(district)
# #第四层
# print('--------L4--------')
# for town in addresses['江苏']['徐州']['铜山']:
#     print(town)###############下面来实现多级菜单#####################
exit_flag=False
while not exit_flag:for province in addresses:print(province)choice_province=input('choice province--->>')if choice_province in addresses:while not exit_flag:for city in addresses[choice_province]:print(city)choice_city=input('choice city--->>')if choice_city in addresses[choice_province]:while not exit_flag:for district in addresses[choice_province][choice_city]:print(district)choice_district=input('choice district--->>')if choice_district in addresses[choice_province][choice_city]:while not exit_flag:for town in addresses[choice_province][choice_city][choice_district]:print(town)last_level=input('this is the last level--->>')if last_level=='b':breakelif last_level=='q':exit_flag=Trueelse:print('enter b/q')else:if choice_district == 'b':breakelif choice_district == 'q':exit_flag = Trueelse:print('enter b/q')else:if choice_city == 'b':breakelif choice_city == 'q':exit_flag = Trueelse:print('enter b/q')else:if choice_province == 'b':breakelif choice_province == 'q':exit_flag = Trueelse:print('enter b/q')

---》多级字典嵌套及操作,循环打印三级菜单

 

4.字符串(string)

#string
var1='Hello World!'
# print(var1)
# print(var1[0])
# print(var1[-1])
# print(var1[:])#不可修改--如下(TypeError: 'str' object does not support item assignment)
# var1[0]='HH'
# print(var1)# name1='albert'
# print(name1.capitalize()) #首字母大写
# name2='Tom'
# print(name2.casefold()) #首字母小写
# name3='Spring'
# print(name3.center(20,'-')) #共20个字符,name3放中间
# name4='my name is nidaye'
# print(name4.count('i')) #统计字符串中‘’的个数
# print(name4.encode()) #将字符串编码改成bytes格式
# print(name4.endswith('ye')) #判断字符串name4是否以‘ye’结尾,是返回True
# print('Alex\tli'.expandtabs(20)) #'\t'位置以20个空格填充
# print(name4.find('m')) #返回第一个找回的‘m’,找到返回其索引,否则返回-1#字符串传参的若干种方法
# msg1='my name is %s, and age is %d' %('tony1',11)
# print(msg1)
# msg2='my name is {}, and age is {}'.format('tony2',22)
# print(msg2)
# msg3='my name is {name}, and age is {age}'.format(name='tony3',age=33)
# print(msg3)
# msg4='my name is {0}, and age is {1}'.format('tony4',44)
# print(msg4)#字典传值
# msg5='my name is {name}, and age is {age}'.format_map({'name':'tony5','age':55})
# print(msg5)
# print(msg5.index('n')) #返回第一个'n'所在的索引
# print(msg5.partition('is')) #把‘is’、‘is’之前、‘is’之后,作为元组的三个元素,构成一个元组?
# print(msg5.replace('m','M',1)) #把第一个'm',改为'M'
#
# print('9'.isdigit()) #判断一个字符串是否为数字
# print(msg5.isalnum()) #判断一个字符串是否为数字和字母
#
# print('|'.join(['n','d','y']))
#
# intab='aeiou' #this is the string having actual characters.真实
# outtab='12345' #this is the string having corresponding mapping character.映射
# trantab=str.maketrans(intab,outtab) #建立对应关系
#
# str='This is the string example...wow'
# print(str.translate(trantab)) #以映射数字替换相应字母name5='NiDaYe'
# print(name5.swapcase()) #大小写变换
# print(name5.zfill(20)) #打印20个字符,不够以0填充
#
# print(name5.rjust(20,'-')) #共20个字符,右对齐,不够左侧填充‘-’
# print(name5.ljust(20,'-')) #共20个字符,左对齐,不够右侧填充‘-’
#
# print(name5.isidentifier()) #判断一个字符串是否符合命名规则

 

5.简易购物车

product_list=[('Ipone',5000),('Coffee',35),('Bike',2000),('Book',50),('Mac pro',9800),('Watch',500)
]
#print(product_list[0][1])
#print(len(product_list))
cart=[]
salary=input('enter you salary--->>')
if salary.isdigit():salary=int(salary)while True:for index,item in enumerate(product_list):print(index,item)choice_product=input('choice you product--->>')if choice_product.isdigit():choice_product=int(choice_product)if choice_product>=0 and choice_product<len(product_list):salary=salary-product_list[choice_product][1]if salary>0:cp_item=product_list[choice_product]cart.append(cp_item)print('you have choice %s to you cart,you current balance is %d'%(cp_item,salary))else:print('没钱买个毛线啊!')elif choice_product=='q':for i in cart:print('you cart:',i)print('you current balance is:',salary)exit()else:print('enter num')
else:input('enter num')

  

 

转载于:https://www.cnblogs.com/zhuyiqiang/p/8671400.html

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

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

相关文章

开漏输出、推挽输出的区别

推挽输出:可以输出高,低电平,连接数字器件。 输出 0 时&#xff0c;N-MOS 导通&#xff0c;P-MOS 高阻&#xff0c;输出0。 输出 1 时&#xff0c;N-MOS 高阻&#xff0c;P-MOS 导通&#xff0c;输出1&#xff08;不需要外部上拉电路&#xff09;。 开漏输出:输出端相当于三极管…

罗马数字

古罗马帝国开创了辉煌的人类文明&#xff0c;但他们的数字表示法的确有些繁琐&#xff0c;尤其在表示大数的时候&#xff0c;现在看起来简直不能忍受&#xff0c;所以在现代很少使用了。之所以这样&#xff0c;不是因为发明表示法的人的智力的问题&#xff0c;而是因为一个宗教…

汇编 --- 从磁盘(扇区2到18)上读取数据到内存中

下面代码读取柱面:0,磁头:0,扇区从2到18的数据到内存 0x8200~0xa3ff处 需要明白以下几点: 给定柱面,磁头,一个扇形区域是512字节,对应的物理可以理解为512个灯泡组(一个灯泡组有8个小灯泡)确定读取到内存中的位置 为什么是0x8200:因为0x8000~0x81ff这512个字节要留给启动区.为…

那些值得思考的PHP问题

那些值得思考的PHP问题 1、关于弱类型 函数strpos是返回字符串str2在str1的位置&#xff0c;没有找到则返回false&#xff0c;然而如果在实际应用上返回的位置是0&#xff0c;在if语句中0也被当作false&#xff0c;所以我们需要对false做类型判断&#xff0c; $str1 yabadaba…

Lvs Tun隧道模式配置

######## TUN是IP Tunneling &#xff0c;IP隧道的简称&#xff0c;它将调度器收到的IP数据包封装在一个新的IP数据包中&#xff0c;转交给应用服务器&#xff0c;然后实际服务器的返回数据会直接返回给用户。 工作原理&#xff1a; 用户请求负载均衡服务器&#xff0c;当IP数…

mysql-常用sql

记录下工作中常用的sql 删除重复数据 delete from student where id not in (select min(id) from student group by name); -- 该语句在mysql下会报错&#xff0c; -- 执行报错&#xff1a;1093 - You cant specify target table student for update in FROM clause -- 原因是…

优雅的使用Laravel之phpstorm配置

优雅的使用Laravel之phpstorm配置 先打开一个Laravel 项目&#xff0c;然后在project tool 窗口选择根节点、然后右键->Composer | Init composer 。 如果你的电脑里没有composer.phar&#xff0c;可以点击链接来下载。然后点击项目 composer->add denpendency.. 搜索ba…

算法 --- 求两个集合的并集

const unionL (l1, l2)>{for(let i0; i <l1.length; i){if(l2.indexOf(l1[i]) -1){l2.push(l1[i])}}return l2 }let l1 [1,2,3,4]; let l2 [1,2,5]; console.log(unionL(l1,l2)); //[1, 2, 5, 3, 4]

java实验四——找鞍点

package hello;public class 实验四 {public static void main(String[] args) {// TODO Auto-generated method stubint[][] a {{9,8,6},{2,3,1},{8,5,2}};System.out.println("二维数组为&#xff1a;");for(int i0;i<a.length;i){for(int j0;j<a[i].length;…

BZOJ 4551树题解

好吧&#xff0c;洛谷的数据比较水暴力就可以过。。。。&#xff08;而且跑到飞快&#xff09; 不过&#xff08;BZ水不过去&#xff09;还是讲讲正规的做法。 其实一眼可以看出可以树剖&#xff0c;但是&#xff0c;码起来有点麻烦。 其实有一种更简单的离线做法。 我们很容易…

es6 --- 使用Symbol保护私有变量

定义一个人物类 假设其属性有姓名和性别我们希望,性别在声明后就固定不变 传统方法 var Person (function(){var _gender ;function P(name, gender){this.name name;_gender gender;}P.prototype.getGender function(){return _gender;}return P; })();var p1 new Pe…

组合数

long long factorial(int n) {long long m 1;for(int i1;i<n;i)m*i;return m; } long long C(int n,int m) {return factorial(n)/(factorial(m)*factorial(n-m));//可能会溢出 } 正解&#xff1a; long long C(int n,int m) {if(m<n-m) m n-m;long long ans 1;for(in…

Mysql中的联合索引、前缀索引、覆盖索引

Mysql中的联合索引、前缀索引、覆盖索引 索引 索引是一种特殊的文件&#xff0c;它们包含着对数据表里所有记录的引用指针。更通俗的说&#xff0c;数据库索引好比是一本书前面的目录&#xff0c;能加快数据库的查询速度。 联合索引 又名复合索引&#xff0c;由两个或多个列…

LVM逻辑卷管理

什么是逻辑卷&#xff1f;因为可以将文件系统像卷一样伸长或缩短之故。 LVM做法&#xff0c;将几个物理分区或磁盘&#xff0c;通过软件组合成为一块看起来是独立的大磁盘&#xff08;VG&#xff09;&#xff0c;然后将这块大磁盘再经过分成可使用分区&#xff08;LV&#xff0…

es6 --- 自制迭代器

对象 对象如下 const obj {left: 100,top: 200 }不可迭代 for(let attr of obj){console.log(attr); }迭代规则 可迭代,所具有的属性[Symbol.iterator] 需要自己给obj添加迭代规则 obj[Symbol.iterator] () >{// 获取obj的所有键let keys Object.keys(obj);let len …

软件工程的实践项目课程的自我目标

对实践项目完成后学习到的能力的预期&#xff1a;这算是自己第一次参加的团队合作的软件实践吧&#xff0c;以前自己搞的小“玩意”&#xff0c;实难登大雅之堂&#xff0c;期待实践项目后--->1、自己的代码能力能够有较明显的提高&#xff0c;代码更加规范。 2、提升团队合…

[Shell] swoole_timer_tick 与 crontab 实现定时任务和监控

手动完成 "任务" 和 "监控" 主要有下面三步&#xff1a; 1. mission_cron.php&#xff08;定时自动任务脚本&#xff09;&#xff1a; <?php /*** 自动任务 定时器 (5s 执行).** swoole_timer_tick 解决秒级定时&#xff1b;* 如需调整&#xff0c;注意…

关于项目调研

一、柠檬时代app 1、作品内容&#xff1a; 该作品主要为每一所高校的大学生量身定制的手机生活助手&#xff0c;由您自主运营的校园手机客户端。开放的自定义平台&#xff0c;汇聚本校周边所有生活服务、外卖商家、娱乐休闲、新鲜事儿、知名社团、周边商铺、校园达人等栏目。 …

html 标签

html概述 超文本标记语言&#xff08;英语&#xff1a;HyperText Markup Language&#xff0c;简称&#xff1a;HTML&#xff09;是一种用于创建网页的标准标记语言。HTML是一种基础技术&#xff0c;常与CSS、JavaScript一起被众多网站用于设计令人赏心悦目的网页、网页应用程序…

es6 --- forEach的实现

forEach的第一个参数 接收回调函数 let a [a, b, c]; a.forEach((v, k ,s)>{console.log(v, k ,s);console.log(this); })v: valuek: keys: 代表数组a本身this指向当前函数执行所在的作用域,即window forEach的第二个参数. forEach第1个参数用于接收回调函数,第2个参数…