实验四 Python组合类型——列表与元组
第1关:删除重复元素
任务描述
本关任务:编写程序,实现删除一个列表里面的重复元素。
程序分析
为了完成本关任务,你需要掌握:s.append(x)方法,程序实现时,对输入的数据进行遍历,遍历过程中可以把数据加入一个新的列表,如果该数据项已经在列表中,则不添加。
编程要求
根据提示,在右侧编辑器补充代码。
测试说明
平台会对你编写的代码进行测试:
测试输入1:Please Input:1234512378
预期输出1:['1', '2', '3', '4', '5', '7', '8']
测试输入2:Please Input:abcabc1233EF
预期输出2:['a', 'b', 'c', '1', '2', '3', 'E', 'F']
开始你的任务吧,祝你成功!
# 请在此添加代码
########## Begin ##########
source = input("Please Input:")
r=[]
for char in source:
if char not in r:
r.append(char)
print(r)
########## End ##########
第2关:列表中数据处理
任务描述
本关任务:编写程序,将列表s中的偶数变成它的平方,奇数保持不变。
要求列表从键盘输入,分别输出变换前后的列表。具体输入输出格式参见测试说明。
编程要求
根据提示,在右侧编辑器补充代码,计算并输出变换前后的列表。
测试说明
平台会对你编写的代码进行测试:
测试输入:please input a list:[9,7,8,3,2,1,5,6]
预期输出:
变换前,s= [9, 7, 8, 3, 2, 1, 5, 6]
变换后,s= [9, 7, 64, 3, 4, 1, 5, 36]
`
开始你的任务吧,祝你成功!
s = eval(input("please input a list:"))
print("变换前,s=", s)
for i in range(len(s)):
if s[i] % 2 == 0:
s[i] = s[i] ** 2
print("变换后,s=", s)
第3关:求ASCII
任务描述
本关任务:编写程序,输入一个字符串,将字符串中每个字符的ASCII码形成列表并输出。
程序分析:
①可以使用ord(s[i])将字符转换为对应的Unicode码。
②可以使用s.append(x)方法将对象x追加到列表s尾部。
编程要求
根据提示,在右侧编辑器补充代码,计算并输出字符串中每个字符的ASCII。
测试说明
平台会对你编写的代码进行测试:
测试输入:请输入一个字符串:ABCDEF123
预期输出:[65, 66, 67, 68, 69, 70, 49, 50, 51]
开始你的任务吧,祝你成功!
str = input("请输入一个字符串:")
str = list(str)
for i in range(len(str)):
str[i] = ord(str[i])
print(str)
第4关:数据排序
任务描述
本关任务:编写程序,不使用Python内置函数,编程实现将n个数按从小到大顺序排列后输出。
相关知识
在Python中,数据排序可以直接使用sort方法或sorted()函数,也可以自己编写排序的程序。
排序概念
假设将n个数按从小到大顺序排列后输出,排序过程通常分为3个步骤:
①将需要排序的n个数存放到一个列表中(设列表x)。
②将列表x中的元素从小到大排序,即x[0]最小、x[1]次之、……、x[n-1]最大。
③将排序后的x列表输出。
其中第②步是关键。排序的方法很多,这里介绍最基本的排序算法。
简单交换排序法
简单交换排序法(simple exchange sort)的基本思路是将位于最前面的数和它后面的数进行比较,比较若干次以后,即可将最小的数放到最前面。
选择排序法
选择排序法(selection sort)的基本思路是在n个数中,找出最小的数,使它与x[0]互换,然后从n-1个数中,找最小的数,使它与x[1]互换,依此类推,直至剩下最后一个数据为止。
冒泡排序法
冒泡排序法(bubble sort)的基本思路是将相邻的两个数两两进行比较,使小的在前,大的在后。
编程要求
根据提示,在右侧编辑器补充代码,输出排序后的数据列表。
测试说明
平台会对你编写的代码进行测试:
测试输入:
输入数据个数:3
输入一个数:12
输入一个数:78
输入一个数:54
预期输出:
排序后数据: [12, 54, 78]
测试输入:
输入数据个数:5
输入一个数:123
输入一个数:5
输入一个数:78
输入一个数:-1
输入一个数:9
预期输出:
排序后数据: [-1, 5, 9, 78, 123]
开始你的任务吧,祝你成功!
n = int(input("输入数据个数:"))
list = [0] * n
for i in range(0, n):
list[i] = int(input("输入一个数:"))
list.sort()
print("排序后数据:", list)
第5关:数据检索
任务描述
本关任务:编写程序,实现数据检索。设有n个数已存在序列a中,检索查找数据x是否在序列a中。
相关知识
数据查找(search)是从一组数据中找出具有某种特征的数据项,它是数据处理中应用很广泛的一种操作。常见的数据查找方法有顺序查找和二分查找。
顺序检索
顺序检索的基本思想是对所存储的数据从第一项开始,依次与所要检索的数据进行比较,直到找到该数据,或将全部元素都找完还没有找到该数据为止。
二分查找
若被检索的是一组有序数据,则可以用二分检索方法。
(1)在0到n-1中间选一个正整数k,用k把原来有序的序列分成3个子序列:
①a[0]、a[1]、……、a[k-2]。
②a[k-1]。
③a[k]、a[k+1]、……、a[n-1]。
(2)用a[k-1]与x比较,若x=a[k-1],查找过程结束。若x<a[k-1],则用同样的方法把序列a[0]、a[1]、……、a[k-2]分成3个序列。若x>a[k-1],也用同样的方法把序列a[k]、a[k+1]、……、a[n-1]分成3个序列,直到已找到x或得到“未找到x”的结论为止。
这是一种应用“分治策略”的解题思想。当k=n/2时,称为二分检索法。
编程要求
根据提示,在右侧编辑器补充代码,实现数据检索。
测试说明
平台会对你编写的代码进行测试:
测试输入1:
(2, 4, 5, 7, 8, 90)
输入待查数据:90
预期输出1:
已找到 90
测试输入2:
(12,3,4,5,7,1)
输入待查数据:20
预期输出2:
未找到 20
开始你的任务吧,祝你成功!
arr = eval(input())
arr = tuple(arr)
x = int(input("输入待查数据:"))
if x in arr:
print("已找到", x)
else:
print("未找到", x)
第6关:矩阵运算
任务描述
本关任务:矩阵运算。编写程序,给定一个m×n矩阵,其元素互不相等,求每行绝对值最大的元素及其所在行号、列号。
程序分析
首先要考虑的是如何用列表数据表示矩阵,用列表表示一维矩阵是显然的,当列表的元素是一个列表时,列表可以表示二维矩阵,
接下来考虑求矩阵一行绝对值最大的元素及其列号的程序段,再将处理一行的程序段重复执行m次,即可求出每行的绝对值最大的元素及其行号、列号。
相关知识
为了完成本关任务,你需要掌握:二维列表的概念及其应用。
编程要求
根据提示,在右侧编辑器补充代码,计算并输出每行的绝对值最大的元素及其列号。
测试说明
平台会对你编写的代码进行测试:
测试输入:
请输入行数和列数,以,隔开:2,3
1
2
7
5
56
1
预期输出:
0 2 7
1 1 56
开始你的任务吧,祝你成功!
row, col = eval(input("请输入行数和列数,以,隔开:"))
arr = []
for i in range(row):
current_row = []
while len(current_row) < col:
element = int(input())
current_row.append(element)
arr.append(current_row)
for i in range(row):
max_value = abs(arr[i][0])
max_col = 0
for j in range(len(arr[i])):
if abs(arr[i][j]) > max_value:
max_value = abs(arr[i][j])
max_col = j
print(i, max_col, arr[i][max_col])
更多推荐



所有评论(0)