小言_互联网的博客

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

417人阅读  评论(0)

笔者:风起怨江南 出处: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. #方法1 pop()
  2. info = [ "Carter", 45, "男", "不明飞行物", [ "高", "富", "帅"], True, None, "狼的眼睛是啥样的"]
  3. print( '打印原先列表:\n',info)
  4. info.pop( 3)
  5. print( '方法1 利用pop()函数删除,删除后的列表内容:\n',info)
  6. #方法2 remove()
  7. info = [ "Carter", 45, "男", "不明飞行物", [ "高", "富", "帅"], True, None, "狼的眼睛是啥样的"]
  8. info.remove( '不明飞行物')
  9. print( '方法2 利用remove()函数删除,删除后的列表内容:\n',info)
  10. #方法3 del语句
  11. info = [ "Carter", 45, "男", "不明飞行物", [ "高", "富", "帅"], True, None, "狼的眼睛是啥样的"]
  12. del info[ 3]
  13. print( '方法3 利用del语句,删除后的列表内容:\n',info)
  14. #方法4 列表分片
  15. info = [ "Carter", 45, "男", "不明飞行物", [ "高", "富", "帅"], True, None, "狼的眼睛是啥样的"]
  16. info1 = info[: 3]
  17. info2 = info[ 4:]
  18. print( '方法4 利用列表重新拼接,不包括要删除的元素,删除后的列表内容:\n',info1 + info2)

  
  1. 打印原先列表:
  2. [ 'Carter', 45, '男', '不明飞行物', [ '高', '富', '帅'], True, None, '狼的眼睛是啥样的']
  3. 方法 1 利用pop()函数删除,删除后的列表内容:
  4. [ 'Carter', 45, '男', [ '高', '富', '帅'], True, None, '狼的眼睛是啥样的']
  5. 方法 2 利用remove()函数删除,删除后的列表内容:
  6. [ 'Carter', 45, '男', [ '高', '富', '帅'], True, None, '狼的眼睛是啥样的']
  7. 方法 3 利用 del语句,删除后的列表内容:
  8. [ 'Carter', 45, '男', [ '高', '富', '帅'], True, None, '狼的眼睛是啥样的']
  9. 方法 4 利用列表重新拼接,不包括要删除的元素,删除后的列表内容:
  10. [ 'Carter', 45, '男', [ '高', '富', '帅'], True, None, '狼的眼睛是啥样的']

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

 

11.修改列表

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


  
  1. #方法1 赋值
  2. li2 = [ 1, 2, 3, 4, 5]
  3. print( '原始li2列表内容:',li2)
  4. li3 = [ 0, 1, 2, 3, 66, 4, 5, 11, 22, 33]
  5. li2 = li3[::]
  6. print( '方法1 通过最简单的赋值来进行修改,修改后的li2列表内容:\n',li2)
  7. #方法2 利用insert()
  8. li2 = [ 1, 2, 3, 4, 5]
  9. li2.insert( 0, 0)
  10. li2.insert( 4, 66)
  11. li2.insert( 7, 11)
  12. li2.insert( 8, 22)
  13. li2.insert( 9, 33)
  14. print( '方法2 只通过insert()添加元素,修改后的li2列表内容:\n',li2)
  15. #方法3,insert(),append()
  16. li2 = [ 1, 2, 3, 4, 5]
  17. li2.insert( 0, 0)
  18. li2.insert( 4, 66)
  19. li2.append( 11)
  20. li2.append( 22)
  21. li2.append( 33)
  22. print( '方法3 通过insert()和append()添加元素,修改后的li2列表内容:\n',li2)

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

 

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

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

1、 (11)    

2、 {11,22}

3、 ([11,22,33])

4、 {"aa":111}


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

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

 

13.元素去重和删除

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

  •  要求一:去除列表中的重复元素
  •  要求二:删除 77,88,99这三个元素

  
  1. li = [ 11, 22, 33, 22, 22, 44, 55, 77, 88, 99, 11]
  2. #去重用集合类型转换,再转换为列表
  3. li_new = list(set(li))
  4. li_new.sort()
  5. print(li_new)
  6. #要求二中利用remove函数删除列表的三个元素
  7. li_new.remove( 77)
  8. li_new.remove( 88)
  9. li_new.remove( 99)
  10. print(li_new)
  11. #或者用pop()删除三个元素
  12. li = [ 11, 22, 33, 22, 22, 44, 55, 77, 88, 99, 11]
  13. li_new = list(set(li))
  14. li_new.sort()
  15. #pop()删除元素,由于已经排序,所以默认删除最后一个
  16. li_new.pop()
  17. li_new.pop()
  18. li_new.pop()
  19. print(li_new)
  20. #或者用切片删除
  21. li = [ 11, 22, 33, 22, 22, 44, 55, 77, 88, 99, 11]
  22. li_new = list(set(li))
  23. li_new.sort()
  24. n=len(li_new)
  25. lst = li_new[:n -3]
  26. print(lst)

  
  1. [ 11, 22, 33, 44, 55, 77, 88, 99]
  2. [ 11, 22, 33, 44, 55]
  3. [ 11, 22, 33, 44, 55]
  4. [ 11, 22, 33, 44, 55]

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

 

