如何让Python在两个选项之间进行选择?

时间:2014-01-21 12:45:54

标签: python random

所以,我最近一直在用Python编写代码,并且它一直工作得很好,直到我想让Python在两种不同的结果之间做出选择。 看起来不起作用的代码部分如下所示:

line = ( (random.choice(str_a) + \
          random.choice(str_b) + \ 
          random.choice(str_c) + \
          random.choice(str_d) + \
          random.choice(str_e) + \
          random.choice(str_f)) or \
         ((str_g) + (random.choice(str_h)) )

str_a, b, c, d, e, f, g, h是包含多个单词的所有列表。 现在我希望Python在a-f的组合或f,g的组合之间随机选择。 出于某种原因,我没有得到任何错误,但Python只是继续选择第一个选项。

提前致谢!

5 个答案:

答案 0 :(得分:3)

为什么不再使用选择?

line = random.choice([random.choice(str_a) + random.choice(str_b) + random.choice(str_c) + random.choice(str_d) + random.choice(str_e) + random.choice(str_f)), (str_g) + (random.choice(str_h)])

答案 1 :(得分:2)

尝试以下方法:

if random.choice((True, False)):
    line = random.choice(str_a) + random.choice(str_b) + random.choice(str_c) + random.choice(str_d) + random.choice(str_e) + random.choice(str_f)
else:
    line = str_g + random.choice(str_h)

这会随机为您提供str_astr_bstr_cstr_dstr_estr_f中每个元素中的一个元素或者它会给你str_g + random.choice(str_h)

答案 2 :(得分:0)

您的代码已缩短,看起来像

line = (expr1 or expr2)

or运算符选择第一个真实的表达式,在你的情况下总是expr1

你可能想写一些类似的东西:

line = random.choice([expr1, expr2])

答案 3 :(得分:0)

试试这个:

line = (random.choice(str_a) + random.choice(str_b) + random.choice(str_c) + random.choice(str_d) + random.choice(str_e) + random.choice(str_f)) if random.randint(0,1)>0 else (str_g) + (random.choice(str_h))

答案 4 :(得分:0)

Python中的

or 表示"随机选择&#34 ;: A or B表示"如果{{1}则返回A除非是A"否则是真实的。表达式的第一部分总是真实的(正如预期的那样,因为它似乎是一个非空的字符串)所以你总是得到它。

如果您有两个值,请说BA,那么您可以使用B随机选择其中一个值。因此,您必须在此之前定义random.choice((A, B))A

B