Cet article est destiné aux débutants Django Girls Japan Python, Ceci est un matériel de session d'étude pour "Faisons un jeu Janken avec Python". Puisque l'auteur est aussi un débutant, nous nous excusons pour tout inconvénient. Environnement Namer: Windows 10 python3.5 Cet article est une page de réponses et d'explications aux problèmes dans l'article Janken Poi en Python.
La page de problème est ici
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import random
dic = {"a": "Goo", "b": "Choki", "c": "Par"}
print("Janken")
print("a=Goo b=Choki c=Entrez par a, b ou c")
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 == "Goo":
if pc == "Choki":
judge = win
else:
judge = lose
elif user_choice == "Choki":
if pc == "Par":
judge = win
else:
judge = lose
else:
if pc == "Goo":
judge = win
else:
judge = lose
print("Tu choisis%s" % user_choice)
print("L'ordinateur a choisi%s" % pc)
print("Le résultat est%s" % judge)
except:
print("Entrez a, b ou c.")
dic = """Question 1: Veuillez créer un dictionnaire où 1 est Goo 2 et Choki 3 est Par."""
↓ Demandez à l'utilisateur de saisir a, b ou c. Puisque la clé du dictionnaire est a, b ou c, la clé est a, b, c et la valeur est Créez un dictionnaire avec goo, choki et par.
input()
L'instruction print est une instruction qui imprime le contenu décrit dans ().
user = input('>>> ') L'exécution du programme est interrompue à la ligne où input () est écrit et attend l'entrée du clavier. Cette fois, il y a une instruction print sur deux lignes avant input (), donc elle sera interrompue avec l'instruction print et le >>> spécifié dans () de input () affiché.
La fonction input () stocke le contenu saisi depuis le clavier dans la variable (utilisateur dans ce cas).
De plus, cette fois, merci à l'utilisateur ... pour que vous puissiez saisir des lettres majuscules, user = Conversion des caractères saisis avec user.lower () en minuscules.
Si le contenu saisi par l'utilisateur n'est pas a, b ou c, il n'y a pas de clé dans le dictionnaire. Une erreur se produira et le programme sera interrompu.
Cela gâche le jeu amusant (?).
Il existe différentes manières d'éviter cela, mais cette fois, nous utiliserons la gestion des exceptions.
user_choice = """Question 2: Est-ce que c'est goo en utilisant dic à partir du nombre entré par l'utilisateur?
Obtenez le caractère de choki ou par"""
La méthode d'acquisition de la valeur du dictionnaire est le nom du dictionnaire [clé]. Cette fois je vais utiliser Par conséquent, le nom du dictionnaire sera dic. La clé est user car ce sont les informations reçues par input ().
Par conséquent, afin d'obtenir la valeur de Goo, Choki ou Par à partir des informations sélectionnées par l'utilisateur,
user_choice = dic[user]
Il est décrit comme.
pc = """Question 3: En utilisant le hasard importé, laissez le PC choisir un nombre,
Et obtenir la chaîne de goo, choki ou par"""
↓
Il existe d'autres façons de choisir une main d'ordinateur, en utilisant le module aléatoire, Cette fois, python prépare la liste en premier, utilisez donc random.choice ().
Avec random.choice (choice_list), un élément est extrait aléatoirement de la choice_list. L'élément extrait est utilisé pour la clé du dictionnaire créé précédemment.
Par conséquent ... De la main sélectionnée par l'ordinateur en définissant dic [random.choice (choice_list)] Vous pouvez obtenir de la valeur.
"""Question 4: Comparez la main de l'utilisateur avec celle du PC pour obtenir le résultat.
Le résultat est de créer une variable appelée juge et de faire l'un des tirages ci-dessus gagner perdre
Veuillez le mettre dans la variable."""
↓ Les flèches de la même couleur sont les conditions. (Je suis désolé. C'est un peu difficile à comprendre. Je vais le mettre à jour si je peux le rendre plus facile à comprendre ...) python Je vais d'abord faire ce jugement, puis je gagnerai ou perdrai, alors je ferai un jugement détaillé ci-dessous sinon:.
Cette fois, j'utilise un type légèrement plus ancien de méthode de concaténation de chaînes. Même maintenant, il est décrit comme un exemple sur divers sites. Je l'utilise encore beaucoup (car c'est facile ... ^^;), donc je vais vous l'expliquer.
"Ce que tu as choisi%s" % user_choice
Il y a une description de% s dans la chaîne de caractères entre "" ('' est OK). Spécifiez le caractère que vous souhaitez incorporer dans cette partie% s (cette fois, la chaîne de caractères dans la variable user_choice). Pour spécifier, placez-le simplement entre "", entrez%, puis entrez le caractère que vous souhaitez incorporer.
Et si vous souhaitez intégrer plusieurs personnages?
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 intègre la valeur int
C'est OK si vous passez% s et% d dans l'ordre spécifié, après le% après la chaîne de caractères (listés dans l'ordre d'incorporation, séparés par des virgules).
** À propos, la traduction japonaise de ↑ est "Les femmes ne deviennent intéressantes qu'après 40 ans." (Ça n'a pas d'importance, mais lol)
Vous pouvez également utiliser des opérateurs pour les chaînes. Réellement ...
"Vous avez choisi" + user_choice
Même si vous dites simplement, il n'y a aucun problème avec ce contenu.
Vous pouvez également utiliser * (multiplication) pour la chaîne de caractères. Par exemple ... En supposant que "Goo" est dans la variable user_choice
user_choice * 3
Puis
"Goo Goo Goo"
Ce sera.
Eh bien ... Dans certains cas, vous voudrez peut-être incorporer la même chaîne à plusieurs endroits.
"My name is {0}. Hallo {0}!! My Name is {1}".format("Taro", "Hanako")
→ "My name is Taro. Hallo Taro!! My Name is Hanako"
Le nombre entre {} indique le numéro de pièce du taple après formatage. Si vous utilisez% s, l'intérieur de () est le même que ("Taro", "Taro", "Hanako"). Il est nécessaire d'en lister plus d'un, mais si vous utilisez le format, comme ci-dessus, Ceci est pratique car vous n'avez pas à écrire deux fois "Taro".
S'il y a de nombreux endroits que vous souhaitez intégrer et qu'il est difficile de gérer par numéro de chambre, etc. Il est également possible de spécifier par mot-clé.
"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"
Il existe plusieurs autres façons de spécifier le format, mais je voudrais l'introduire séparément.
・ Dans ce cas, vous ne pouvez pas compter dans le jeu ・ Lorsque le nombre total de victoires entre l'utilisateur et l'ordinateur atteint 3, celui qui gagne 2 ou plus gagne.
# -*- coding: utf-8 -*-
# !/usr/bin/env python
import random
dic = {"a": "Goo", "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=Entrez par a, b ou c")
user = input('>>> ')
user_choice = user.lower()
try:
user_choice = dic[user]
except:
print("Veuillez saisir a, b ou c.")
continue
pc = dic[str(random.choice("abc"))]
if user_choice == pc:
judge = draw
else:
if user_choice == "Goo":
if pc == "":
judge = win
else:
judge = lose
elif user_choice == "Choki":
if pc == "Par":
judge = win
else:
judge = lose
else:
if pc == u"Goo":
judge = win
else:
judge = lose
if judge == win:
user_co += 1
elif judge == lose:
pc_co += 1
print(u"Tu choisis%s" % user_choice)
print(u"L'ordinateur a choisi%s" % pc)
print(u"%Le résultat de la dth race est%s" % (i, judge))
print(u"")
i += 1
if user_co >= pc_co:
print(u"%d gagner%Vous gagnez avec une défaite" % (user_co, pc_co))
else:
print(u"%d gagner%La défaite est votre défaite" % (user_co, pc_co))
↑ Le 3ème jeu se fait également selon mes règles ... Je pense que ce sera une bonne pratique d'arranger et de définir vous-même diverses règles.
Recommended Posts