Dieser Artikel ist für Django Girls Japan Python Anfänger, Dies ist ein Lernmaterial für "Lass uns ein Janken-Spiel mit Python machen". Da der Autor auch Anfänger ist, entschuldigen wir uns für etwaige Unannehmlichkeiten. Namer-Umgebung: Windows 10 Python3.5 Darüber hinaus enthält dieser Artikel Antworten und Erklärungen zu den Problemen im Artikel von Janken Poi in Python.
Die Problemseite ist hier
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import random
dic = {"a": "Schmiere", "b": "Choki", "c": "Par"}
print("Janken")
print("a=Goo b=Choki c=Geben Sie Par a, b oder c ein")
user = input('>>> ')
user = user.lower()
try:
user_choice = dic[user]
choice_list = ["a", "b", "c"]
pc = dic[random.choice(choice_list)]
draw = 'DRAW'
win = 'You Win!!'
lose = 'You lose!!'
if user_choice == pc:
judge = draw
else:
if user_choice == "Schmiere":
if pc == "Choki":
judge = win
else:
judge = lose
elif user_choice == "Choki":
if pc == "Par":
judge = win
else:
judge = lose
else:
if pc == "Schmiere":
judge = win
else:
judge = lose
print("Deine Wahl%s" % user_choice)
print("%s" % pc)
print("%s" % judge)
except:
print("")
dic = """Geben Sie a, b oder c für das Ergebnis ein. * Der obige Code ist nur ein Beispiel. Ich denke, es gibt verschiedene Möglichkeiten, es zu beschreiben, also hoffe ich, dass Sie es als eine der Methoden erkennen. Kommentar Erstellen eines Wörterbuchs Q1: Erstellen Sie ein Wörterbuch, in dem 1 Goo 2 und Choki 3 Par ist."""
↓ Bitten Sie den Benutzer, a, b oder c einzugeben. Da der Schlüssel des Wörterbuchs a, b oder c ist, ist der Schlüssel a, b, c und der Wert ist Erstellen Sie ein Wörterbuch mit goo, choki und par.
input()
Die print-Anweisung ist eine Anweisung, die den in () beschriebenen Inhalt druckt.
user = input('>>> ') Die Programmausführung wird in der Zeile unterbrochen, in die input () geschrieben wird, und wartet auf die Tastatureingabe. Dieses Mal steht vor input () eine zweizeilige print-Anweisung, sodass diese mit der print-Anweisung und dem in () von input () angegebenen >>> unterbrochen wird.
Die Funktion input () speichert den über die Tastatur eingegebenen Inhalt in der Variablen (in diesem Fall Benutzer).
Außerdem diesmal freundlich an den Benutzer ... damit Sie Großbuchstaben eingeben können, user = Konvertiert mit user.lower () eingegebene Zeichen in Kleinbuchstaben.
Wenn der vom Benutzer eingegebene Inhalt nicht a, b oder c ist, gibt es keinen Schlüssel im Wörterbuch. Ein Fehler tritt auf und das Programm wird unterbrochen.
Dies verdirbt das lustige (?) Spiel.
Es gibt verschiedene Möglichkeiten, dies zu vermeiden, aber dieses Mal verwenden wir die Ausnahmebehandlung.
user_choice = """Frage 2: Verwendet es dic von der vom Benutzer eingegebenen Nummer?
Holen Sie sich den Charakter von Choki oder Par"""
Die Methode zum Erfassen des Werts des Wörterbuchs ist der Wörterbuchname [Schlüssel]. Dieses Mal werde ich verwenden Daher lautet der Wörterbuchname dic. Der Schlüssel ist Benutzer, da es sich um die von input () empfangenen Informationen handelt.
Um den Wert von Goo, Choki oder Par aus den vom Benutzer ausgewählten Informationen zu erhalten,
user_choice = dic[user]
Es wird beschrieben als.
pc = """Frage 3: Lassen Sie den PC anhand des importierten Zufalls eine Zahl auswählen.
Und hol dir die Schnur von Goo, Choki oder Par"""
↓
Es gibt andere Möglichkeiten, eine Computerhand mithilfe des Zufallsmoduls auszuwählen. Verwenden Sie diesmal random.choice (), da die Liste zuerst in Python erstellt wird.
Mit random.choice (choice_list) wird ein Element zufällig aus der choice_list extrahiert. Das extrahierte Element wird für den Schlüssel des zuvor erstellten Wörterbuchs verwendet.
Daher ... Aus der vom Computer ausgewählten Hand durch Setzen von dic [random.choice (choice_list)] Sie können Wert bekommen.
"""Frage 4: Vergleichen Sie die Hand des Benutzers mit der Hand des PCs, um das Ergebnis zu erhalten.
Das Ergebnis ist, eine Variable namens Judge zu erstellen und einen der oben genannten Draw Win Woss zu verlieren
Bitte setzen Sie es in die Variable."""
↓ Pfeile der gleichen Farbe sind die Bedingungen. (Es tut mir leid. Es ist etwas schwer zu verstehen. Ich werde es aktualisieren, wenn ich es leichter verstehen kann ...) python Ich werde dieses Urteil zuerst fällen und dann gewinnen oder verlieren, also werde ich unten ein detailliertes Urteil fällen:
Dieses Mal verwende ich eine etwas ältere Art der String-Verkettungsmethode. Schon jetzt wird es an verschiedenen Stellen als Beispiel beschrieben. Ich benutze es immer noch oft (weil es einfach ist ... ^^;), also werde ich es erklären.
"Was du gewählt hast%s" % user_choice
Es gibt eine Beschreibung von% s in der Zeichenfolge in "" ('' ist OK). Geben Sie das Zeichen an, das Sie in diesen% s-Teil einbetten möchten (diesmal die Zeichenfolge in der Variablen user_choice). Um dies anzugeben, fügen Sie es einfach in "" ein, geben Sie% ein und geben Sie dann das Zeichen ein, das Sie einbetten möchten.
Was ist, wenn Sie mehrere Zeichen einbetten möchten?
a = "women"
b = 40
"A %s does not become interesting until she is over %d" % (a, b)
→A women does not become interesting until she is over 40 *% d bettet den int-Wert ein
Es ist in Ordnung, wenn Sie% s und% d in der angegebenen Reihenfolge nach% nach der Zeichenfolge übergeben (in der Reihenfolge der Einbettung aufgeführt, durch Kommas getrennt).
** Übrigens ist die japanische Übersetzung von ↑ "Frauen werden erst nach 40 interessant." (Es ist egal, aber lol)
Sie können auch Operatoren für Zeichenfolgen verwenden. Tatsächlich ...
"Sie haben gewählt" + user_choice
Auch wenn Sie nur sagen, es gibt kein Problem mit diesem Inhalt.
Sie können auch * (Multiplikation) für die Zeichenfolge verwenden. Zum Beispiel ... Angenommen, "Goo" befindet sich in der Variablen user_choice
user_choice * 3
Dann
"Goo Goo Goo"
Es wird sein.
Nun ... In einigen Fällen möchten Sie möglicherweise dieselbe Zeichenfolge an mehreren Stellen einbetten.
"My name is {0}. Hallo {0}!! My Name is {1}".format("Taro", "Hanako")
→ "My name is Taro. Hallo Taro!! My Name is Hanako"
Die Zahl in {} gibt die Raumnummer des Taples nach der Formatierung an. Wenn Sie% s verwenden, ist das Innere von () dasselbe wie ("Taro", "Taro", "Hanako"). Es ist notwendig, mehrere aufzulisten, aber wenn Sie das Format wie oben verwenden, Dies ist praktisch, da Sie nicht zweimal "Taro" schreiben müssen.
Wenn es viele Orte gibt, die Sie einbetten möchten, und es schwierig ist, sie anhand der Zimmernummer usw. zu verwalten. Es ist auch möglich, durch Schlüsselwort anzugeben.
"My name is {name1}. Hallo {name1}!! My Name is {name2}".format(name1= "Taro", name2 = "Hanako")
→ "My name is Taro. Hallo Taro!! My Name is Hanako"
Es gibt verschiedene andere Möglichkeiten, das Format anzugeben, aber ich möchte es separat vorstellen.
・ In diesem Fall können Sie nicht im Spiel zählen ・ Wenn die Gesamtzahl der Siege zwischen dem Benutzer und dem Computer 3 erreicht, gewinnt derjenige, der 2 oder mehr gewinnt.
# -*- coding: utf-8 -*-
# !/usr/bin/env python
import random
dic = {"a": "Schmiere", "b": "Choki", "c": "Par"}
draw = 'DRAW'
win = 'You Win!!'
lose = 'You lose!!'
user_co = 0
pc_co = 0
judge = win
i = 1
while (user_co + pc_co) < 3:
if judge == win or judge == lose:
print(u"Janken")
else:
print(u"Aikode")
print(u"a=Goo b=Choki c=Geben Sie Par a, b oder c ein")
user = input('>>> ')
user_choice = user.lower()
try:
user_choice = dic[user]
except:
print("Bitte geben Sie a, b oder c ein.")
continue
pc = dic[str(random.choice("abc"))]
if user_choice == pc:
judge = draw
else:
if user_choice == "Schmiere":
if pc == "":
judge = win
else:
judge = lose
elif user_choice == "Choki":
if pc == "Par":
judge = win
else:
judge = lose
else:
if pc == u"Schmiere":
judge = win
else:
judge = lose
if judge == win:
user_co += 1
elif judge == lose:
pc_co += 1
print(u"Deine Wahl%s" % user_choice)
print(u"Der Computer wählte%s" % pc)
print(u"%Das Ergebnis des d-ten Rennens ist%s" % (i, judge))
print(u"")
i += 1
if user_co >= pc_co:
print(u"%d gewinnen%Sie gewinnen mit einer Niederlage" % (user_co, pc_co))
else:
print(u"%d gewinnen%d Niederlage ist deine Niederlage" % (user_co, pc_co))
↑ Das 3. Spiel wird ebenfalls nach meinen Regeln gemacht ... Ich denke, es wird eine gute Praxis sein, verschiedene Regeln selbst zu arrangieren und festzulegen.
Recommended Posts