根据近两年流行的春节集五福活动,编写一个模块,实现模拟春节集五福的过程。效果如图
来了来了,代码逻辑是:先定义了五种福卡,然后按下enter键后,随机获得一种福卡。当五种福卡都至少获得一张时,程序结束,并显示用户一共获得了多少张福卡。
import random
def start_collecting():
fuku_dict = {"爱国福":0, "富强福":0, "和谐福":0, "友善福":0, "敬业福":0}
fuku_list = list(fuku_dict.keys())
total_count = 0
print("开始集福了,")
while min(fuku_dict.values()) == 0:
input("按下<enter>键获取福卡:")
acquired_fuku = random.choice(fuku_list)
fuku_dict[acquired_fuku] += 1
total_count += 1
print(f"获取了:{acquired_fuku}")
print("当前拥有的福:")
for fuku, count in fuku_dict.items():
print(f"{fuku}:{count}")
print("\n")
print("***五福已经集齐,真是有福之人***")
print(f"一共集福{total_count}次")
print("开始集福了")
start_collecting()
差不多这样了。
如果有帮助,请点击一下采纳该答案~谢谢
解题思路,定义五福字符串列表、统计已集到的五福字典、计数抽取福卡的计数器,设定终止抽取福卡的循环条件。结束循环抽取福卡,输出结果。具体操作,已经详细注释在代码行末。
我的学习笔记:代码模拟春节“集五福”(根据近两年流行的春节集五福活动,编写一个模块,实现模拟春节集五福的过程)
代码运行效果截屏图片
Python 代码
#!sur/bin/nve python
# coding: utf-8
from random import choice # 加载 random.choice() 随机抽取方法。
from random import shuffle # 加载“洗牌” random.shuffle() 方法。
def collect_five_blessing() -> None:
''' 模拟春节“集五福” '''
five_blessing_chars = ['爱国福', '富强福', '敬业福', '友善福', '和谐福']
five_blessing = dict.fromkeys(five_blessing_chars, 0) # dict.fromkeys()方法生成集五福统计字典初值。
#input(five_blessing) # 调试用语句。
n = k = 0
clear = '\033[2J' # 清屏字符串。
while n < 5:
input(f"{clear}\n{' 开始集福了…… ':~^45}\n\n{'按下<enter>键获取福卡:':>16}")
shuffle(five_blessing_chars) # 打乱五福字符。
blessing = choice(five_blessing_chars) # 随机抽取一个五福。
five_blessing[blessing] = five_blessing.get(blessing, 0) + 1 # 记录抽取的福卡。
tip = f" 您获取了:{blessing} "
local_five_blessing = [f"{key}:{value}" for key, value in five_blessing.items()]
input(f"{clear}\n{tip:~^42}\n\n当前您拥有的福卡:\n\n{' '.join(local_five_blessing)}\n")
k += 1 # 抽取福卡计数器自增 1 。
n = sum([1 if five_blessing.get(key) else 0 for key in five_blessing.keys()]) # 计算集齐的福卡。
print(f"{clear}\n{' 五福已集齐,您真是有福之人!':*^36}\n\n{f'您一共集福 {k} 次。':^43}\n\n{'':~^50}\n")
if __name__ == '__main__':
collect_five_blessing() # 调用模块集五福。