我真的不知道如何提出这个问题,我可能听起来很愚蠢。我一直在寻找解决我遇到过的问题的方法,但我尝试过的一切都没有奏效。 我正在为我的计算机科学课做一个项目,作为我的决定,从名单,生日,城市,地址等列表中随机生成一个身份。(旁注:我的老师实际上并没有教过我任何东西;我们读笔记并做了由笔记定义组成的小测验,当我们无法解决问题时,他只是告诉我们问邻居。这是我在这里发表的第一篇文章,所以如果格式不正确,我的编码技巧很糟糕,我会提前道歉。)无论如何,我会继续处理我的问题/问题。
在程序开始时,它会询问您是否要生成男性或女性身份:
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 试图找到解决方案,因为我发现了问题。非常感谢帮助,您将成为一个救生员! :)
答案 0 :(得分:1)
您可以使用pop
从列表中删除随机项。
selection = random.choice(range(len(name_list)))
name = name_list.pop(selection)
这会从name_list
中选择一个随机项,将其删除,然后将其分配给name
。
也就是说,看起来您的随机选择工作正常,但您没有正确地重新分配名称的值。但是您需要发布更多代码才能确定。仔细检查在retry
运行后,您将重新分配fname / mname并按顺序重新分配名称。
答案 1 :(得分:-1)
如果每次启动程序时将seed
设置为随机数,那么 random.choice 选项每次都会有所不同?
import random
seed = random.randint(0,9999)
random.seed(seed)