Wie man Python-wählen Sie zwischen zwei Optionen?
So, ich Schreibe einen Programmcode in Python in letzter Zeit und es wurde perfekt funktioniert, bis ich wollte Python haben die Wahl zwischen zwei unterschiedlichen Ergebnissen.
Der Teil des Codes, die nicht scheinen, zu arbeiten, sieht wie folgt aus:
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
sind alle Listen enthalten einige Worte.
Jetzt möchte ich Python, um nach dem Zufallsprinzip wählen zwischen der Kombination von a-f
ODER die Kombination von f,g
.
Aus irgendeinem Grund habe ich keine Fehlermeldung erhalten, aber Python eben hält die Wahl für die erste option.
Vielen Dank im Voraus!
- da
a or b
immer wiedera
wenna
wahr ist. - Sie sind dabei eine oder - es ist immer die erste option wählen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum nicht Wahl wieder?
"Simple is better than complex"
Sie wissen. Einzeiler sind nicht so toll.Versuchen Sie Folgendes:
Diesem zufällig gibt Sie entweder je eines der Elemente in
str_a
,str_b
,str_c
,str_d
,str_e
,str_f
oder es gibt Siestr_g + random.choice(str_h)
.''.join(random_choice(s) for s in (str_a, str_b, str_c, str_d, str_e, str_f))
. Abhängig von der Art, natürlich, ich gehe davon ausstr_a
usw. sind Zeichenketten. Für die zahlen verwendensum
, und für unvorhersehbare Artenreduce(operator.add, ...)
.Ihren code, verkürzt, sieht aus wie
Den
or
Betreiber picks der erste Ausdruck ist truthy, die man immerexpr1
in Ihrem Fall.Sie wollten wahrscheinlich etwas schreiben wie:
Versuchen Sie dies:
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))
or
in Python nicht bedeutet "wählen Sie "zufällig":A or B
bedeutet "zurückA
wennA
ist truthy sonstB
". Der erste Teil des Ausdrucks ist immer truthy (wie erwartet, denn es scheint ein nicht leerer string), so dass Sie immer bekommen.Wenn Sie zwei Werte haben, sagen
A
undB
dann können Sie einen von Ihnen wählen nach dem Zufallsprinzip durch die Verwendungrandom.choice((A, B))
. So müssen Sie nur noch definierenA
undB
vor, dass: