Python列表、字典练习题

编程入门 行业动态 更新时间:2024-10-10 01:24:00

Python列表、字典<a href=https://www.elefans.com/category/jswz/34/1768594.html style=练习题"/>

Python列表、字典练习题

Python列表、字典练习题

1、实验题目:好友管理系统
请设计一个好友管理系统,每个功能都对应一个序号,用户可根据提示“请输入您的选项”选择序号执行相应的操作,包括:
(1)添加好友:用户根据提示“请输入要添加的好友:”输入要添加好友的姓名,添加后会提示“好友添加成功”。
(2)删除好友:用户根据提示“请输入删除好友姓名:”输入要删除好友的姓名,删除后提示“删除成功”。
(3)备注好友:用户根据提示“请输入要修改的好友姓名:”和“请输入修改后的好友姓名:”分别输入修改前和修改后的好友姓名,修改后会提示“备注成功”。
(4)展示好友:若用户还没有添加过好友,提示“好友列表为空”,否则返回每个好友的姓名。
(5)退出:关闭好友系统。

分析:这道题主要考察对于列表或字典的增删改查操作

若使用列表:

lst=[]
flag=1
def add(name):lst.append(name)print("好友添加成功!")
def delete(name):lst.remove(name)print("好友删除成功!")
def find(name):if name in lst:return namereturn 0
def change(name,newname):lst[lst.index(name)]=newnameprint('修改成功!')while(flag==1):print("------1.添加好友------")print("------2.删除好友------")print("------3.备注好友------")print("------4.展示好友------")print("------5.退   出-------")option = int(input("请输入您的选项:"))if option==1:name = input("输入要添加好友的名字:")if (find(name) == 0):add(name)else:print('该好友已经添加!')elif option==2:name=input("输入要删好友的名字:")if(find(name)!=0):delete(name)else:print('该好友暂未添加!')elif option==3:name=input("输入要修改好友的名字:")if (find(name) != 0):newname=input("输入修改后的好友的名字:")change(name,newname)else:print('该好友暂未添加!')elif option==4:if(len(lst)==0):print('好友列表为空!')else:print(lst)elif option==5:print("关闭好友系统!")flag=0else:print("输入选项有误,请重新输入!")

注意:在进行对好友的增删改的时候,要考虑这个好友是否已经存在。

若使用字典,好友信息处理名字再增添一个手机号

dir={}
flag=1
def add(name,sno):dir.setdefault(name,sno)print("好友添加成功!")
def delete(name):dir.pop(name)print("好友删除成功!")
def find(name):if name in dir:return name,dir[name]return 0
def change(newname,newsno):dir.update(newname=newsno)print('修改成功!')while(flag==1):print("------1.添加好友------")print("------2.删除好友------")print("------3.备注好友------")print("------4.展示好友------")print("------5.退   出-------")option = int(input("请输入您的选项:"))if option==1:name = input("输入要添加好友的名字:\n")sno =input("输入要添加好友的手机号:\n")if (find(name) == 0):add(name,sno)else:print('该好友已经添加!')elif option==2:name=input("输入要删好友的名字:")if(find(name)!=0):delete(name)else:print('该好友暂未添加!')elif option==3:newname=input("输入要修改好友的名字:\n")newsno=input("输入要修改好友的手机号:\n")change(newname,newsno)elif option==4:if(len(dir)==0):print('好友字典为空!')else:for name,sno in dir.items():print(name,sno)elif option==5:print("关闭好友系统!")flag=0else:print("输入选项有误,请重新输入!")

注意:
对于字典的修改使用update()的时候,它可以修改或插入多个键值列表,update(key1=value1,key2=value2),但是需要注意的是如果把它放入一个函数里key值是不可以当成变量改变的,所以我通过第二中方式update(dir1)来进行修改。

change函数需要修改,修改之后为:

def change(newname,newsno):dir1={}dir1.setdefault(newname, newsno)dir.update(dir1)print('修改成功!')

2、实验题目:中文数字对照表
输入一个数字,转换成中文数字。比如:1234567890 -> 壹贰叁肆伍陆柒捌玖零

num=input("请输入数字:")
list1=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']
print("转换后的结果为:")
for i in range(0,len(num)):print(list1[int(num[i])],end='')

注意:
input()函数的返回值是str类型,所以当拿它里的元素做索引下标时要转换成int类型。

