本问题已经有最佳答案,请猛点这里访问。
我真的不知道如何问这个问题,而且我听起来可能很愚蠢。我一直在寻找解决我遇到的问题的方法,但是我尝试过的所有方法都没有用。
我正在为我的计算机科学课开发一个项目,这是我的最后一个项目,该项目从姓名,生日,城市,地址等列表中随机生成一个身份。(注:我的老师实际上没有教我任何东西;我们阅读便笺并进行了包括便笺定义的测验,当我们找不到答案时,他只是告诉我们问邻居。这是我的第一篇文章,因此,如果格式不正确,编码技能太烂了,我先向您道歉。)无论如何,我会继续处理我的问题。
在程序开始时,它询问您是否要生成男性或女性身份:
def get_info():
global gender
global name
gender=input("Enter a gender of which you would like to randomly generate M=male F=female:")
if gender==("F"):
name=fname
elif gender==("M"):
name=mname
else:
print("Please enter either an M or F.")
get_info()
然后使用它来确定名称来自哪个列表:
fname=random.choice(list(set(["girlynames","tina","caroline","etc"])))
要么
mname=random.choice(list(set(["guynames","richard","earl","etc"])))
然后打印出一个随机的身份,包括姓名,生日等,如下所示:
Your new identity is:
Nathaniel Ellis
Your birthday is :
September 5 1985
Your address is :
470 MacMurray Acres
并且在程序的主要部分之后添加了一个功能,该功能用于询问用户是否要再次使用该程序。
def retry():
again=input("Would you like to generate another? Y/yes N/no:")
if again==('Y'):
get_info()
generate_identity()
retry()
elif again==('N'):
print("Thanks for using the identity generator! Have a spectacular day")
quit()
问题是,每次我输入" Y"和性别时,其结果都与第一次相同,即使性别不同,除名字外,所有结果都相同。
Your new identity is:
Ava Ellis
Your birthday is :
September 5 1985
Your address is :
470 MacMurray Acres
我觉得有一个简单的解决方案,但是我从该网站(以及其他来源)阅读并尝试过的所有内容均无效。使用某个项目后,是否可以将其从列表中删除?还是使结果每次都不同?或什至只是重置Python的方法,因为它只是伪随机的?我已经为此感到困惑3天了,这应该在下周一进行,而且自从我注意到这个问题以来,我就一直在stackoverflow上尝试寻找解决方案。帮助将不胜感激,您将挽救生命! :)
您如何生成地址? 您忘记了发布代码的那部分。
@Burhan对于地址,除了使用门牌号和生日/年份外,它使用与名称生成器相同的概念。 对于那些,我有random.randint。
您可以使用pop从列表中删除随机项目。
selection = random.choice(range(len(name_list)))
name = name_list.pop(selection)
这将从name_list中选择一个随机项目,将其删除,然后将其分配给name。
也就是说,看起来您的随机选择工作正常,但是您没有正确重新分配name的值。 但是您需要发布更多代码才能 仔细检查retry运行之后,您是否正在按此顺序重新分配fname / mname并将其重新分配给name。
刚开始,我在理解此解决方案时遇到了麻烦,但是最终,我弄清楚了它,现在它可以按照我的期望工作了! 这正是我所要的,我很放心,我得到了这么快的答复! 非常感谢你
大! 很高兴我能帮上忙。
:)我忘了加上这个,但是有没有办法用random.randint数字来做呢? 我有这个bdayear = random.randint(1970,1999)来生成一个出生年份,但我不能使用上面显示的相同内容,是否也有一个简单的解决方案?
当然,将年份设置为列表years = [x for x in range(1970, 2000)]。 然后使用years,就像我上面使用的name_list一样。
如果每次启动程序都将seed设置为随机数该怎么办,那么您的random.choice选项每次都会不同?
import random
seed = random.randint(0,9999)
random.seed(seed)