python 实验七 字典与集合 (上)

1.莫尔斯电码是一种早期的数字化通信形式,它通过“·”和“-”的不同排列顺序来表示不同的英文字母、数字以及标点符号。试编写程序,使用字典存放下表的内容,将用户输入的字符串(假设只包含英文字母)以莫尔斯电码的形式输出。

dic_morse={"A":"•−","B":"−•••","C":"−•−•","D":"−••","E":"•","F":"••−•","G":"−−•",
           "H":"••••","I":"••","J":"•−−−","K":"−•−","L":"•−••","M":"−−","N":"−•",
           "O":"−−−","P":"•−−•","Q":"−−•−","R":"•−•","S":"•••","T":"−",
           "U":"••−","V":"•••−","W":"•−−","X":"−••−","Y":"−•−−","Z":"−−••"}	
s=input("请输入字符串(只包含字母):").upper()
morse_code=""
for c in s:
    morse_code+=dic_morse[c]
print(morse_code)


#输出样例

请输入字符串(只包含字母):abcd
•−−•••−•−•−••

2.编写程序,实现以下功能:
(1)创建空字典dic_student。
(2)由用户依次输入五名学生的姓名和年龄,存入字典dic_student。
(3)输出字典dic_student中的内容,格式为:
王建 18
张云 19
张秋雨 18
刘欢 17
姜宇 19

dic_student={}
for i in range(1,6):
    name=input("请输入第"+str(i)+"个学生的姓名:")
    age=input("请输入第"+str(i)+"个学生的年龄:")
    dic_student[name]=age
for k,v in dic_student.items():
    print("{:<3}\t{}岁".format(k,v))

#输出结果

请输入第1个学生的姓名:王建
请输入第1个学生的年龄:18
请输入第2个学生的姓名:张云
请输入第2个学生的年龄:19
请输入第3个学生的姓名:张秋雨
请输入第3个学生的年龄:18
请输入第4个学生的姓名:刘欢
请输入第4个学生的年龄:17
请输入第5个学生的姓名:姜宇
请输入第5个学生的年龄:19
王建 18岁
张云 19岁
张秋雨 18岁
刘欢 17岁
姜宇 19岁

3.以下是某电商卖家在售产品价目一览表。

表7-2
产品名称价格/元
方糖99
X1499
魔盒399

试编写程序,实现以下功能:
(1)使用字典myDict存放表7-2中的信息,产品名称作为键,价格作为值。
(2)输出所有在售产品的价目表。格式为
方糖…………99元
X1 …………499元
魔盒…………399元
曲奇…………299元
(3)输出所有产品的价格。
(4)输出价格最高的产品价格。

myDict={'方糖':99,'x1':499,'魔盒':399,'曲奇':299}
print('\t价目表')
for k,v in myDict.items():
    print(k+'\t…………\t'+str(v))
lst=[]
for v in myDict.values():
    lst.append(v)
print('所有产品的平均价为:{}'.format(sum(lst)/len(lst)))
newlst=[(v,k) for k,v in myDict.items()]
newlst.sort()
print('价格最高的产品是:{}'.format(newlst[-1][1]))

#输出结果

方糖 ………… 99
x1 ………… 499
魔盒 ………… 399
曲奇 ………… 299
所有产品的平均价为:324.0
价格最高的产品是:x1

4.编写程序,实现以下功能:
(1)创建空字典dic_student。
(2)由用户依次录入学生的姓名、年龄、升高和体重,存入字典dic_student,将姓名作为键,年龄、升高和体重作为值。
(3)输出字典dic_student的内容。

dic_student={}
for i in range(1,6):
    name=input("请输入第"+str(i)+"个学生的姓名:")
    age=input("请输入第"+str(i)+"个学生的年龄:")
    height=input("请输入第"+str(i)+"个学生的身高:")
    weight=input("请输入第"+str(i)+"个学生的体重:")
    dic_student[name]=[age,height,weight]
for k,v in dic_student.items():
    print("{:<3}\t{}岁\t{}cm\t{}kg".format(k,v[0],v[1],v[2]))

#输出结果

