第二章节练习
列表练习题
1.创建一个空列表,命名为names,往里面添加old_driver,rain,jack,shanshan,peiqi,black_girl元素
>>> names ['old_drive', 'rain', 'jack', 'shanshan', 'peiqi', 'black_girl'] >>>
2.往names列表里black_girl前面插入一个alex
>>> names.insert(5,"alex") >>> names ['old_drive', 'rain', 'jack', 'shanshan', 'peiqi', 'alex', 'black_girl'] >>>
3.把shanshan的名字改成中文,珊珊
如何修改?忘记了
4.往names列表里rain的后面插入一个子列表,[oldboy,oldgirl]
>>> names.insert(2,["oldboy","oldgirl"]) >>> names ['old_drive', 'rain', ['oldboy', 'oldgirl'], 'jack', 'shanshan', 'peiqi', 'alex', 'black_girl'] >>>
5.返回peiqi的索引值
>>> names ['old_drive', 'rain', ['oldboy', 'oldgirl'], 'jack', 'shanshan', 'peiqi', 'alex' , 'black_girl'] >>> names.index("peiqi") 5 >>>
6.创建新列表[1,2,3,4,2,5,6,2],合并入names列表
extend 列表的合并
['old_drive', 'rain', ['oldboy', 'oldgirl'], 'jack', 'shanshan', 'peiqi', 'alex', 'black_girl'] >>> age_list=[1,2,3,4,2,4,6,3,2,7,2] >>> names.extend(age_list) >>> names ['old_drive', 'rain', ['oldboy', 'oldgirl'], 'jack', 'shanshan', 'peiqi', 'alex', 'black_girl', 1, 2 , 3, 4, 2, 4, 6, 3, 2, 7, 2] >>>
7.取出names列表中索引4-7的元素
>>> names ['old_drive', 'rain', ['oldboy', 'oldgirl'], 'jack', 'shanshan', 'peiqi', 'alex', 'black_girl'] >>> names[4:] ['shanshan', 'peiqi', 'alex', 'black_girl'] >>>
8.取出names列表中索引2-10的元素,步长为2
>>> names ['old_drive', 'rain', ['oldboy', 'oldgirl'], 'jack', 'shanshan', 'peiqi', 'alex', 'black_girl', 2, 3, 4, 5, 6] >>> names[2:11:2] [['oldboy', 'oldgirl'], 'shanshan', 'alex', 2, 4] >>>
9.取出names列表中最后3个元素
>>> names[-3:] [4, 5, 6] >>>
10.循环names列表,打印每个元素的索引值,和元素
names=['old_drive', 'rain', ['oldboy', 'oldgirl'], 'jack', 'shanshan', 'peiqi', 'alex', 'black_girl', 2, 3, 4, 5, 6] count=0 for i in names: print(count , i) count +=1
11.循环names列表,打印每个元素的索引值,和元素,当索引值为偶数是,把对应的元素改成-1
names=['old_drive', 'rain', ['oldboy', 'oldgirl'], 'jack', 'shanshan', 'peiqi', 'alex', 'black_girl', 2, 3, 4, 5, 6] count=0 for i in names: print(count , i) count +=1 if count %2==0: names[count]="-1"
12.names里有3个2,请返回第2个2的索引值,不要人肉数,要动态找(提示,找到第一个2的位置,在此基础上再找到第二个)
返回索引值 index
字典练习题
写代码,有如下字典,按照要求实现每一个功能。dic = {'k1':'v1','k2':'v2','k3':'v3'}
1.请循环遍历出所有的key
dic = {'k1':'v1','k2':'v2','k3':'v3'}
for k in dic:
print(k)
2.请循环遍历出所有的value
dic = {'k1':'v1','k2':'v2','k3':'v3'} for k in dic: print(dic[k])
3.请循环遍历初所有的KEY和VALUE
dic = {'k1':'v1','k2':'v2','k3':'v3'} for k in dic: print(k,dic[k])
4.请在字典中添加一个键值对,'k4':'v4',输出添加后的字典
dic = {'k1':'v1','k2':'v2','k3':'v3'} dic["k4"]="v4" print(dic)
5.请删除字典中键值对'k1','v1',并输出删除后的字典
dic = {'k1':'v1','k2':'v2','k3':'v3'} dic.pop("k1") print(dic)
6.请删除字典中键'k5'对应的键值对,如果字典中不存在键'k5',则不报错,并且让其返回none
dic = {'k1':'v1','k2':'v2','k3':'v3'} dic.pop("k5") if 'k5 'not in dic: print("none")
7.请获取字典中'k2'对应的值
dic = {'k1':'v1','k2':'v2','k3':'v3'} value=dic.get("k2") print(value)
8.请获取字典中'k6'对应的值,如果'k6'不存在,则不报错,并且让其返回Nnoe
dic = {'k1':'v1','k2':'v2','k3':'v3'} value=dic.get("k6") if "k6"not in dic: print("none") else: print(value)
9.现有dic2 = {'k1':'v111','a':'b'}请通过一行操作使dic2 = {'k1':'v1','k2':'v2','k3':'v3','a':'b'}
dic2 = {'k1':'v111','a':'b'} dic= {'k1':'v1','k2':'v2','k3':'v3','a':'b'} dic2.update(dic) print(dic2)
10.组合嵌套题,写代码,有如下列表,按照要求实现每一个功能 lis = [['k',['qwe',20,{'k1':['tt',3,'1']},89],'ab']]
10.1.将列表lis 中的'tt'变成大写(用两种方式)
upper() 将字符串中的小写字母转为大写字母
用法:str.upper()
lis = [['k',['qwe',20,{'k1':['tt',3,'1']},89],'ab']] #将列表lis 中的'tt'变成大写(用两种方式) #upper() list=lis[0][1][2].get('k1')[0].upper() print(list)
swapcase()
将字符串中的小写字母转为大写字母
lis = [['k',['qwe',20,{'k1':['tt',3,'1']},89],'ab']] #将列表lis 中的'tt'变成大写(用两种方式) #upper() list=lis[0][1][2].get('k1')[0].swapcase() print(list)
10.2.将列表中的数字3 变成字符串'100'(用两种方式)
lis = [['k',['qwe',20,{'k1':['tt',3,'1']},89],'ab']] #将列表中的数字3 变成字符串'100'(用两种方式) #upper() list=lis[0][1][2].get('k1')[1]='100' print(lis)
lis = [['k',['qwe',20,{'k1':['tt',3,'1']},89],'ab']] #将列表中的数字3 变成字符串'100'(用两种方式) #upper() list={'k1':['tt',100,'1']} lis[0][1][2].update(list) print(lis)
10.3 将列表中的字符串'1'变成数字101(用两种方式)
lis = [['k',['qwe',20,{'k1':['tt',3,'1']},89],'ab']] #将列表中的字符串'1'变成数字101(用两种方式) #upper() lis[0][1][2].get('k1')[2]=100 print(lis)
lis = [['k',['qwe',20,{'k1':['tt',3,'1']},89],'ab']] #将列表中的字符串'1'变成数字101(用两种方式) #upper() dic={'k1':['tt',101,'1']} lis[0][1][2].update(dic) print(lis)
11 按照要求实现以下功能:
现有一个列表li = [1,2,3,'a','b',4,'c'],有一个字典(此字典是动态生成的,你并不知道他里卖弄有多少键值对,所以
用dic = {}模拟此字典);现在需要完成这样的操作:如果该字典没有'k1'这个键,那就创建'k1'键和其对应的值(该键对应的值设置为空列表)
并将列表li 中的 索引为奇数的对应元素,添加到'k1'这个键对应的空列表中。如果该字典有'k1'这个键,且'k1'对应的value
是列表类型,那就将li中的索引为奇数的对应元素,添加到'k1'这个键对应的键中
第二章总结-练习
1、请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex', 'eric', 'rain']
li = ['alex','eric','rain'] li_1='_'.join(li) print(li_1)
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"}
知识点:
startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False
endsWith() 方法用于测试字符串是否以指定的后缀结束
li_tu=list(tu) li_dic=list(dic.values()) new_list=li+li_tu+li_dic for i in new_list: ret=i.strip() if (ret.startswith('a') or ret.startswith('A') or ret.endswith('c')): print(ret)
3、写代码,有如下列表,按照要求实现每一个功能
li=['alex', 'eric', 'rain']
a.计算列表长度并输出
li = ['alex','eric','rain'] print(len(li))
b.列表中追加元素“seven”,并输出添加后的列表
li = ['alex','eric','rain'] li.append('sever') print(li)
c.请在列表的第1个位置插入元素“Tony”,并输出添加后的列表
li = ['alex','eric','rain'] li.insert(0,'Tony') print(li)
d.请修改列表第2个位置的元素为“Kelly”,并输出修改后的列表
li = ['alex','eric','rain'] li[1]='Kelly' print(li)
e.请删除列表中的元素“eric”,并输出修改后的列表
li = ['alex','eric','rain'] del li[1] print(li)
f.请删除列表中的第2个元素,并输出删除的元素的值和删除元素后的列表
li = ['alex','eric','rain'] print(li,li.pop(1) )
g.请删除列表中的第3个元素,并输出删除元素后的列表
li = ['alex','eric','rain'] del li[2] print(li)
h.请删除列表中的第2至4个元素,并输出删除元素后的列表
li= ['alex','eric','rain','Tony'] del li[1:] print(li)
i.请将列表所有的元素反转,并输出反转后的列表
li= ['alex','eric','rain','Tony'] del li[1:] print(li)
j.请使用for、len、range输出列表的索引
li= ['alex','eric','rain','Tony'] for i in range(len(li)): print(i)
k.请使用enumrate输出列表元素和序号(序号从100开始)
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
li= ['alex','eric','rain','Tony'] print(list(enumerate(li,start=100)))
l.请使用for循环输出列表的所有元素
li= ['alex','eric','rain','Tony'] for i in li: print(i)
4、写代码,有如下列表,请按照功能要求实现每一个功能
li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
- 请根据索引输出“Kelly”
- 请使用索引找到'all'元素并将其修改为“ALL”,如:li[0][1][9]...
li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446] print(li[2][1][1])
li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446] li[2][2]='ALL' print(li)
5、写代码,有如下元组,请按照功能要求实现每一个功能
tu=('alex', 'eric', 'rain')
- 计算元组长度并输出
- 获取元组的第2个元素,并输出
- 获取元组的第1-2个元素,并输出
- 请使用for输出元组的元素
- 请使用for、len、range输出元组的索引
- 请使用enumrate输出元祖元素和序号(序号从10开始)
6、有如下变量,请实现要求的功能
tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11,22,33)}, 44])
- 讲述元祖的特性
- 请问tu变量中的第一个元素“alex”是否可被修改?
- 请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven”
- 请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个元素“Seven”
a 特性: 1.可存放多个值; 2.不可变; 3.按照从左到右的顺序定义元组元素,下标从0开始顺序访问,有序
b 不可被修改。
c k2对应的值是列表,可以被修改。
d k3对应的是元组,不能被修改。
7、字典
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]}
- 请循环输出所有的key
- 请循环输出所有的value
- 请循环输出所有的key和value
- 请在字典中添加一个键值对,"k4": "v4",输出添加后的字典
- 请在修改字典中“k1”对应的值为“alex”,输出修改后的字典
- 请在k3对应的值中追加一个元素44,输出修改后的字典
- 请在k3对应的值的第1个位置插入个元素18,输出修改后的字典
a.
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]} for k in dic: print(k)
b.
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]} for k in dic.values(): print(k)
c.
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]} for k,v in dic: print(k,v)
d.
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]} dic['k4']='v4' print(dic)
e.
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]} dic['k1']='alex' print(dic)
f.
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]} dic['k3'].append(44) print(dic)
g.
dic = {'k1': "v1", "k2": "v2", "k3": [11,22,33]} dic['k3'].insert(0,44) print(dic)
8.转换
- 将字符串s = "alex"转换成列表
- 将字符串s = "alex"转换成元祖
- 将列表li = ["alex", "seven"]转换成元组
- 将元祖tu = ('Alex', "seven")转换成列表
- 将列表li = ["alex", "seven"]转换成字典且字典的key按照10开始向后递增
- 8888
a.
s='alex' s=list(s) print(s)
b.
s = "alex" s=tuple(s) print(s)
c.
li = ["alex", "seven"] li=tuple(li) print(li)
d.
tu = ('Alex', "seven") tu=list(tu) print(tu)
e.
li = ["alex", "seven"] dic={} for k,v in enumerate(li,10): dic[k]=v print(dic)
enumerate() 方法
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) # 下标从 1 开始 [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
9、元素分类
有如下值集合[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。
即:{'k1':大于66的所有值, 'k2':小于66的所有值}
10、输出商品列表,用户输入序号,显示用户选中的商品
商品li = ["手机", "电脑", '鼠标垫', '游艇']
- 允许用户添加商品
- 用户输入序号显示内容
11、用户交互显示类似省市县N级联动的选择
- 允许用户增加内容
- 允许用户选择查看某一个级别内容
12、列举布尔值是False的所有值
13、有两个列表
l1 = [11,22,33]
l2 = [22,33,44]
- 获取内容相同的元素列表
- 获取l1中有,l2中没有的元素列表
- 获取l2中有,l1中没有的元素列表
- 获取l1和l2中内容都不同的元素
14、利用For循环和range输出
- For循环从大到小输出1 - 100
- For循环从小到到输出100 - 1
- While循环从大到小输出1 - 100
- While循环从小到到输出100 - 1
15、利用for循环和range输出9 * 9乘法表
16、求100以内的素数和。(编程题)
解题思路:
- 求出100以内除了1的所有整数(1不是素数)。
- 用每一个整数分别除以比他小的整数,判断是否可以整除。
- 定义一个空列表,用以储存素数。
- 设定一个判断条件。
17、将[1,3,2,7,6,23,41,24,33,85,56]从小到大排序(冒泡法)(编程)
18、分页显示内容
a.通过for循环创建301条数据,数据类型不限,如:
alex-‐1alex1@live.compwd1
alex-‐2alex2@live.compwd2
alex-‐3alex3@live.compwd3
....
b.提示用户请输入要查看的页码,当用户输入指定页码,则显示指定数据
注意:
-‐每页显示10条数据
-‐用户输入页码是非十进制数字,则提示输入内容格式错误
19、有1、2、3、4、5、6、7、8、8个数字,能组成多少个互不相同且无重复数字的3位数?
20、有一下列表,
nums=[2,7,11,15,1,8,7]
请找到列表中任意两个元素相加能够等于9的元素集合,如:[(0,1),(4,5)]
21、用Python开发程序自动计算方案:
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?
补加练习题:
分别用append、extend方法,给一个序列增加一个元素
x.append([1,2,3])和x.extend([1,2,3])的区别
x.append('abc')和x.extend('abc')的区别
sort()和sorted()什么区别
m=[4,5,6,73,4,4,4,4,2],删除所有的4