实验2.5.1 Python基础-列表
第1关:列表元素的增删改:客人名单的变化本关任务是对一个给定的列表进行增、删、改等操作,并输出变化后的最终列表。列表是由按一定顺序排列的元素组成,其中的元素根据需要可能会发生变化。其中,列表元素的添加、删除或修改等是最常见的操作。下面以一则请客的故事来说明列表元素操作的应用场景: 有个人邀请几个朋友吃饭,初步拟定了一个客人名单列表guests=['Zhang san','Li si','Wang
第1关:列表元素的增删改:客人名单的变化
本关任务是对一个给定的列表进行增、删、改等操作,并输出变化后的最终列表。列表是由按一定顺序排列的元素组成,其中的元素根据需要可能会发生变化。其中,列表元素的添加、删除或修改等是最常见的操作。
下面以一则请客的故事来说明列表元素操作的应用场景: 有个人邀请几个朋友吃饭,初步拟定了一个客人名单列表guests=['Zhang san','Li si','Wang wu','Zhao liu']
。后面因为一些临时情况,这个客人名单不断变化:
-
Zhao liu
说要带他的朋友Hu qi
一起来; -
Zhang san
因临时有事不能来了; -
Wang wu
说由他的弟弟Wang shi
代他赴宴。
最终的客人名单列表如下:
['Li si','Wang shi','Zhao liu','Hu qi']
编程要求
-
step 1:将
guests
列表末尾的元素删除,并将这个被删除的元素值保存到deleted_guest
变量; -
step 2:将
deleted_guest
插入到 step 1 删除后的guests
列表索引位置为2
的地方; -
step 3:将 step 2 处理后的
guests
列表索引位置为1
的元素删除; -
打印输出 step 1 的
deleted_guest
变量; -
打印输出 step 3 改变后的
guests
列表。
# 创建并初始化Guests列表
guests = []
while True:
try:
guest = input()
guests.append(guest)
except:
break
# 请在此添加代码,对guests列表进行插入、删除等操作
########## Begin ##########
deleted_guest=guests.pop(-1)
guests.insert(2,deleted_guest)
del guests[1]
print(deleted_guest)
print(guests)
########## End ##########
第2关:列表元素的排序:给客人排序
本关的任务是学会列表排序相关操作的使用方法,实现对列表元素的排序。一般情况下我们创建的列表中的元素可能都是无序的,但有些时候我们需要对列表元素进行排序。
例如,我们想将参加会议的专家名单guests
列表中的五个名字元素['zhang san','li si','wang wu','sun qi','qian ba']
,分别按照首字母从小到大的顺序和从大到小的顺序分别排序。排序后的输出分别为:
['li si','qian ba','sun qi','wang wu','zhang san']
['zhang san','wang wu','sun qi','qian ba','li si']
本关的编程任务是补全src/step2/sortTest.py
文件中的函数部分,要求实现对输入列表source_list
中的元素按照首字母从小到大的顺序进行排序,并且输出排序后的列表。
# 创建并初始化`source_list`列表
source_list = []
while True:
try:
list_element = input()
source_list.append(list_element)
except:
break
# 请在此添加代码,对source_list列表进行排序等操作并打印输出排序后的列表
########## Begin ##########
source_list.sort()
print(source_list)
########## End ##########
第3关:数值列表:用数字说话
本关任务是利用合适的方法快速创建数字列表,并能够对列表中的元素数值进行简单的统计运算。在数据可视化的背景下,数字列表在 Python 列表中的应用十分广泛,列表十分适合存储数字集合。
本关目标是让学习者掌握一些处理数字列表的基本方法,主要包括数字列表的创建、对数字列表进行简单的统计运算等。例如,我们要创建一个从2到10的偶数的数字集合,然后计算出该集合的数值之和:
data_set = [2,4,6,8,10]
sum=30
编程要求
-
step1:根据给定的下限数
lower
, 上限数upper
以及步长step
,利用range函数生成一个列表; -
step2:计算该列表的长度;
-
step3:求该列表中的最大元素与最小元素之差。
# 创建并读入range函数的相应参数
lower = int(input())
upper = int(input())
step = int(input())
a=[]
# 请在此添加代码,实现编程要求
########## Begin ##########
for i in range(lower,upper,step):
a.append(i)
print(len(a))
print(max(a)-min(a))
########## End ##########
第4关:列表切片:你的菜单和我的菜单
我们在前三关中学习了如何处理单个列表元素和所有列表元素,在这一关中我们还将学习如何处理部分列表元素(Python 中称为切片)。例如,当我们去餐馆吃饭点菜时,你的菜单和我的菜单有些时候是一模一样,也有些时候是部分菜名一样。那么如何根据我已经点好的菜单生成你的菜单呢?
本关将通过菜名列表的部分复制,让学习者了解并掌握列表切片的基础知识。
编程要求
-
利用切片方法从
my_menu
列表中每3个元素取1个,组成子序列并打印输出; -
利用切片方法获取
my_menu
列表的最后三个元素组成子序列并打印输出。
# 创建并初始化my_menu列表
my_menu = []
while True:
try:
food = input()
my_menu.append(food)
except:
break
# 请在此添加代码,对my_menu列表进行切片操作
########## Begin ##########
a=my_menu[::3]
print(a)
b=my_menu[-3::]
print(b)
########## End ##########
第5关:列表遍历:不重复客人名单
本关任务:本关任务是对有重复元素的列表,通过遍历列表,找出非重复元素,建立新列表。
根据提示,在右侧编辑器补充代码,在一份有重复名字的客人名单中选取非重复名字,建立新客人名单并输出。
# 创建并初始化Guests列表
guests = eval(input())
a=[]
# 请在此添加代码,对guests列表去重,产生并输出非重复名单列表
########## Begin ##########
for i in guests:
if i not in a:#来实现前后遍历的比较
a.append(i)
print(a)
########## End ##########
第6关:列表修改:vip名单
本关任务:本关任务是对通过遍历列表,修改指定元素,并输出列表。
根据提示,在右侧编辑器补充代码,在一份客人名单中指定非vip姓氏,将名单中指定姓氏的名字前加上‘vip:’字样并输出修改后的列表。
# 创建并初始化Guests列表
guests = eval(input())
# 指定vip姓氏
vipxs=input()
# 请在此添加代码,对客人列表中指定姓氏的名字进行修改,并输出修改后的名单
########## Begin ##########
for i in guests:
a=str(i)
if vipxs in a:
n=guests.index(i)
guests[n] = 'vip:'+i
break
print(guests)
########## End ##########
以上为str()字符串解法,本题还可以使用纯列表方法求解。解法如下。
guests = eval(input())
vipxs=input()
for i in range(len(guests)):
if guests[i][0]==vipxs:#取到i后再取i中的第一个
guests[i]='vip:'+guests[i]
print(guests)
第7关:列表综合:菜单价格统计
本关任务:本关任务是对通过遍历数字列表进行简单统计,找出最大最小值,计算平均值,和菜价的标准差并输出结果。
标准差(Standard Deviation) ,是离均差平方的算术平均数(即:方差)的算术平方根。
根据提示,在右侧编辑器补充代码,在一份输入的菜单价格列表中找出最高菜价、最低菜价,并计算平均菜价和菜价的标准差,按指定格式输出上述统计值。
# 创建并初始化Guests列表
menu_price = eval(input())
m=0
# 请在此添加代码,对菜价列表进行统计,输出最高价,最低价,平均价
########## Begin ##########
a=max(menu_price)
b=min(menu_price)
c=sum(menu_price)/len(menu_price)
for i in menu_price:
m+=(i-c)**2
d=(m/len(menu_price))**0.5
print('最高价:{:.2f},最低价:{:.2f},平均价:{:.2f},标准差:{:.2f}'.format(a,b,c,d))
########## End ##########
求赞求赞求赞
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)