所以,我最近一直在用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只是继续选择第一个选项。
提前致谢!
答案 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_a
,str_b
,str_c
,str_d
,str_e
,str_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)
or
不表示"随机选择&#34 ;: A or B
表示"如果{{1}则返回A
除非是A
"否则是真实的。表达式的第一部分总是真实的(正如预期的那样,因为它似乎是一个非空的字符串)所以你总是得到它。
如果您有两个值,请说B
和A
,那么您可以使用B
随机选择其中一个值。因此,您必须在此之前定义random.choice((A, B))
和A
:
B