组合数据类型可以将多个数据组织起来,根据数据组织方式的不同,Python的组合数据类型可分成三类:序列类型、集合类型和映射类型,如图所示。
本章先来讲解元组和列表,我们应至少掌握以下几点:
掌握列表的创建、访问、增加与删除等基本操作
掌握元组的创建、访问等基本操作
掌握列表的应用
掌握元组的应用
下面我们通过几道题来了解和巩固:
第1关:列表的创建与访问
任务描述
本关任务:
(1)创建一个计算机语言列表langlist,包含4个成员,分别为"python"、"java"、"c"、"c++"。
(2)利用函数法创建列表strlist,列表成员为字符串"python"中的每个字符。
(3)利用函数法创建一个[1,10]范围内的偶数列表evenlist
(4)输出列表langlist最后一个元素
(5)输出列表langlist第2个元素中的第1个字符
(6)输出列表strlist第3个元素
(7)输出列表evenlist中的每一个元素,同一行输出,元素之间以空格分隔。
代码解析
langlist = ["python","java","c","c++"]
strlist = list(langlist[0])
evenlist = [i for i in range(2,11,2)]
print(langlist[-1])
str_langlist = str(langlist[1])
print(str_langlist[0])
print(strlist[2])
for x in evenlist:
print(x,end = " ")
第2关:列表的切片
任务描述
本关任务: 键盘输入长度大于5的字符串,将它转换成列表。对该列表依次进行以下切片操作:
(1)切片取列表前三个元素
(2)切片取列表后三个元素
(3)切片逆序输出
(4)切片在列表头部增加元素"head"
(5)计算列表的元素个数 逐行输出以上五个操作的结果。
测试说明
平台会对你编写的代码进行测试:
测试输入: 请输入长度大于5的字符串:abcdef
预期输出:
['a', 'b', 'c']
['d', 'e', 'f']
['f', 'e', 'd', 'c', 'b', 'a']
['head', 'a', 'b', 'c', 'd', 'e', 'f']
7
代码解析
string = input("请输入长度大于5的字符串:")
string = list(string)
print(string[:3])
print(string[-3:])
print(string[::-1])
string.insert(0,'head')
print(string)
print(len(string))
第3关:列表元素的增加与删除
任务描述
本关任务:从键盘输入一列表,进行以下操作:
(1)在该列表尾部添加元素“best”
(2)同时添加三个元素“3”、“2”、“1”
(3)在第2个元素之前插入新的元素“grade”
(4)删除第3个元素 逐行依次输出以上每个操作后的列表
测试说明
平台会对你编写的代码进行测试:
测试输入: 请输入一个列表:[12,34,56]
预期输出:
[12, 34, 56, 'best']
[12, 34, 56, 'best', '3', '2', '1']
[12, 'grade', 34, 56, 'best', '3', '2', '1']
[12, 'grade', 56, 'best', '3', '2', '1']
代码解析
lst = eval(input("请输入一个列表:"))
lst.append('best')
print(lst)
lst.extend(['3','2','1'])
print(lst)
lst.insert(1,'grade')
print(lst)
lst.pop(2)
print(lst)
第4关:等比数列
任务描述
本关任务:产生等比数列 用户输入以逗号分隔的三个数字,记为a、q、n,以a为起始数值,q为前后相邻数的比值,n为数列长度,产生一个等比数列。
输入:1,3,5
输出:1,3, 9 ,27, 81
测试说明
平台会对你编写的代码进行测试:
测试输入: 请输入三个数字,英文逗号分隔:1,3,5
预期输出: 1,3,9,27,81
代码解析
num = input("请输入三个数字,英文逗号分隔:")
num = num.split(",")
a = eval(num[0])
q = eval(num[1])
n = eval(num[2])
lst = [str(a*q**(i-1))for i in range(1,n+1)]
print(",".join(lst))
第5关:等差数列
任务描述
本关任务:等差数列 用户输入以空格分隔的3个整数,分别记为a、b、c,以a为起始数值,b为前后相邻数的差,c为数列长度,产生一个递增的等差数列。输出数列、数列元素之和、数列元素索引与值、数列元素平方
测试说明
平台会对你编写的代码进行测试:
测试输入:
请输入三个数,以空格分隔:1 2 5
预期输出:
等差数列为[1, 3, 5, 7, 9]
数列之和为25
数列元素索引与值为[(0, 1), (1, 3), (2, 5), (3, 7), (4, 9)]
数列元素的平方为[1, 9, 25, 49, 81]
代码解析
num = input("请输入三个数,以空格分隔:")
num = num.split()
a = eval(num[0])
b = eval(num[1])
c = eval(num[2])
lst = [a+b*i for i in range(c)]
print(f"等差数列为{lst}")
s = 0
for x in lst:
s += x
print(f"数列之和为{s}")
lst1 = []
for i in range(c):
lst1.append((i,lst[i]))
print(f"数列元素索引与值为{lst1}")
lst2 = [lst[i]**2 for i in range(c)]
print(f"数列元素的平方为{lst2}")
第6关:数字转换
任务描述
本关任务: 输入一个数,将其转换成中文数字输出。
例如, 输入:123.45
输出:壹贰叁点肆伍
测试说明
平台会对你编写的代码进行测试:
测试输入: 请输入一个数:123.4
预期输出: 壹贰叁点肆
代码解析
num = input("请输入一个数:")
num_dict = {".":"点","0":"零","1":"壹","2":"贰","3":"叁","4":"肆","5":"伍","6":"陆","7":"柒","8":"捌","9":"玖"}
num_list = list(num)
for x in num_list:
print(num_dict[x],end = "")
第7关:数列排序
任务描述
本关任务:生成包含 10 个1到100的随机整数的列表,将前5个数按升序排列,后5个数按降序排列。
测试说明
平台会对你编写的代码进行测试:
测试输入:
随机数种子:4
预期输出:
随机生成列表[31, 39, 14, 93, 51, 62, 20, 12, 9, 3]
排序后列表[14, 31, 39, 51, 93, 62, 20, 12, 9, 3]
代码解析
import random
n=eval(input("随机数种子:"))
random.seed(n)
#**************Begin***************#
#从此外开始添加代码
x = list(random.randint(1,100) for i in range(10))
print(f"随机生成列表{x}")
lst1 = x[:5]
lst2 = x[5:]
lst1.sort()
lst2.sort()
print(f"排序后列表{lst1+lst2[::-1]}")
#***************End****************#
第8关:计算歌手成绩
任务描述
本关任务: 在歌星大赛中,有若干个评委为某歌手打分。歌手的最后成绩为:去掉一个最高分和一个最低分后的平均值,保留2位小数。 请输出歌手的最后成绩、去掉的最高分和去掉的最低分,并将歌手的最后得分从高到低输出在同一行上。
测试说明
平台会对你编写的代码进行测试:
测试输入:
请输入评委成绩,以英文逗号分隔82,94,89,90,97,88,97,81,86,82,90,83
预期输出:
歌手最后成绩88.10
去掉一个最高分97
去掉一个最低分81
歌手的最后分数从高到低依次为97 94 90 90 89 88 86 83 82 82
代码解析
grand = input("请输入评委成绩,以英文逗号分隔")
lst = grand.split(",")
lst = [int(x) for x in lst]
best = max(lst)
worst = min(lst)
s = sum(lst)-best-worst
ave = s/(len(lst)-2)
print("歌手最后成绩{:.2f}".format(ave))
print(f"去掉一个最高分{best}")
print(f"去掉一个最低分{worst}")
print("歌手的最后分数从高到低依次为",end = "")
lst.sort()
lst = lst[::-1]
lst.remove(best)
lst.remove(worst)
for x in lst:
print(f"{x}",end = " ")
第9关:随机密码
任务描述
本关任务:编写程序,在26个字母大小写(AaBbCc……Zz)、10个数字字符(0123456789)和10个特殊字符“~!@#$%^&*?”组成的列表中随机生成 1个8位数密码。
测试说明
平台会对你编写的代码进行测试:
测试输入: 随机种子:9
文章来源:https://www.toymoban.com/news/detail-753970.html
预期输出: 随机密码:7xRilAv@
文章来源地址https://www.toymoban.com/news/detail-753970.html
代码解析
#根据注释在相应位置添加代码
#导入随机库
import random
#给列表赋初值
lst=[]
#给列表分别添加26个大写字母和26个小写字母
for i in range(65,91):
lst.append(chr(i))
lst.append(chr(i+32))
#给列表添加10个数字
for i in range(10):
lst.append(str(i))
#给列表添加特殊字符
spe = "~!@#$%^&*?"
lst.extend(list(spe))
#定义随机数的种子,不删除下面两行代码
n=eval(input("随机种子:"))
random.seed(n)
#从列表中随机抽样8个字符,并输出
password = ""
for i in range(8):
password += random.choice(lst)
print(f"随机密码:{password}")
到了这里,关于Python零基础学习6.1—Python组合数据类型(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!