3.课后练习
1.【代码实战题1 - 智能签到系统】
练习介绍:
签到,对于我们来说再平常不过了。无论上班打卡,亦或参加某项活动,都少不了签到这一环节。
常见的有人脸识别、指纹识别、填写姓名等签到方式。
在这里,我们就以填写姓名这种方式为依据,设计一个简易的智能签到系统,避免重复签到。
【题目要求】
通过自主输入姓名,判断是否签到。如果已经签到,提示用户无需重复签到;否则,提供是否签到选项。
【书写代码】
给你一点点提示:
1)变量名建议:姓名 —— name;签到名单 —— attendance_list;回答 —— answer。
【请根据注释提示完成代码】
# 签到名单
attendance_list = ['张三', '李四']
# 获取输入的姓名,并赋值给 name
(提示:用input()获取姓名)
# 如果 name 在已签到名单,则打印"您已经签到,无需重复签到"
# 否则,询问"是否要签到?"
# 回答"是",则将 name 添加到 attendance_list 列表
# 打印"签到成功以及签到名单"
# 否则,打印"您可以稍后签到"
- 【代码实战题2 - 设计摇奖机】
【练习介绍】
不知道你有没有玩过摇奖机,只要摇动摇杆,屏幕中间的三个图案轮就会飞快转动。
当图案轮旋转停止,显示的三个图案如果相同,即为中奖。
在这里,我们做一个简易的摇奖机。
可以把列表当做“数字转盘”,为了降低操作难度,我已经为你提供了三个列表。
num_list1 = ['0', '1', '0', '1', '1', '0', '1', '0', '1', '0']
num_list2 = ['0', '1', '1', '1', '0', '0', '1', '0', '0', '1']
num_list3 = ['1', '0', '1', '1', '0', '1', '1', '0', '1', '1']
每个列表包含 10 个乱序的数字字符串,只有 '0' 和 '1'两种。
然后,把“输入一个三位数”当成“摇奖”这个动作,并把这个三位数的百位数、十位数、个位数作为索引,分别对列表取值,组成兑奖码。
以 223 这个三位数为例,对三个列表分别索引取值,组成的兑奖码是 011。
【题目要求】
随机输入一个三位数(000 - 999),可以获得一个专属的兑奖码,当兑奖码为 111 或 000 时,即为中奖,否则,未中奖。
【书写代码】
给你一点点提示:
1)变量名建议:输入的三位数 —— num,三位数中的百位数 —— hundreds_digit,三位数中的十位数 —— tens_digit,三位数中的个位数 —— ones_digit,兑换码 —— code。
【请根据注释提示完成代码】
# 创建三个数字列表
num_list1 = ['0', '1', '0', '1', '1', '0', '1', '0', '1', '0']
num_list2 = ['0', '1', '1', '1', '0', '0', '1', '0', '0', '1']
num_list3 = ['1', '0', '1', '1', '0', '1', '1', '0', '1', '1']
# 获取输入的三位数信息,并赋值给 num
# 提取三位数中的百位数
# 提取三位数中的十位数
# 提取三位数中的个位数
# 分别从三个数字列表中提取值,并拼接得到兑换码 code
# 如果兑换码是 111 或 000,打印兑换码以及"恭喜您中奖了!"
# 否则,打印兑换码以及"很遗憾您没有中奖。"