如何让Python在两个选项中进行选择?
所以,我最近一直在用Python编写代码,它一直工作得很好,直到我想让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) + \
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,…)
。