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)
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))
3.编写程序,实现以下功能:
(1)创建空字典dic_student。
(2)由用户依次录入学生的姓名、年龄、升高和体重,存入字典dic_student,将姓名作为键,年龄、升高和体重作为值。
(3)输出字典dic_student的内容。
k=0
dic_student={
}
dic_student[("一班","王建")]=[18,"172cm","80kg"]
dic_student[("一班","张云")]=[19,"165cm","55kg"]
dic_student[("二班","张秋雨")]=[18,"178cm","82kg"]
dic_student[("二班","刘欢")]=[17,"169cm","75kg"]
dic_student[("二班","姜宇")]=[19,"170cm","70kg"]
for k,v in dic_student.items():
print("{:<5}{:<8}\t{:<4}{:<8}{:<8}".format(k[0],k[1],v[0],v[1],v[2]))
4.假设字典变量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("未查询到该国家名!")
5.试编写程序,实现以下功能:
(1)创建一个字典,存放所有已注册用户的用户名和密码。
(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('成功登录!')
6.年底了,某公司要发年终奖。列表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))
7.假设列表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))
8.假设字典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)))
9.假设已有字典变量dic_score存储了学生的成绩信息,姓名为键。试编写程序,统计每名学生的平均成绩,添加至字典,最后将字典输出。
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()
10.某幼儿园组织秋游,需要统计人数。假设字典dic_class存放了幼儿园所有的班级,内容为{“托班”:[“聪聪班”,“伶伶班”,“楠楠班”],“小班”:[“小一班”,“小二班”],“中班”:[“中一班”,“中二班”],“大班”:[“大一班”,“大二班”]}。字典dic_number存放了每个班的报名人数,内容为{“聪聪班”:26,“伶伶班”:23,“楠楠班”:25,“小一班”:32,“小二班”:31,“中一班”:33,“中二班”:34,“大一班”:32,“大二班”:33}。试编写程序,统计各年级报名人数以及全员报名总人数。
dic_class={
"托班":["聪聪班","伶伶班","楠楠班"],"小班":["小一班","小二班"],"中班":["中一班","中二班"],"大班":["大一班","大二班"]}
dic_number={
"聪聪班":26,"伶伶班":23,"楠楠班":25,"小一班":32,"小二班":31,"中一班": 33,"中二班":34,"大一班":32,"大二班":33}
dic_totle={
}
for k,v in dic_class.items():
s=0
for x in v:
s+=dic_number[x]
dic_totle[k]=s
for k,v in dic_totle.items():
print("{}:{}人".format(k,v))
print("全园:{}人".format(sum(dic_totle.values())))