这可能是一个非常直截了当的问题,但想要一个简单的解释为什么?
下面的代码需要一个列表才能获得随机卡。
import random
card = random.choice (["hearts", "clubs", "frogs"])我不明白为什么它需要一个列表,为什么我不能这样做。
import = random
card = random.choice("hearts" , "clubs", "frogs")我很好,我做不到,我只是想知道为什么?
发布于 2013-06-11 23:14:07
因为,第一个片段
["hearts","clubs","frogs"]仅向函数发送一个参数(列表)
而第二个函数向函数发送三个字符串。函数choice被配置为只接受一个参数。因此,您必须将其作为列表或任何可索引的内容发送,以便它选择一个随机索引来返回值
发布于 2013-06-11 23:14:50
因为墨菲定律:任何可以以错误的方式完成的事情,总有一天会被某人以错误的方式完成。您建议的API将需要
random.choice(*lst)当要选择的值在列表(或其他序列) lst中时。当有人写下
random.choice(lst)取而代之的是,他们总是会得到lst,而不是异常。“显式优于隐式”的Python原则则规定我们必须键入一些额外的字符。
(承认,其他人指出的random.choice("foobar")结果可能会让初学者感到惊讶,但一旦您习惯了这种语言,您就会欣赏它的工作方式。)
发布于 2013-06-11 23:13:07
问题是您使用3个参数调用random.choice,而不是使用3个元素调用单个参数。例如,尝试使用random.choice(('one', 'two', 'three'))。
任何具有长度和合适的__getitem__ (用于索引)的序列都可以-因为它选择0到len(something)之间的一个数字来选择元素。
因此,如果您愿意,您可以使用元组来代替。
https://stackoverflow.com/questions/17047608
复制相似问题