2018年11月25日 练习2
21、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,
li = ['alex', 'eric', 'rain']
li = ['alex', 'eric', 'rain'] v="_".join(li) print('21.用下划线组成字符串',v)
22、写代码,有如下列表,按照要求实现每一个功能
li = ['alex','eric','rain']
a.计算列表长度并输出
b.列表中追加元素 “seven”,并输出添加后的列表
c.请在列表的第1个位置插入元素 “Tony”,并输出添加后的列表
d.请修改列表第2个位置的元素为 “Kelly”,并输出修改后的列表
e.请删除列表中的元素 “eric”,并输出修改后的列表
f.请删除列表中的第2个元素,并输出删除的元素的值和删除元素后的列表
g.请删除列表中的第3个元素,并输出删除元素后的列表
h.请删除列表中的第2至4个元素并输出删除元素后的列表
i.请将列表所有的元素反转,并输出反转后的列表
j.请使用 for、len、range 输出列表的索引
k.请使用 enumrate 输出列表元素和序号(序号从 100 开始)
l.请使用 for 循环输出列表的所有元素
#21、请用代码实现:利用下划线将列表的每一个元素拼接成字符串, li = ['alex', 'eric', 'rain'] v="_".join(li) print('21.用下划线组成字符串',v) #22、写代码,有如下列表,按照要求实现每一个功能 li = ['alex','eric','rain'] #a.计算列表长度并输出 a=len(li) print("22a.计算列表长度并输出",a) #b.列表中追加元素 “seven”,并输出添加后的列表 li.extend(["seven"]) print ("22b.添加字符串",li) li.append("append用法") print("22b2.添加字符串2",li) #c.请在列表的第1个位置插入元素 “Tony”,并输出添加后的列表 li = ['alex','eric','rain'] li.insert(0,"tony") print("c.请在列表的第1个位置插入元素tony:\n",li) #d.请修改列表第2个位置的元素为 “Kelly”,并输出修改后的列表 li[1]="kelly" print("d.请修改列表第2个位置的元素为 kelly\n",li) # e.请删除列表中的元素 “eric”,并输出修改后的列表 li = ['alex','eric','rain','test'] li.remove("eric") print("e.请删除列表中的元素 “eric”",li) n=li.index('rain') li.pop(n) print("e2.请删除列表中的元素,通过先查找索引号: ",li) n=li.index("test") del li[n] print("e3.用del的方法删除",li) # f.请删除列表中的第2个元素,并输出删除的元素的值和删除元素后的列表 li = ['alex','eric','rain','test'] f=li.pop(1) print("f.pop用法",f,'\n',li) # g.请删除列表中的第3个元素,并输出删除元素后的列表 del li[2] print("g.del法或者pop法都可以实现删除第3个元素",li) # h.请删除列表中的第2至4个元素并输出删除元素后的列表 li = ['alex','eric','rain','test',112] del li[1:4] print ("h.请删除列表中的第2至4个元素",li) # i.请将列表所有的元素反转,并输出反转后的列表 li = ['alex','eric','rain','test'] n=len(li) nli=li.copy()#注意设置nli的长度 for i in li: nli[n-1]=i n=n-1 print("i.使用for循环将li反转",nli) li = ['alex','eric','rain','test'] nli2=[] n=len(li) i=0 while i<n : nli2.append(li[n-1-i]) i+=1 print("i2.使用while循环将li反转",nli2) li.reverse() print("i3.使用reverse循环将li反转",li) li = ['alex','eric','rain','test'] li3=li[n::-1] #注意vip 如果中间不填写则是全部输出,如果填写0 则还有1个剩下没有输出,就是中间数字对应的元素,前面的n也可以不填写 print("i4.使用索引+步长的方式直接反转",li3) # j.请使用 for、len、range 输出列表的索引 li = ['alex','eric','rain','test'] print('输出列表索引 for方法') for i in li: print(li.index(i),i) #list.index()列表有相同元素的,只是的获取(相同元素中的第一个元素)的索引 print("输出列表索引 len 方法 ")#如果列表内有相同的元素,不建议使用此方法 x=[] for i in li: print(len(x),i)#注意 len获取x列表的长度正好同索引号相同 x.append(i) print('输出列表索引 range方法') for i in range(len(li)): print(i,li[i]) # range用法回顾 # range() 函数可创建一个整数列表 # 参数说明: # start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5); # stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5 # step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1) # k.请使用 enumerate 输出列表元素和序号(序号从 100 开始 print("k.enumerate用法") for i,j in enumerate(li,start=100): print(i,j) # enumerate() # 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for 循环当中。 # 语法 enumerate(sequence, [start = 0]) # l.请使用 for 循环输出列表的所有元素 print("l.请使用 for 循环输出列表的所有元素:") for i in li: print(i)
23、写代码,有如下列表,请按照功能要求实现每一个功能
li=["hello",'seven',["mon",["h","kelly"],'all'],123,446]
a. 请输出 “Kelly”
b.请使用索引找到 'all'元素并将其修改为 “ALL”
li=["hello",'seven',["mon",["h","kelly"],'all'],123,446] # a. 请输出 “Kelly” a=li[2][1][1] print("23a输出kelly:",a) #b.请使用索引找到 'all'元素并将其修改为 “ALL” li[2][2]="ALL" print("23b.请使用索引找到 'all'元素并将其修改为 ALL\n",li)
24、写代码,有如下元组,按照要求实现每一个功能
tu=('alex','eric','rain')
a.计算元组长度并输出
b.获取元组的第2个元素,并输出
c.获取元组的第 1-2个元素,并输出
d.请使用 for 输出元组的元素
e.请使用 for、len、range 输出元组的索引
f.请使用 enumrate 输出元祖元素和序号(序号从 10 开始)
# 24、写代码,有如下元组,按照要求实现每一个功能 # a.计算元组长度并输出 tu=('alex','eric','rain') print("a.计算元组长度并输出",len(tu)) #b.获取元组的第2个元素,并输出 print("b.获取元组的第2个元素,并输出",tu[1]) # c.获取元组的第 1-2个元素,并输出 print("c.获取元组的第 1-2个元素,并输出",tu[0:2]) # d.请使用 for 输出元组的元素 print("d.请使用 for 输出元组的元素") for i in tu : print (" ",i) # e.请使用 for、len、range 输出元组的索引 print("e.请使用 for、len、range 输出元组的索引") for i in tu: print(' ',tu.index(i),i) z=() for i in range(len(tu)): print(' ',i,tu[i]) # f.请使用 enumerate 输出元祖元素和序号(序号从 10 开始) print("f.请使用 enumerate 输出元祖元素和序号(序号从 10 开始)") for i in enumerate(tu,start=10): print (' ',i)
25、有如下变量,请实现要求的功能
tu=("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44])
a.讲述元祖的特性
元祖有序且一级元素只读不可编辑
b.请问 tu 变量中的第一个元素 “alex” 是否可被修改?
不能
c.请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?
如果可以,请在其中添加一个元素 “Seven”
能修改
d.请问 tu 变量中的"k3"对应的值是什么类型?是否可以被修改?
如果可以,请在其中添加一个元素 “Seven”
tu=("alex",[11,22,{"k1":'v1',"k2":["age","name"],"k3":(11,22,33)},44]) print(type(tu[1][2]["k2"]))# 使用type类型分析K2是什么类型 tu[1][2]["k2"].append("seven") print(tu) print(type(tu[1][2]["k3"])) print('元祖类型不能编辑')
26、字典
dic ={'k1':"v1","k2":"v2","k3":[11,22,33]}
a.请循环输出所有的 key
b.请循环输出所有的value
c.请循环输出所有的 key 和 value
d.请在字典中添加一个键值对,"k4":"v4",输出添加后的字典
e.请在修改字典中 “k1” 对应的值为 “alex”,输出修改后的字典
f.请在 k3 对应的值中追加一个元素44,输出修改后的字典
g.请在 k3 对应的值的第1个位置插入个元素18,输出修改后的字典
dic ={'k1':"v1","k2":"v2","k3":[11,22,33]} print("a.请循环输出所有的 key") for i in dic.keys(): print (" ",i) print("b.请循环输出所有的value") for i in dic.values(): print(" ",i) print("c.请循环输出所有的 key 和 value") for i in dic.items(): print(" ",i) print("d.请在字典中添加一个键值对,k4:v4,输出添加后的字典") dic.update({"k4":"v4"}) print (" ",dic) dic = {'k1':"v1","k2":"v2","k3":[11,22,33]} dic["k5"]="用索引法添加新键值对"#直接用索引的方法添加新键值对 print (" ",dic) print("e.请在修改字典中 “k1” 对应的值为 “alex”,输出修改后的字典") dic.update(k1="alex") print(" ",dic)ic["k2"]="使用索引法直接修改"# 索引法直接修改 print(" ",dic) print("f.请在 k3 对应的值中追加一个元素44,输出修改后的字典") dic["k3"].append(44) print(" ",dic) print("g.请在 k3 对应的值的第1个位置插入个元素18,输出修改后的字典") dic["k3"].insert(0,18) print(" ",dic)
7、转换
a.将字符串 s="alex" 转换成列表
b.将字符串 s="alex" 转换成元祖
c.将列表 li =["alex","seven"]转换成元组
d.将元祖 tu =('Alex',"seven")转换成列表
e.将列表 li=["alex","seven"]转换成字典且字典的key按照10开始向后递增
print("a.将字符串转换成列表") s = "alex" new_s=list(s) print(new_s) print("b.将字符串 s=alex 转换成元祖") b=tuple(s) print(b) print("c.将列表 li =[alex,seven]转换成元组") li =["alex","seven"] c=tuple(li) print(c) print("d.将元祖 tu =(Alex,seven)转换成列表") tu =('Alex',"seven") d=list(tu) print(d) print("e.将列表 li=[alex,seven]转换成字典且字典的key按照10开始向后递增") li=["alex","seven"] e={} for i,j in enumerate(li,start=10):#注意enumerate的用法,应该只用于list+for循环 print(i,j) e.update({i:j})# e[i]=j 两种不同的写法 VIP #e.update(i=j)这个不能用,把i会默认字符串‘’i print(e)
28、转码
n="老男孩"
a.将字符串转换成 utf-8 编码的字节,并输出,然后将该字节再转换成 utf-8 编码字符串,再输出
b.将字符串转换成 gbk 编码的字节,并输出,然后将该字节再转换成 gbk 编码字符串,再输出
n="老男孩" #a.将字符串转换成 utf-8 编码的字节,并输出,然后将该字节再转换成 utf-8 编码字符串,再输出 a=n.encode("utf-8")#将字符串改成utf-8编码 print(a) e=a.decode("utf-8")#将原来的编码用utf-8解码 print(e) # encode() 方法以指定的编码格式编码字符串。errors参数可以指定不同的错误处理方案。 # encode()方法语法: # str.encode(encoding='UTF-8',errors='strict') # 参数 # encoding -- 要使用的编码,如: UTF-8,GBK。 # errors -- 设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。 # 返回值 # 该方法返回编码后的字符串,它是一个 bytes 对象 #b.将字符串转换成 gbk 编码的字节,并输出,然后将该字节再转换成 gbk 编码字符串,再输出 b=n.encode("GBK") print(b) c=b.decode("GBK") print(c) # decode() 方法以指定的编码格式解码 bytes 对象。默认编码为 'utf-8'。 # 语法 # decode()方法语法: # bytes.decode(encoding="utf-8", errors="strict") # 参数 # encoding -- 要使用的编码,如"UTF-8"。 # errors -- 设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。 # 返回值 # 该方法返回解码后的字符串。
29、求1-100内的所有数的和
s1=0 for i in range(1,101): s1=s1+i print("29a用for与range循环计算1~100的和",s1) s2=sum(range(1,101)) #注意sum能直接求range的和 print("29b用sum函数直接求range的和",s2)
30、元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90],
将所有大于66的值保存至字典的第一个 key中,
将小于66的值保存至第二个 key 的值中。
即:{'k1':大于 66 的所有值,'k2':小于66 的所有值}
a=[11, 22, 33, 44, 55, 66, 77, 88, 99, 90,12] a.sort() n=len(a) b={ "k1":1, "k2":2, } i=a.index(66) b["k1"]=a[i+1:n] b["k2"]=a[0:i] print("30.元素分类\n",b)
31、购物车
功能要求:
要求用户输入总资产,例如: 2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
goods = [
{"name":"电脑","price":1999},
{"name":"鼠标","price":10},
{"name":"游艇","price":20},
{"name":"美女","price":98},
print高级用法
print("a","b","c",sep="*",end='\t')
5//2 双斜杠代表整除取整