Python实战10-19例:列表、字典、循环等综合训练

笔者:风起怨江南 出处:https://blog.csdn.net/JackMengJin 原创文章转载请注明出处。如果喜欢请点赞+关注,感谢支持!

《Python实战系列》所有实例训练题都是从Python各个知识点精挑细选出来的,希望能对大家有所帮助。

Python实战系列每周不定时更新,想看上一期实战训练的朋友请点击=>传送门。不多废话,直接上干货!

 

目录

10.删除列表元素

11.修改列表

12.判断可变和不可变的数据类型

13.元素去重和删除

14.数据类型转换字典

15.利用判断计算价格

16.判断是否为闰年

17.求数字最大值

18.使用for打印九九乘法表

19.循环删除元素


 

Python实战10-19例:列表、字典、循环等综合训练

10.删除列表元素

删除列表中的"不明飞行物",写出 2 种或以上方法:

info = ["Carter", 45, "男", "不明飞行物", ["高", "富", "帅"], True, None, "狼的眼睛是啥样的"]

#方法1 pop()
info = ["Carter", 45, "男", "不明飞行物", ["高", "富", "帅"], True, None, "狼的眼睛是啥样的"]
print('打印原先列表:\n',info)
info.pop(3)
print('方法1 利用pop()函数删除,删除后的列表内容:\n',info)

#方法2 remove()
info = ["Carter", 45, "男", "不明飞行物", ["高", "富", "帅"], True, None, "狼的眼睛是啥样的"]
info.remove('不明飞行物')
print('方法2 利用remove()函数删除,删除后的列表内容:\n',info)

#方法3 del语句
info = ["Carter", 45, "男", "不明飞行物", ["高", "富", "帅"], True, None, "狼的眼睛是啥样的"]
del info[3]
print('方法3 利用del语句,删除后的列表内容:\n',info)

#方法4 列表分片
info = ["Carter", 45, "男", "不明飞行物", ["高", "富", "帅"], True, None, "狼的眼睛是啥样的"]
info1 = info[:3]
info2 = info[4:]
print('方法4 利用列表重新拼接,不包括要删除的元素,删除后的列表内容:\n',info1 + info2)
打印原先列表:
 ['Carter', 45, '男', '不明飞行物', ['高', '富', '帅'], True, None, '狼的眼睛是啥样的']
方法1 利用pop()函数删除,删除后的列表内容:
 ['Carter', 45, '男', ['高', '富', '帅'], True, None, '狼的眼睛是啥样的']
方法2 利用remove()函数删除,删除后的列表内容:
 ['Carter', 45, '男', ['高', '富', '帅'], True, None, '狼的眼睛是啥样的']
方法3 利用del语句,删除后的列表内容:
 ['Carter', 45, '男', ['高', '富', '帅'], True, None, '狼的眼睛是啥样的']
方法4 利用列表重新拼接,不包括要删除的元素,删除后的列表内容:
 ['Carter', 45, '男', ['高', '富', '帅'], True, None, '狼的眼睛是啥样的']

注意,删除元素轻易不要用del语句去删除,太危险。

 

11.修改列表

现在有一个列表 li2=[1,2,3,4,5]。请通过相关的操作改成li2 = [0,1,2,3,66,4,5,11,22,33]。

#方法1 赋值
li2 = [1,2,3,4,5]
print('原始li2列表内容:',li2)
li3 = [0,1,2,3,66,4,5,11,22,33]
li2 = li3[::]
print('方法1 通过最简单的赋值来进行修改,修改后的li2列表内容:\n',li2)

#方法2 利用insert()
li2 = [1,2,3,4,5]
li2.insert(0,0)
li2.insert(4,66)
li2.insert(7,11)
li2.insert(8,22)
li2.insert(9,33)
print('方法2 只通过insert()添加元素,修改后的li2列表内容:\n',li2)

#方法3,insert(),append()
li2 = [1,2,3,4,5]
li2.insert(0,0)
li2.insert(4,66)
li2.append(11)
li2.append(22)
li2.append(33)
print('方法3 通过insert()和append()添加元素,修改后的li2列表内容:\n',li2)

主要考察对列表的添加元素操作,根据具体的需求选择合适的方法。

 

12.判断可变和不可变的数据类型