14.数据类型转换字典

有下面几个数据 :

t1 = ("aa",11)     

t2= (''bb'',22)   

li1 = [("cc",11)]

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

 


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

  
  1. #方法2
  2. t1 = ( 'aa', 11)
  3. t2 = ( 'bb', 22)
  4. li1 = [( 'cc', 11)]
  5. li1.insert( 0,t1)
  6. li1.insert( 2,t2)
  7. print(dict(li1))
{'aa': 11, 'cc': 11, 'bb': 22}

  
  1. #方法3
  2. ti = ( "aa", 11)
  3. t2 = ( "bb", 22)
  4. li1 = [( "cc", 11)]
  5. new_dict = {}
  6. new_dict[t1[ 0]] = t1[ 1]
  7. new_dict[t2[ 0]] = t2[ 1]
  8. new_dict[li1[ 0][ 0]] = li1[ 1]
{'aa': 11, 'cc': 11, 'bb': 22}

每种方法都要掌握!

 

15.利用判断计算价格

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

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


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

  
  1. 请输入购买金额: 111
  2. 折扣为: 20%,最终价格为: 88.8元。

需要注意取小数点。

 

16.判断是否为闰年

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

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


  
  1. year = int(input( '输入一个有效的年份(如:2019):'))
  2. #闰年判断条件:首先保证年数能被4整除
  3. if year % 4 == 0:
  4. #年份能被100整除,但不能被400整除时,是平年
  5. if year % 100 == 0 and year % 400 != 0:
  6. print( '公元{}年不是闰年。'.format(year))
  7. else:
  8. print( '公元{}年是闰年。'.format(year))
  9. else:
  10. print( '公元{}年不是闰年。'.format(year))

  
  1. 请输入第 1个整数: 190
  2. 请输入第 2个整数: 210
  3. 请输入第 3个整数: 65
  4. 最大值为: 210

  
  1. #方法2
  2. year = int(input( "请输入需要查询的年份:"))
  3. if year % 4 == 0:
  4. if year % 100 == 0:
  5. if year % 400 == 0:
  6. print( "是闰年")
  7. else:
  8. print( "不是闰年")
  9. else:
  10. print( "是闰年")
  11. else:
  12. print( "不是闰年")

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

 

17.求数字最大值

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


  
  1. a = int(input( "请输入第1个整数:"))
  2. b = int(input( "请输入第2个整数:"))
  3. c = int(input( "请输入第3个整数:"))
  4. if a >= b and a >= c:
  5. print( "最大值为:{}".format(a))
  6. elif b >= a and b >= c:
  7. print( "最大值为:{}".format(b))
  8. else:
  9. print( "最大值为:{}".format(c))

  
  1. 请输入第 1个整数: 190
  2. 请输入第 2个整数: 210
  3. 请输入第 3个整数: 65
  4. 最大值为: 210

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


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

  
  1. 请输入第 1个整数: 3
  2. 请输入第 2个整数: 2
  3. 请输入第 3个整数: 1
  4. 3

 

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

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


  
  1. #x是被乘数
  2. for x in range( 1, 10):
  3. #y是乘数
  4. for y in range( 1,x + 1):
  5. print(y, 'x' ,x , '=',x*y,end= '\t')
  6. print( '')

  
  1. 1 x 1 = 1
  2. 1 x 2 = 2 2 x 2 = 4
  3. 1 x 3 = 3 2 x 3 = 6 3 x 3 = 9
  4. 1 x 4 = 4 2 x 4 = 8 3 x 4 = 12 4 x 4 = 16
  5. 1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25
  6. 1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36
  7. 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
  8. 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
  9. 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 为空。


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

  
  1. [ '卖茶叶', '卖面膜', '卖保险', '卖花生', '卖手机']
  2. []

 


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

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


转载:https://blog.csdn.net/JackMengJin/article/details/105948903
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场