完成一个“科学算命”的程序,即“科学起名”,用户可输入出生年月日时,性别,程序随机给出二字的名字,要求输入内容相同时候输出相同,输入内容不同时候输出不同。
问题描述:
如题,完成一个“科学算命”的程序,即“科学起名”,用户可输入出生年月日时,性别,程序随机给出二字的名字,要求输入内容相同时候输出相同,输入内容不同时候输出不同。用Python写
答
如果简单点,可以这样考虑:
设置一个姓名池和一个已经存在的姓名池(初始为空)
定义一个字典,key为出生日期+性别,value为对应的姓名
每输入一个出生日期和性别
去判断是否在字典中
如果不在,就从剩余的姓名中(总的姓名-已存在的姓名)随机选取一个姓名,并将这个姓名存入已存在的姓名池
如果存在,就直接从字典中获取“出生日期和性别”对应的姓名
代码大致如下:
info_dict={}
name_exist=[]
import random
name_list=['张三','王五','李四']
birthday=input('请输入出生日期(年/月/日):')
gender=input('请输入性别(男或女):')
if birthday+gender not in info_dict:
res=set(name_list)-set(name_exist)
name=random.choice(list(res))
name_exist.append(name)
info_dict[birthday+gender]=name
else:
name=info_dict[birthday+gender]
print(name)
说明:姓名较少,用完了就会报错。