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