python列表随机选择并删除_关于字符串:Python:使用完项目后,有什么方法可以从列表中删除它(随机)? 或更改random.choice的结果...

本问题已经有最佳答案,请猛点这里访问。

我真的不知道如何问这个问题,而且我听起来可能很愚蠢。我一直在寻找解决我遇到的问题的方法,但是我尝试过的所有方法都没有用。

我正在为我的计算机科学课开发一个项目,这是我的最后一个项目,该项目从姓名,生日,城市,地址等列表中随机生成一个身份。(注:我的老师实际上没有教我任何东西;我们阅读便笺并进行了包括便笺定义的测验,当我们找不到答案时,他只是告诉我们问邻居。这是我的第一篇文章,因此,如果格式不正确,编码技能太烂了,我先向您道歉。)无论如何,我会继续处理我的问题。

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

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值