python3.8 + uniquement
print("a|b|c"*-~-((a:=input("a:Par\nb:Choki\nc:Goo\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 octets
Tout d'abord, peut-être que cela peut être plus court ...
Eh bien pour faciliter la compréhension
import random
a = input("a:Par\nb:Choki\nc:Goo")
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}")
C'est comme ça? Je le change un peu.
La chose la plus mystérieuse est probablement "- ~ -". Cela signifie que ~ -est -1 (- ~ est +) et il est plus loin-. Si ʻa dans "abc" ʻest True (parce que bool est une sous-classe de int), il vaut -1 et devient-, donc il devient -0, c'est-à-dire 0, et si False, il devient 1. En bref, cela signifie que non 〇〇 est écrit court. (Dans le cas du bas, il devient plus long, mais dans le cas du haut, il devient plus court)
Alors, est-ce b + a dans" abbcca "
? C'est un jugement de gagner ou de perdre. Il peut être plus facile à comprendre si vous le séparez de ab / bc / ca.
__import__
est une fonction qui importe le module spécifié par l'argument et renvoie l'objet. (N'est-ce pas correct?) Eh bien, voir ici pour plus de détails.
Est-ce quelque chose comme ~~~ * ~~~ ou ~~~ * ~~~ ou ...
? Ceci est basé sur le fait qu'une chaîne de caractères vide devient False en python. J'ai généralement envie de l'utiliser comme str * bool
.
N'hésitez pas à commenter si vous avez des questions, si vous pouvez écrire plus court ou si vous pouvez écrire plus clairement: souriez:
Recommended Posts