实验2.5.1 Python基础-列表

第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'],分别按照首字母从小到大的顺序和从大到小的顺序分别排序。排序后的输出分别为:

  1. ['li si','qian ba','sun qi','wang wu','zhang san']
  2. ['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的偶数的数字集合,然后计算出该集合的数值之和:

  1. data_set = [2,4,6,8,10]
  2. 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 ##########

求赞求赞求赞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值