请输入第1个学生的姓名:王建
请输入第1个学生的年龄:18
请输入第1个学生的身高:172
请输入第1个学生的体重:80
请输入第2个学生的姓名:张云
请输入第2个学生的年龄:19
请输入第2个学生的身高:165
请输入第2个学生的体重:55
请输入第3个学生的姓名:张秋雨
请输入第3个学生的年龄:18
请输入第3个学生的身高:178
请输入第3个学生的体重:82
请输入第4个学生的姓名:刘欢
请输入第4个学生的年龄:17
请输入第4个学生的身高:169
请输入第4个学生的体重:75
请输入第5个学生的姓名:姜宇
请输入第5个学生的年龄:19
请输入第5个学生的身高:170
请输入第5个学生的体重:70
王建 18岁 172cm 80kg
张云 19岁 165cm 55kg
张秋雨 18岁 178cm 82kg
刘欢 17岁 169cm 75kg
姜宇 19岁 170cm 70kg

5.编写程序,实现以下功能:
(1)创建空字典dic_student。
(2)由用户依次录入学生的班级,姓名、年龄、升高和体重,存入字典dic_student,将姓名作为键,年龄、升高和体重作为值。
(3)输出字典dic_student的内容。

dic_student={}
for i in range(1,6):
    Class=input("请输入第"+str(i)+"个学生的班级:")
    name=input("请输入第"+str(i)+"个学生的姓名:")
    age=input("请输入第"+str(i)+"个学生的年龄:")
    height=input("请输入第"+str(i)+"个学生的身高:")
    weight=input("请输入第"+str(i)+"个学生的体重:")
    dic_student[(Class,name)]=[age,height,weight]
for k,v in dic_student.items():
    print("{:<3}\t{}\t{}岁\t{}cm\t{}kg".format(k[0],k[1],v[0],v[1],v[2]))

#输出结果

与4题同理自己依次输入五名同学的班级,姓名、年龄、升高和体重就可以了

6.假设字典变量dic_country存储了部分国家的国家名与首都名的对应关系,其中国家名为键,首都名为值。试编写程序,根据用户输入的国家名查询首都名,如果存在则输出查询结果,否则提示“未查询该国家名!”。假设对国家名进行查询不区分大小写。

dic_country={"China":"Beijing","America":"Washington","Norway":"Oslo","Japan":"Tokyo","Germany":"Berlin","Canada":"Ottawa","France":"Paris","Thailand":"Bangkok"}
country=input("请输入国家名:").lower().capitalize()
if country in dic_country:
    print("首都名:{}".format(dic_country[country]))
else:
    print("未查询到该国家名!")

#输出样例

请输入国家名:China
首都名:Beijing

7.试编写程序,实现以下功能:
(1)创建一个字典,存放所有已注册用户的用户名和密码,内容如表7-4所示。

表7-4
用户名密码
John123
Maryy111
Tommy123456

(2)提示用户输入用户名和密码。
(3)依次对用户名和密码进行判断,并给出相应的提示。
若用户名输入错误,则提示“用户名不正确!”
若密码输入错误,则提示“密码不正确!”
若用户名和密码均正确,则提示“登陆成功!”

myDict={"John":"123","Marry":"111","Tommy":"123456"}
username=input('请输入用户名:')
if username not in myDict:
    print('该用户不存在!')
else:
    password=input('请输入密码:')
    if password!=myDict[username]:
        print('密码不正确!')
    else:
        print('成功登录!')

#输出样例

请输入用户名:Tommy
请输入密码:123456
成功登录!

8.年底了,某公司要发年终奖。列表lst_staff中存放了所有员工的名单,内容为[“李梅”,“张富”,“付妍”,“赵诺”,“刘江”]。字典dic_award中存放了对公司有杰出贡献的员工名单及奖金金额,内容为{“张富”:10000,“赵诺”:15000}。试编写程序,输出每位员工应发年终奖金额。dic_award中未包含的员工年终奖金额为5000元/人。

lst_staff=["李梅","张富","付妍","赵诺","刘江"]
dic_award={"张富":10000,"赵诺":15000}
for x in lst_staff:
    if x in dic_award:
        print("{}年终奖:{}元".format(x,dic_award[x]))
    else:
        print("{}年终奖:{}元".format(x,5000))

