使用随机函数和列表

时间:2018-04-21 11:48:03

标签: python list

这是我的代码

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

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

如果我这样做,代码会获取国家/地区的元素,但是当我尝试使用它创建函数时,我失败了。例如,我有很多catogories所以我不想写,如果函数像每个catagory 10倍.Hence我试着这样写它

  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值。

2 个答案:

答案 0 :(得分:0)

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

这样的东西
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)

答案 1 :(得分:0)

您将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()应用于用户输入的字符串。大多数用户可能会在某些时候出错,而恶意用户可能会滥用它来破坏您的程序甚至系统。