IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python列表、字典练习题 -> 正文阅读

[Python知识库]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 name
    return 0
def change(name,newname):
    lst[lst.index(name)]=newname
    print('修改成功!')

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=0
    else:
        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=0
    else:
        print("输入选项有误,请重新输入!")

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

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=grade
        self.sname=sname
    def __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知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-12 19:32:52  更:2021-11-12 19:34:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:28:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码