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

如何让Python在两个选项中进行选择?,python,random,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) + \

所以,我最近一直在用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只是继续选择第一个选项

提前谢谢

尝试以下操作:

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)

这将随机为您提供
stru a
stru b
stru c
stru d
stru e
stru f
中的每一个元素,或者它为您提供
stru g+随机选择(str\u h)
您的代码缩短后看起来像

line = (expr1 or expr2)
运算符选择第一个truthy表达式,在您的情况下,它始终是
expr1

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

line = random.choice([expr1, expr2])
试试这个:


line=(random.choice(stru a)+random.choice(stru b)+random.choice(stru c)+random.choice(stru d)+random.choice(stru e)+random.choice(stru f))if random.random

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)])

Python中的
并不表示“随机选择”:
A或B
表示“如果
A
是真的,则返回
A
,否则
B
”。表达式的第一部分总是真实的(正如预期的那样,因为它似乎是一个非空字符串),所以您总是可以得到它

如果有两个值,例如
A
B
,则可以使用
random.choice((A,B))
随机选择其中一个值。因此,在此之前,您只需定义
A
B

A = (random.choice(str_a) + random.choice(str_b) + ...)
B = (str_g) + (random.choice(str_h))
line = random.choice((A, B))

因为
a或b
如果
a
为真,则始终返回
a
。您正在执行or-它将始终选择第一个选项。哦,亲爱的。起初它是不可读的,现在更是如此<代码>“简单比复杂好”
,你知道。一行程序没有那么好。或者可能是
'.join(随机选择s in(str_a、str_b、str_c、str_d、str_e、str_f))
。当然,根据类型的不同,我假设
stru\a
etc是字符串。对于数字使用
sum
,对于不可预测的类型使用
reduce(operator.add,…)