请指出下面那些为可变类型的数据,那些为不可变类型的数据

1、 (11)    

2、 {11,22}

3、 ([11,22,33])

4、 {"aa":111}

print('''分析:(11)是整形,而整形是不可变的数据
{11,22}是集合,可以使用add()函数对集合进行添加元素的操作,所以是可变的数据。
([11,22,33])是个陷阱,虽然()是元组的表示方式,但当元组只有一个元素时且后面没有用逗号隔开时,只能表示元素本身的数据类型。也就是列表类型。而列表是可变类型,所以这个也是可变类型。
{"aa":111}是字典,字典是可变的类型,所以得出结论。''')
print('总结:编号为1的是不可变类型的数据;编号为2、3、4的是可变的类型数据。')

各种陷阱,基础知识点。如果不确定可以打印出数据类型,再进行判断是否为可变数据类型。

 

13.元素去重和删除

当前有一个列表 li = [11,22,33,22,22,44,55,77,88,99,11]。

  •  要求一:去除列表中的重复元素
  •  要求二:删除 77,88,99这三个元素
li = [11,22,33,22,22,44,55,77,88,99,11]
#去重用集合类型转换,再转换为列表
li_new = list(set(li))
li_new.sort()
print(li_new)
#要求二中利用remove函数删除列表的三个元素
li_new.remove(77)
li_new.remove(88)
li_new.remove(99)
print(li_new)

#或者用pop()删除三个元素
li = [11,22,33,22,22,44,55,77,88,99,11]
li_new = list(set(li))
li_new.sort()
#pop()删除元素,由于已经排序,所以默认删除最后一个
li_new.pop()
li_new.pop()
li_new.pop()
print(li_new)

#或者用切片删除
li = [11,22,33,22,22,44,55,77,88,99,11]
li_new = list(set(li))
li_new.sort()
n=len(li_new)
lst = li_new[:n-3]
print(lst)
[11, 22, 33, 44, 55, 77, 88, 99]
[11, 22, 33, 44, 55]
[11, 22, 33, 44, 55]
[11, 22, 33, 44, 55]

这道题考察的知识点:集合用来去重。

 

14.数据类型转换字典

有下面几个数据 :

t1 = ("aa",11)     

t2= (''bb'',22)   

li1 = [("cc",11)]

请通过学过的知识点,进行相关操作变为如下字典: {"aa":11,"cc":11,"bb":22}:

 

#方法1 extend()
a,b,c = t1,li1[0],t2
list = []
list.extend([a,b,c])
print(dict(list))
{'aa': 11, 'cc': 11, 'bb': 22}
#方法2
t1 = ('aa',11)
t2 = ('bb',22)
li1 = [('cc',11)]
li1.insert(0,t1)
li1.insert(2,t2)
print(dict(li1))
{'aa': 11, 'cc': 11, 'bb': 22}
#方法3
ti = ("aa",11)
t2 = ("bb",22)
li1 = [("cc",11)]
new_dict = {}
new_dict[t1[0]] = t1[1]
new_dict[t2[0]] = t2[1]
new_dict[li1[0][0]] = li1[1]
{'aa': 11, 'cc': 11, 'bb': 22}

每种方法都要掌握!

 

15.利用判断计算价格

一家商场在降价促销,所有原价都是整数(不需要考虑浮点情况),如果购买金额50-100元(包含50元和100元)之间,会给

10%的折扣,如果购买金额大于100元会给20%折扣。编写一程序,询问购买价格,再显示出折扣(%10或20%)和最终价格。

price = int(input('请输入购买金额:'))
if price >= 50 and price <= 100:
    price_sale = price * (1 - 0.1)
    #利用format(price_sale,'.2f')函数,取小数点后两位
    print('折扣为:10%,最终价格为:{}元。'.format(format(price_sale,'.2f')))
elif price > 100:
    price_sale = price * (1 - 0.2)
    print('折扣为:20%,最终价格为:{}元。'.format(format(price_sale,'.1f')))
else:
    print('没有折扣,最终价格为:{}元。'.format(price))
请输入购买金额:111
折扣为:20%,最终价格为:88.8元。

需要注意取小数点。

 

