Python程序设计教程(第2版)
上QQ阅读APP看书,第一时间看更新

4.2.5 列表、元组与字典之间的转换

1. 列表与字典之间的转化

Python中的list()函数可以将字典转换列表,但列表不能转换为字典。

2. 元组与字典之间的转化

Python中的tuple()函数可以将字典转换元组,但元组不能转换为字典。

【例4-5】 假设姓名不重复,现有若干同学的姓名和成绩组成键值对存放在字典stu中。stu={"张琳":58,"孙治平":70,"徐小伟":89,"徐丽萍":69,"童万丽":90,"钱志敏":84,"赵虚余":64},请编程完成如下任务:

(1)在字典中添加姓名为晋宇浩的同学,成绩显示为“缺考”;

(2)张琳的成绩改为60;

(3)删除徐小伟以及她的成绩;

(4)显示原有字典和现有字典;

(5)统计当前总人数;

(6)从键盘输入一个同学的姓名,显示该同学的成绩,如字典中无此同学显示“没找到该同学”。

第1种做法:

程序代码:

程序可能的一次运行结果:

程序可能的另一次运行结果:

第2种做法:

程序代码:

思考:从键盘输入一个同学的姓名,如果该姓名存在则输出成绩后又可以再次输入姓名输出成绩,直到字典中没有该姓名时程序运行结束。

程序可能的一次运行结果:

【例4-6】 某人买了4只股票,编号1~4,股票代码、股票名称和买入价分别是:601398、工商银行、5.51;000001、平安银行、8.94;601939、建设银行、6.89;601328、交通银行、5.61。请用字典实现根据编号查询购买的股票信息。要求:输入编号,可以一直查询购买的股票信息,直到输入编号以外的任意数字显示“无查询结果”,并结束程序。

程序代码:

程序可能的一次运行结果:

思考:如何让股票信息不是直接以列表形式显示,而是以“股票代码:601939,股票名称:建设银行,买入价:6.89”这种方式显示,程序如何修改?

程序代码:

程序可能的一次运行结果:

【例4-7】 根据客户等级及订货量计算订货额。

建立字典,客户分ABCD(不区分大小写)类,A类客户享受9折优惠,B类客户享受9.2折优惠,C类客户享受9.5折优惠,D类客户不享受折扣优惠。假定商品标准价格是100元。不管哪一类客户,对不同的订货量,还可享受不同的价格优惠:订货量小于500元无折扣,500~1999元折扣0.05,2000~4999元折扣0.1,5000~20000元折扣0.15,20000元以上折扣0.2。客户可同时享受价格优惠和客户等级优惠。订货量为整数。

要求:只要输入客户等级和订货量,就计算出订货额;客户等级和订货量需判断是否输入正确,客户等级或订货量不输入任何字符或者输入有误,均会退出程序,显示“请输入正确信息,谢谢!”。

程序代码:

程序可能的一次运行结果:

思考:请结合第3章控制结构的相关知识,说明需要设计怎样的测试用例才能把每个分支都检测到?