#输出结果

李梅年终奖:5000元
张富年终奖:10000元
付妍年终奖:5000元
赵诺年终奖:15000元
刘江年终奖:5000元

9.假设列表lst_busstop=[“龙江新城市”,“阳光广场”,“汉江路”,“嫩江路”,“清凉山公园”,“拉萨路”,“五台山”,“莫愁路”],存放了某公交路线途径的公交站名。另有字典dic_estate={“龙江新城市”:[“白云园”,“腾飞园”],“阳光广场”:[“龙江小区”,“芳草园”],“汉江路”:[“金信花园”,“龙凤花园”],“嫩江路”:[“西城蓝湾”,“花开四季”]},存放了部分公交站附近的小区。试编写程序,根据用户输入的起点(小区名)和终点(小区名),查询公交路线。例如,起点为“白云园”,终点“龙凤花园”,则输出结果为“起始站:龙江新城市站,终点站:汉江路站,共2站”。若起点为“龙凤花园”,终点为“白云园”,则输出“您需要乘坐反方向路线”。

lst_busstop=["龙江新城市","阳光广场","汉江路","嫩江路","清凉山公园","拉萨路"," 五台山","莫愁路"]
dic_estate={"龙江新城市":["白云园","腾飞园"],"阳光广场":["龙江小区","芳草园"],"汉江路":["金信花园","龙凤花园"],"嫩江路":["西城蓝湾","花开四季"]}
start=input("请输入起点(小区名):")
end=input("请输入终点(小区名):")
for k,v in dic_estate.items():
    if start in v:
        startStop=k
        break
for k,v in dic_estate.items():
    if end in v:
        endStop=k
        break
startIndex=lst_busstop.index(startStop)
endIndex=lst_busstop.index(endStop)
if startIndex>endIndex:
    print("您需要乘坐反方线线路。")
else:
    print("起点站:{}站,终点站:{}站,共{}站。".format(startStop,endStop,endIndex-startIndex))

#输出样例

请输入起点(小区名):白云园
请输入终点(小区名):龙凤花园
起点站:龙江新城市站,终点站:汉江路站,共2站。

10.假设字典dic_city存放了每个人旅游过的城市,内容为{“张三凤”:[“北京”,“成都”],“李茉绸”:[“上海”,“广州”,“兰州”],“慕容海”:[“太原”,“西安”,“济南”,“上海”]}。试编写程序,实现以下功能。
(1)统计每个人旅游过的城市数目。
(2)统计去过上海的人数以及名单。

dic_city={"张三风":["北京","成都"],"李茉绸":[ "上海", "广州", "兰州"], "慕容福":[ "太原", "西安","济南","上海"]}
for k,v in dic_city.items():
    print("{}去过了{}个城市".format(k,len(v)))
name=[]
for k,v in dic_city.items():
    if "上海" in v:
        name.append(k)
print("去过上海的有{}人,他们是{}".format(len(name),"、".join(name)))

#输出结果

张三风去过了2个城市
李茉绸去过了3个城市
慕容福去过了4个城市
去过上海的有2人,他们是李茉绸、慕容福

11.假设已有字典变量dic_score存储了学生的成绩信息(见表7-5),姓名为键。试编写程序,统计每名学生的平均成绩,添加至字典,最后将字典输出。

表7-5
姓名语文数学英语计算机平均分
徐丽8890989592.75
张兴8592959892.5
刘宁8989909290.0
张旭8286899086.75
dic_score={"徐丽":[88,90,98,95],"张兴":[85,92,95,98],"刘宁":[89,89,90,92],"张旭":[82,86,89,90]}
for k,v in dic_score.items():
    dic_score[k].append(sum(v)/len(v))
print("姓名\t语文\t数学\t英语\t计算机\t平均分")
for k,v in dic_score.items():
    print(k,end="\t")
    for x in v:
        print(x,end="\t")
    print()

#输出结果

姓名 语文 数学 英语 计算机 平均分
徐丽 88 90 98 95 92.75
张兴 85 92 95 98 92.5
刘宁 89 89 90 92 90.0
张旭 82 86 89 90 86.75

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年5月11日
下一篇 2023年5月11日

相关推荐