Nur Python3.8 +
print("a|b|c"*-~-((a:=input("a:Par\nb:Choki\nc:Schmiere\n"))in"abc")or"Draw"*((b:=__import__("random").choice("abc"))==a)or"You "+"lwoisne"[b+a in"abbcca"::2],f"\nyou:{a} pc:{b}")
185 Bytes
Zuallererst kann es vielleicht kürzer sein ...
Gut, um es verständlicher zu machen
import random
a = input("a:Par\nb:Choki\nc:Schmiere")
b = random.choice("abc")
if -~-(a in "abc"):
print("a|b|c")
elif a == b:
print("Draw")
else:
print("win" if b+a in "abbcca" else "lose")
print(f"you:{a} pc:{b}")
Ist es so Ich ändere es ein wenig.
Das wahrscheinlich mysteriöseste ist - ~ -
. Dies bedeutet, dass ~ -ist -1 (- ~ ist +) und es ist weiter-. Wenn a in" abc "
True ist (weil bool eine Unterklasse von int ist), ist es -1 und wird-, also wird es -0, dh 0, und wenn False, wird es 1. Kurz gesagt bedeutet dies, dass nicht 〇〇 kurz geschrieben ist. (Im Fall der Unterseite wird es länger, aber im Fall der Oberseite wird es kürzer)
Ist es dann b + a in" abbcca "
? Dies ist ein Urteil über das Gewinnen oder Verlieren. Es ist möglicherweise einfacher zu verstehen, wenn Sie es von ab / bc / ca. trennen.
__import__
ist eine Funktion, die das durch das Argument angegebene Modul importiert und das Objekt zurückgibt. (Ist es nicht korrekt?) Weitere Informationen finden Sie unter hier.
Ist es so etwas wie "~~~ * ~~~ oder ~~~ * ~~~ oder ..."? Dies basiert auf der Tatsache, dass eine leere Zeichenfolge in Python zu False wird. Normalerweise möchte ich es wie "str * bool" verwenden.
Fühlen Sie sich frei zu kommentieren, wenn Sie Fragen haben, wenn Sie kürzer schreiben können oder wenn Sie klarer schreiben können: Lächeln:
Recommended Posts