随机函数和列表的用法

2024-04-29 09:27:31 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码

N=str(input("Enter the catagory: "))
 Countries=["canada","albania","cuba"]

if N=="Countries":
    y=random.choice(Countries)

如果我这样做的话,代码会接受国家的元素,但是当我尝试使用它创建函数时,我失败了。例如,我有许多catogories,所以我不想写,如果像每10次函数分类。因此我试着这样写

  N=str(input("Enter the catagory: "))
  Countries=["canada","albania","cuba"]

  def cata(N):
    y=random.choice(N)
    z=len(str(y))
    return (z,y)

但在这个时候,当我键入国家时,我只得到国家的字母,所以代码引用的是“国家”这个词,而不是列表名字。还有我需要国家名单上的要素。我不知道怎么修

谢谢。你知道吗

函数结束后,我需要y和z值。你知道吗


Tags: the函数代码密码inputrandom国家countries
2条回答

如果您有许多类别,并且需要一个函数从其中一个列表中返回一个随机值,这取决于您发送的列表的名称,我认为最好的方法是通过一个以列表为值的字典来实现。像这样的

dic = { 
   'countries' : ["A","B","C"] 
   'cities' : ["X","Y","Z"]
}

现在,您的函数可以将列表的名称作为参数,并使用它在字典中查找以获得适当的列表,并从中返回一个随机值

N = str(input("Enter the catagory: "))
def cata(n):
    y = random.choice(dic[n])

cata(N)

您将str(一段数据)与变量和一段程序代码混为一谈。你知道吗

如果用户在输入中输入'Countries',字符串N就会变成['C', 'o', 'u', ...]内的列表random.choice(N)。你知道吗

要“修复”你的程序,你可以这样做:

Countries = ["canada","albania","cuba"]
N = str(input("Enter the catagory: "))
y = random.choice(eval(N))
...

但是,强烈建议不要对用户输入的字符串应用eval()。大多数用户至少在某些时候会犯错误,恶意用户可能会滥用它来破坏您的程序甚至系统。你知道吗

相关问题 更多 >