任务1 元组和列表的创建
以下代码的作用:输入字符串,利用空格将其切分为多个子串,输出最长的全部子串。请将代码中的 “<X>” 替换为适当的内容。
s=input("输入一个字符串:")
s=s.<X>( ) #切分为多个子串
m=<X>(s,key=<X>) #找到最长子串
s=[a for a in s if <X>] #搜索所有最长子串:
print(f"最长子串有:{<X>}")
要求:
1、程序保存到:s5t1.py
2、程序执行效果:
输入一个字符串:aaa is bbb ddd an bb
最长子串有:aaa,bbb,ddd
【参考与提示】
1、max (a,key) : 求序列 a 的最大值.key 用于指定 a 的元素比较大小的依据 (函数或类名)。
2、split (s) : 为字符串的内置函数。利用 s 将字符串切分为子串组成的列表。
3、len (x) : 计算可迭代对象 x 的数据个数。
4、join (a) : 为字符串内置函数。将由字符串组成的序列 a 的元素连接为字符串。
任务2 列表和元组 - 索引与切片
要求:
1、程序运行时完成以下操作:
(1)接受键盘输入的整数 (为成绩,不少于 6 个整数) 串 s。
(2)将 s 转换为元组。
(3)输出前 3 名的成绩及这 3 个成绩的平均分 (四舍五入保留两位小数)。
2、程序保存到:s5t2.py
3、程序执行效果:
输入一个整数串:63,94,72,88,56,78,66
前三名=94,88,78 平均分=86.67
【参考与提示】
1、eval (s): 计算字符串 s 对应表达式的值。
2、sorted (a, key,reverse): 序列排序. key 指定排序依据;reverse指定升序还是降序。返回值为列表。
3、列表切片。得到降序排序后的列表 a后,前三名成绩的数据为 a [:3]。
4、平均分四舍五入保留两位小数:可以使用 round 函数。
任务3 列表内置函数的使用
根据注释将下面代码中的大写字母替换为适当的内容:
a=[67, 90, 85, 76, 36, 58, 70, 92]
s=input("输入整数串:")
b=eval(s) #转换s为元组
a.A(b) #b的元素添加到a
a.B(0, 85) #将85添加为a的第1个元素
a.C(77) #77添加到a最后
a.D(85) #从a中删除一个元素85
a.E(4) #删除元素a[4]
F a[3::3] #删除a的部分元素
a.G((85, 93)) #将元组的元素添加到a
a.H( ) #将a逆序
m=a. I(93) #得到元素93的索引位置
n=a. J(85) #统计a中元素为85的数目
print(f"m={m}, n={n}")
要求:
1、除 F 外,其他大写字母需替换为列表的内置函数。
2、对输入的整数串不作有效性检查。
3、程序保存到:s5t3.py
4、程序执行效果:
输入整数串:65,85,79
m=0, n=3
【参考与提示】
列表常用内置函数有:remove,append,extend,pop,insert,index,reverse,count,sort。
任务4 元组应用
要求:
1、程序运行时完成以下操作:
(1)输入整数串(不少于 6 个整数)。
(2)将整数串转换为元素为整数的元组。
(3)分别统计元组奇数位和偶数位数据的平均值 (四舍五入保留 2 位小数) 并显示。
2、对输入的整数串不作有效性检查。
3、程序保存到:s5t4.py
4、程序执行效果:
输入整数串:32,71,26,45,80,63,92
奇数位均值 = 57.5,偶数位均值= 59.67
【参考与提示】
1、eval (s): 计算字符串 s 对应表达式的值。
2、round (x,n): 将数值 x 四舍五入保留到小数点后 n 位。
3、元组切片 a [x:y:z]。
4、sum (a,start):对可迭代对象 a 的元素求和.。start 指定和的初值。
任务5 元组和列表 - 相关函数的使用
要求:
1、程序运行时完成以下操作:
(1)接受键盘输入的矩阵并使用列表存储。
输入格式:逐行输入。行以 ";" 分隔,行内数据以 "," 分隔。参考程序执行效果。
(2)输出矩阵每行的最大值。
2、不检查输入数据的有效性。
3、程序保存到:s5t5.py
4、程序执行效果:
输入矩阵:1,8; 3,6; 5,9
各行最大值: 8,6,9
【参考与提示】
求解思路:
1、存储矩阵(设输入"1,8; 3,6; 5,9")。
(1)先使用字符串内置函数 split,得到矩阵的各行 (为字符串) 数据:
s=["1,8", "3,6","5,9"]
(2)将 s 的元素转换为元组。
使用列表推导式:a=[元素 for r in s]
可得:a=[(1, 8), (3, 6),(5, 9)]
2、使用列表推导式求每行最大值。
格式:[元素 for r in a]
可得:m=[8, 6, 9]
3、输出各行最大值。
(1)将 m 转换为字符串 s="[8, 6, 9]"。
(2)使用字符串的内置函数replace 删除全部空格:s="[8,6,9]"。
(3)输出 s,应不包括其首尾字符 (利用字符串的切片)。
要求:
1、程序运行时完成以下操作:
(1)接受键盘输入的矩阵并使用列表存储。
输入格式:逐行输入。行以 ";" 分隔,行内数据以 "," 分隔。参考程序执行效果。
(2)输出矩阵每列的最大值。
2、不检查输入数据的有效性。
3、程序保存到:s5t5.py
4、程序执行效果:
输入矩阵:1,8;3,6;5,9
各列最大值:5,9
【参考与提示】
求解思路:
1、存储矩阵(设输入"1,8;3,6;5,9")。
(1)先使用字符串内置函数 split,得到矩阵的各行 (为字符串) 数据:
s=["1,8", "3,6","5,9"]
(2)将 s 的元素转换为元组。
使用列表推导式:a=[元组 (for r in s)]
可得:a=[(1, 8), (3, 6), (5, 9)]
2、求每列的最大值。
(1)求矩阵行数 r (即 a 的元素个数)。
(2)求矩阵列数 c (即 a [0] 的元素个数)。
(3)利用推导式求每列的最大值。
格式:m=[max ([元素 for i in range (r)]) for j in range (c)]
其中 "元素" 是第 j 列的最大值。计算方法:
max ([v for i in range (r)])
其中 v 是第 i 行第 j 列的元素。
可得:m=[5, 9]
3、输出各列最大值。
(1)将 m 转换为字符串 s="[5, 9]"。
(2)使用字符串的内置函数replace 删除全部空格:s="[5,9]"。
(3)输出 s,应不包括其首尾字符 (利用字符串的切片)。