3、实验题目:学生成绩管理
将学生对象存入列表中,并按成绩对学生进行排序,并获取成绩最高和成绩最低的学生信息,并将最高分和最低分的学生从列表删除,最后再对列表进行拷贝,对拷贝的列表进行翻转输出。

class student:def __init__(self,sname,grade):self.grade=gradeself.sname=snamedef __str__(self):return '姓名 '+self.sname+' 成绩 '+str(self.grade)lst3=[student('Helen',98),student('Lucy',77),student('Nacy',92),student('Bluse',68),student('Lence',82)]
def getGrade(stu):return stu.grade
lst3.sort(key=getGrade)
print('排序后的学生信息如下:')
for stu in lst3 :print(stu)
print("成绩最高的同学是:",max(lst3,key=getGrade))
print("成绩最低的同学是:",min(lst3,key=getGrade))
#删除成绩最高的和最低的同学
del lst3[0]
del lst3[3]
list3=lst3.copy()
lst3.sort(key=getGrade,reverse=True)
print('删除拷贝排序后的学生信息如下:')
for i in lst3:print(i)

注意:sort(), remove()函数的返回值为None,它是直接在原列表上做操作。max函数,min函数中有key参数,表示以某个为标准进行取大小。

4、实验题目:商品筛选
有如下商品价格:568,239,368,425,121,219,834,1263,26,请输入随意一个价格区间进行商品的筛选,并能够对筛选出的商品进行从大到小和从小到大进行排序,并求出这个区间的商品的平均价格。

price=[568,239,368,425,121,219,834,1263,26]
lst4=eval(input("请输入一个价格区间:"))
list4=[]
for i in price:if lst4[0]< i < lst4[1]:list4.append(i)
list4.sort()
print('商品价格从小到大排序为:',list4)
list4.sort(reverse=True)
print('商品价格从大到小排序为:',list4)
print("该区间商品的平均价格是",sum(list4)/len(list4))

注意:sum()内置函数的类型是int

5、实验题目:编写程序,使用列表生成表达式生成一个包含20个随机整数的列表,然后对其中偶数下标的元素进行降序排列,奇数下标的元素不变。

import random
list6=[random.randint(1,100) for i in range(0,20)]
print("生成的列表为:\n",list6)
lst6=list6[::2]
lst6.sort(reverse=True)
list6[::2]=lst6
print("改变后的列表为:\n",list6)

6、实验题目:编写程序,使用列表生成表达式生成一个包含50个随机整数的列表,然后删除其中所有奇数

对于这道题,我开始的写的代码是:

import random
list7=[random.randint(1,500) for i in range(0,50)]
print("生成的列表为:\n",list7)
for i in range(0,len(list7)):if list7[i] %2 != 0:del list7[i]
print("删除奇数后的列表为:\n",list7)

但是出现了报错:

思考为啥会报错,list7的长度就是50呀,最后还是通过老师的指点才想明白,del删除了元素,list7的长度就会发生更改变。

然后就开始想该怎么处理,想了好久,突然有了个灵感,可以先把奇数都赋值为0,然后再把0去掉不就可以了吗,然后又要解决怎么把相同的0都去掉,开始使用的是remove()函数,但是只能去掉一个0,然后突然又想到可以先转换为集合去重,然后转换为列表,0不就剩1个了吗,再用remove()不就ok了。

import random
list7=[random.randint(1,500) for i in range(0,50)]
print("生成的列表为:\n",list7)
for i in range(0,len(list7)):if list7[i] %2 != 0:list7[i]=0
list7=list(set(list7))
list7.remove(0)
print("删除奇数后的列表为:\n",list7)

这是我目前想到的方法,如果有更好的方法,希望和我交流交流,非常期待呀,一起进步~

7、实验题目:统计词频
给一段文本,例如:“who have an apple apple is free free is money you know”,请统计单词出现的次数。(提示:需要用正则表达式去掉标点符号和空格)

这道题其实老师是想让我们用正则表达式来做,无奈我学的不好,不会用,就使用其他方法啦

str="who have an apple apple is free free is money you know"
str1=str.replace(' ','')
str2=str1.replace('"','')
print(str2)
print('apple出现的次数:',str2.count('apple'))

仅仅针对这道题哦~

更多推荐

Python列表、字典练习题

本文发布于:2024-03-15 00:57:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737756.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:练习题   字典   列表   Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!