实验2.5.2 Python 基础之字典
第1关:字典的使用:这份菜单可以修改字典和列表一样,都是 Python 中十分重要的可迭代类型,都可以存储任意类型元素。如果将列表看作有序对象的集合,那么可以将字典当作无序的集合。我们将以菜单的例子来说明字典使用的基本知识,餐馆的菜单上不仅包含菜名,菜名后面还必须包含该道菜的价格。如果要用列表实现,就需要两个列表,例如:list_menu = ['fish','pork','potato','no
第1关:字典的使用:这份菜单可以修改
字典和列表一样,都是 Python 中十分重要的可迭代类型,都可以存储任意类型元素。如果将列表看作有序对象的集合,那么可以将字典当作无序的集合。我们将以菜单的例子来说明字典使用的基本知识,餐馆的菜单上不仅包含菜名,菜名后面还必须包含该道菜的价格。如果要用列表实现,就需要两个列表,例如:
list_menu = ['fish','pork','potato','noodles']
list_price = [40,30,15,10]
给定一个菜名,要查找相应的价格,就先要在list_menu
中找到相应的位置,再在list_price
中找到相应的价格。这种方式效率低下,那么我们是否可以将菜名和价格都存储在一个可变容器中呢?答案是可以的。
在本关中,我们将学习和掌握能够将相关信息关联起来的 Python 字典的相关知识,并完成对包含菜名和价格的菜单的处理操作。
编程要求:
-
向
menu_dict
字典中添加一道菜名lamb
,它的价格是50
; -
获取
menu_dict
字典中的fish
的价格并打印出来; -
将
menu_dict
字典中的fish
的价格改为100
; -
删除
menu_dict
字典中noodles
这道菜; -
输出新的
menu_dict
菜单。
# 创建并初始化menu_dict字典
menu_dict = {}
while True:
try:
food = input()
price = int(input())
menu_dict[food]= price
except:
break
# 请在此添加代码,实现对menu_dict的添加、查找、修改等操作,并打印输出相应的值
########## Begin ##########
menu_dict['lamb']=50
print(menu_dict['fish'])
menu_dict['fish']=100
del menu_dict['noodles']
print(menu_dict)
########## End ##########
第2关:字典的遍历:菜名和价格的展示
Python 字典中包含大量数据,它和列表一样,支持遍历操作。Python有多种遍历字典的方式,可以遍历字典的所有键-值对、键或值。例如,餐馆的菜单包含了菜名和价格等信息,餐馆需要将菜名和价格都展示给顾客,但也有些时候只需要将菜名都展示给厨师,还有些时候只需要将价格展示给收银员,这三种情况就用到了字典不同的遍历方式。
本关的目标是让学习者掌握字典遍历的相关知识和用法,并基于这些知识实现对菜单不同的查找和展示处理。
对于餐馆中的厨师来说,他们并不想要知道菜的价格,只需要知道菜名然后将其做出来就行。所以对于厨师来说,我们需要遍历menu
字典中的所有菜名。Python 为字典类型内置了keys()
方法,该方法会将字典里的键遍历出来。
对于餐馆中的收银员来说,他们可能并不想知道菜单的菜名,只需要知道菜的价格,然后收账即可。所以对于收银员来说,我们需要遍历menu
字典中的所有菜的价格。Python 为字典类型内置了values()
方法,该方法会将字典里的值遍历出来。
编程要求
-
将
menu_dict
菜单的键遍历输出; -
将
menu_dict
菜单的值遍历输出。
# 创建并初始化menu_dict字典
menu_dict = {}
while True:
try:
food = input()
price = int(input())
menu_dict[food]= price
except:
break
# 请在此添加代码,实现对menu_dict的遍历操作并打印输出键与值
########## Begin ##########
for key in menu_dict.keys():
print(key)
for value in menu_dict.values():
print(value)
########## End ##########
第3关:嵌套 - 菜单的信息量好大
Python 的列表和字典可以存储任意类型的元素,所以我们可以将字典存储在列表中,也可以将列表存储在字典中,这种操作称为嵌套。例如,餐馆中的菜单不仅仅包含菜名和价格,可能还会包含很多其他信息,这时候我们可能就需要采取嵌套的存储方式。
本关任务是让学习者利用嵌套方式存储菜单,让读者掌握 Python 嵌套的基本操作。
编程要求:
-
menu_total
列表中初始时只包含menu1
字典,menu1
字典中包含两道菜和两道菜的价格; -
编程要求是向
menu_total
列表中添加另外一个菜单字典menu2
,menu2
菜单中的菜名和menu1
菜单一样,菜的价格是menu1
菜的价格的2倍; -
输出新的
menu_total
列表。
# 初始化menu1字典,输入两道菜的价格
menu1 = {}
menu1['fish']=int(input())
menu1['pork']=int(input())
menu2={}
# menu_total列表现在只包含menu1字典
menu_total = [menu1]+[menu2]
# 请在此添加代码,实现编程要求
########## Begin ##########
menu2['fish']=2*menu1['fish']
menu2['pork']=2*menu1['pork']
########## End ##########
# 输出menu_total列表
print(menu_total)
第4关:字典遍历:菜价统计
字典和列表一样,都是 Python 中十分重要的可迭代类型,都可以存储任意类型元素。如果将列表看作有序对象的集合,那么可以将字典当作无序的集合。我们将以菜单的例子来说明字典使用的基本知识 在本关中,我们将学习和掌握能够将相关信息关联起来的 Python 字典的相关知识,并完成对包含菜名和价格的菜单的处理操作。
统计给定菜单menu_dict,计算菜单中菜价的平均值并输出.
# 创建并初始化menu_dict字典
menu_dict = eval(input())
a=[]
# 请在此添加代码,实现对menu_dict平均菜价的计算,并打印输出
########## Begin ##########
for v in menu_dict.values():
a.append(v)
b=sum(a)/len(a)
print('平均菜价为:{:.2f}元'.format(b))
########## End ##########
第5关:数字统计
字典和列表一样,都是 Python 中十分重要的可迭代类型,都可以存储任意类型元素。本关中我们需要统计字符串中0-9每个数字出现的次数存储并存储在字典。
给定一个字符串s,统计0-9每个数字在字符串s中出现的次数存储在字典count,并输出字典。
from math import *
# 输入字符串
s=input()
# 创建并初始化字典
count={}
# 请在此添加代码,统计0-9每个数字在字符串中出现的次数存储在字典count,并输出字典
########## Begin ##########
for i in range(0,10):
i=str(i)
a=0
for j in s:
if i==j:
a=a+1
i=int(i)
count[i]=a
print(count)
########## End ##########
第6关:列表嵌套字典:查找成绩
字典和列表可以相互嵌套。本关中我们通过列表嵌套字典来存储若干个同学的成绩,如下例所示。 [{'name':'张小明','score':95}, {'name':'李小红','score':85},{'name':'王小刚','score':75}] 列表的每一个元素都是字典类型,存储一位学生的姓名与成绩,本关任务是按指定姓名查找成绩,并统计平均、最高、最低成绩,输出上述信息。
编程要求
程序会输入一个查找姓名name,一个用字典嵌套列表scores存储学生的姓名和成绩,请查找姓名为name的同学的成绩,并统计显示平均成绩、最高最低成绩,按指定格式输出;如成绩表中没有该姓名,则输出‘没有该姓名’。
# 输入查找姓名
name=input()
# 创建并初始化成绩字典列表
scores=eval(input())
a=[]
# 请在此添加代码,查找姓名为name的同学的成绩,并统计显示平均成绩、最高最低成绩,按指定格式输出
########## Begin ##########
x=str(scores)
if name not in x:
print('没有该姓名')
else:
for i in scores:
if i['name']==name:
print('姓名:{},成绩:{:.2f}'.format(i['name'],i['score']))
a.append(i['score'])
print('平均成绩:{:.2f},最高成绩:{:.2f},最低成绩:{:.2f}'.format(sum(a)/len(a),max(a),min(a)))
########## End ##########
求个三连吧。。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)