16.判断是否为闰年

  • 输入一个有效的年份(如:2019),判断是否为闰年(不需要考虑非数字的情况)

  • 如果是闰年,则打印“2019年是闰年”;否则打印“2019年不是闰年”

year = int(input('输入一个有效的年份(如:2019):'))
#闰年判断条件:首先保证年数能被4整除
if year % 4 == 0:
    #年份能被100整除,但不能被400整除时,是平年
    if year % 100 == 0 and year % 400 != 0:
        print('公元{}年不是闰年。'.format(year))
    else:
        print('公元{}年是闰年。'.format(year))
else:
    print('公元{}年不是闰年。'.format(year))
请输入第1个整数:190
请输入第2个整数:210
请输入第3个整数:65
最大值为:210
#方法2
year = int(input("请输入需要查询的年份:"))
if year % 4 == 0:
    if year % 100 == 0:
        if year % 400 == 0:
            print("是闰年")
        else:
            print("不是闰年")
    else:
        print("是闰年")
else:
    print("不是闰年")

闰年的两个判断条件:年数能被4整除,年份能被100整除,同时要被400整除。方法很多,这里只列举一个。

 

17.求数字最大值

求三个整数中的最大值,提示:定义 3 个变量。

a = int(input("请输入第1个整数:"))
b = int(input("请输入第2个整数:"))
c = int(input("请输入第3个整数:"))

if a >= b and a >= c:
    print("最大值为:{}".format(a))
elif b >= a and b >= c:
    print("最大值为:{}".format(b))
else:
    print("最大值为:{}".format(c))
请输入第1个整数:190
请输入第2个整数:210
请输入第3个整数:65
最大值为:210

当然这里可以用max函数,更简单。

a = int(input("请输入第1个整数:"))
b = int(input("请输入第2个整数:"))
c = int(input("请输入第3个整数:"))
print(max(a,b,c))
请输入第1个整数:3
请输入第2个整数:2
请输入第3个整数:1
3

 

18.使用for打印九九乘法表

输出九九乘法表,格式如下:(每项数据之间空一个Tab键,可以使用"\t")

#x是被乘数
for x in range(1,10):
    #y是乘数
    for y in range(1,x + 1):
        print(y, 'x' ,x ,'=',x*y,end='\t')
    print('')
1 x 1 = 1	
1 x 2 = 2	2 x 2 = 4	
1 x 3 = 3	2 x 3 = 6	3 x 3 = 9	
1 x 4 = 4	2 x 4 = 8	3 x 4 = 12	4 x 4 = 16	
1 x 5 = 5	2 x 5 = 10	3 x 5 = 15	4 x 5 = 20	5 x 5 = 25	
1 x 6 = 6	2 x 6 = 12	3 x 6 = 18	4 x 6 = 24	5 x 6 = 30	6 x 6 = 36	
1 x 7 = 7	2 x 7 = 14	3 x 7 = 21	4 x 7 = 28	5 x 7 = 35	6 x 7 = 42	7 x 7 = 49	
1 x 8 = 8	2 x 8 = 16	3 x 8 = 24	4 x 8 = 32	5 x 8 = 40	6 x 8 = 48	7 x 8 = 56	8 x 8 = 64	
1 x 9 = 9	2 x 9 = 18	3 x 9 = 27	4 x 9 = 36	5 x 9 = 45	6 x 9 = 54	7 x 9 = 63	8 x 9 = 72	9 x 9 = 81	

乘法表就不多叙述了,面试必备!

 

19.循环删除元素

你的微信好友当中有 5 个推销的,他们存在一个列表 black_list=['卖茶叶', '卖面膜', '卖保险', '卖花生', '卖手机']

请依次把这 5 个人分别从 black_list 当中删除,最后 black_list 为空。

black_list = ['卖茶叶', '卖面膜', '卖保险', '卖花生', '卖手机']
print(black_list)
length = len(black_list)
for i in range(length):
    black_list.pop()
print(black_list)
['卖茶叶', '卖面膜', '卖保险', '卖花生', '卖手机']
[]

 


以上便是《Python实战10-19例》的所有内容,本系列持续更新,每道都是精挑细选的质量题。

原创不易,转载请注明原作者。如果喜欢请点赞和关注,谢谢大家的支持!

你可能感兴趣的:(Python)