Python:有没有办法在使用一个项目后从列表(随机)中删除它?或者改变随机选择的结果

Python:有没有办法在使用一个项目后从列表(随机)中删除它?或者改变随机选择的结果,python,string,list,random,Python,String,List,Random,我真的不知道怎么问这个问题,我可能听起来很愚蠢。我一直在寻找解决问题的方法,但我所尝试的一切都没有奏效。 我正在为我的计算机科学课做一个项目,作为我的期末考试,从姓名、生日、城市、地址等列表中随机生成一个身份。(旁注:我的老师实际上没有教我任何东西;我们阅读笔记,做由笔记中的定义组成的测验,当我们弄不懂一些东西时,他只是告诉我们去问我们的邻居。这是我在这里的第一篇帖子,所以如果格式不正确,我的编码技能很差,我提前道歉。)无论如何,我会继续我的问题 在课程开始时,它会询问您是否要生成男性或女性身份

我真的不知道怎么问这个问题,我可能听起来很愚蠢。我一直在寻找解决问题的方法,但我所尝试的一切都没有奏效。 我正在为我的计算机科学课做一个项目,作为我的期末考试,从姓名、生日、城市、地址等列表中随机生成一个身份。(旁注:我的老师实际上没有教我任何东西;我们阅读笔记,做由笔记中的定义组成的测验,当我们弄不懂一些东西时,他只是告诉我们去问我们的邻居。这是我在这里的第一篇帖子,所以如果格式不正确,我的编码技能很差,我提前道歉。)无论如何,我会继续我的问题

在课程开始时,它会询问您是否要生成男性或女性身份:

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"])))

然后打印出一个随机的身份,包括姓名、生日等,如下所示:

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,因为它只是伪随机的?我已经被困在这个问题上三天了,下周一到期,我一直在stackoverflow上试图找到解决方案在上,因为我注意到了这个问题。我们将非常感谢您的帮助,您将成为一名救生员!:)

如果您在每次启动程序时将
种子设置为随机数,那么您的random.choice选项每次都会有所不同,会怎么样

import random
seed = random.randint(0,9999)
random.seed(seed)

如果每次启动程序时都将
种子设置为随机数,那么您的random.choice选项每次都会有所不同,那会怎么样

import random
seed = random.randint(0,9999)
random.seed(seed)

您可以使用
pop
从列表中删除随机项

selection = random.choice(range(len(name_list)))
name = name_list.pop(selection)
这将从
name\u列表
中选择一个随机项,将其删除,并将其分配给
name


也就是说,看起来您的随机选择工作正常,但是您没有正确地重新分配name的值。但您需要发布更多的代码才能确定。再次检查运行
重试
后,您是否按照顺序重新分配fname/mname并将其重新分配给name。

您可以使用
pop
从列表中删除随机项

selection = random.choice(range(len(name_list)))
name = name_list.pop(selection)
这将从
name\u列表
中选择一个随机项,将其删除,并将其分配给
name


也就是说,看起来您的随机选择工作正常,但是您没有正确地重新分配name的值。但您需要发布更多的代码才能确定。再次检查运行
retry
后,您是否按照顺序重新分配fname/mname并将其重新分配给name。

您是如何生成地址的?您忘记发布代码的这一部分。@Burhan对于地址,它使用与名称生成器相同的概念,除了门牌号和生日/年份。对于这些,我有random.randint。你是如何生成地址的?您忘记发布代码的这一部分。@Burhan对于地址,它使用与名称生成器相同的概念,除了门牌号和生日/年份。对于这些,我有random.randint。起初,我在理解这个解决方案时遇到困难,但最终,我找到了它,现在它正按照我想要的方式工作!这正是我一直在寻找的,我很欣慰,我得到了这么快的答复!非常感谢,太好了!很高兴我能帮上忙。:)我忘了加上这个,但是有没有办法用一个random.randint数字?我用这个bdayear=random.randint(19701999)来生成出生年份,但我不能使用上面显示的相同东西,是否也有一个简单的解决方案?当然,将年份设置为一个列表,
years=[x代表范围内的x(1970,2000)]
。然后使用
years
,就像我在上面使用的
name\u list
一样。起初,我在理解这个解决方案时遇到困难,但最终,我找到了它,现在它正按照我想要的方式工作!这正是我一直在寻找的,我很欣慰,我得到了这么快的答复!非常感谢,太好了!很高兴我能帮上忙。:)我忘了加上这个,但是有没有办法用一个random.randint数字?我用这个bdayear=random.randint(19701999)来生成出生年份,但我不能使用上面显示的相同东西,是否也有一个简单的解决方案?当然,将年份设置为一个列表,
years=[x代表范围内的x(1970,2000)]
。然后使用
years
,就像我在上面使用的
name\u列表一样。