Vous avez un groupe sanguin, non? Qu'il soit vrai ou non, comme le type A, le type B, le type O, le type AB, etc., le type a ses propres caractéristiques, comme "Un type qui est méticuleux" et "Un type qui est égoïste". Dans la programmation, les types sont utilisés pour faire des divisions importantes comme les groupes sanguins.
J'ai beaucoup parlé de ** variables ** jusqu'à présent, mais je n'ai pas osé mentionner les types. J'ai expliqué que le tableau est une classe appelée list (), et les variables du dictionnaire sont également une classe appelée dict (). Le type de données dans le programme, comme le groupe sanguin, représente la nature des données.
Nom du type de données | Type de données | La description |
---|---|---|
Chaîne | str | "lettre"Ou'lettre' |
entier | int | +-Valeur numérique |
Fraction flottante | float | +-Fraction flottante |
Nombre imaginaire | complex | +-Partie réelle+-Nombre imaginaire部j |
Authenticité | bool | Vrai ou faux |
Date Heure | datetime | Date et l'heure |
Liste (tableau) | list | Tableau quel que soit le type de données |
Taple (séquence de référence) | tuple | Tableau quel que soit le type de données |
Ensemble (tableau unique) | set | Tableau de blocs avec des données uniques et dans le désordre |
Dictionnaire (tableau de keymap) | dict | Tableau de clés et de données |
En Python, lors de l'utilisation de variables, les types sont attribués sans aucune considération particulière. C'est ce qu'on appelle le «typage dynamique». Par exemple, si vous écrivez ʻage = 12`, Python changera le type en int (). Pour connaître le type attribué, vous pouvez faire type (age) pour connaître le type attribué à la variable age. Comme je l'ai écrit la dernière fois, tous les types sont des classes qui incluent les fonctions requises pour gérer le type de données. S'il est affecté à un type non voulu, vous pouvez le spécifier explicitement avec float () etc. ou convertir le type.
La première est la fonction qui effectue la saisie au clavier. Affiche la chaîne passée en argument et attend la saisie au clavier. Si vous appuyez sur la touche Entrée vide ou entrez une valeur autre que 1 à 8, vous reviendrez à la saisie au clavier. Une fois que le nombre correct est entré, int () le convertit en ** entier **. Les valeurs importantes pour cette classe Othello sont les nombres 1 à 8 pour X et Y. Même s'il devient un Othello graphique et que l'emplacement est cliqué avec la souris, il peut être converti en interne aux coordonnées X et Y de 1 à 8 afin que les fonctions de la classe courante puissent être utilisées telles quelles.
#contribution
def ot_inputXY(self,otstr):
while True:
myXY = input(otstr)
if myXY == "":
continue
if '1' <= myXY <= '8' :
return int(myXY)
La fonction ʻot_yourturn () ʻest une fonction qui affiche seulement "C'est la main de ●!" Ou le tour de quel joueur. Ce qui est affiché est une chaîne de caractères entre "~", mais ** "chaîne de caractères" ** est la classe de chaîne de caractères str ()
comme décrit ci-dessus, donc même une chaîne de caractères juste écrite comme "aiueo" str Les fonctions contenues dans la classe () peuvent être utilisées telles quelles.
Le {} et le format ()
décrits ici lors de l'utilisation du type chaîne sont des expressions très courantes, alors rappelez-les ici. {}
Est appelé ** champ de remplacement ** et ainsi de suite. str (" Aka {} Tana ". format (" sa ")
est une description pratique qui remplace l'intérieur de {} par les données spécifiées par la fonction format (). Dans Python 3.6 ou version ultérieure, le caractère f. Vous pouvez désormais placer des variables directement dans le champ de remplacement en tant qu'opération de colonne, améliorant ainsi la lisibilité.
name = input("S'il vous plaît entrez votre nom=")
print("Un homme courageux qui venait souvent{}Ouais! !! J'attendais que le héros détruise le roi démon!".format(name))
# Python3.Après 6, il est pratique d'écrire comme suit!
print(f"Un homme courageux qui venait souvent{name}Ouais! !! J'attendais que le héros détruise le roi démon!")
Dans ʻot_yourturn () ʻ dans la classe Othello actuelle, ● ou ○ est affiché parce que la variable ot_offdef qui stocke le déplacement actuel est spécifiée dans le champ de remplacement.
#C'est ton tour
def ot_yourturn(self):
print("{}C'est ta main!".format(self.ot_offdef))
La fonction ʻot_changeturn () `est une fonction qui change le tour de l'attaquant.
#C'est ton tour
def ot_changeturn(self):
#Stockez la pièce de l'attaquant
self.ot_offdef = '●' if self.ot_offdef == '○' else '○'
#Stocke la pièce opposée à l'attaquant
self.ot_search = '●' if self.ot_offdef == '○' else '○'
Le programme est écrit comme un opérateur ternaire. C'est presque comme écrire une instruction IF avec une macro Excel, mais la logique ci-dessus et la logique ci-dessous sont exactement les mêmes. En écrivant «valeur lorsque la condition est remplie, si la condition vaut sinon, lorsque la condition n'est pas remplie», l'instruction if condition peut être stockée de manière concise sur une ligne. L'opérateur ternaire a pour effet de rafraîchir le programme en fonction de la façon dont il est écrit, mais il est recommandé de l'utiliser avec prudence car ce sera une source très illisible si elle est utilisée de force. Si vous trouvez cela difficile à comprendre, vous pouvez le remplacer par la source suivante.
#C'est ton tour
def ot_changeturn(self):
#Stockez la pièce de l'attaquant
if self.ot_offdef == '○':
self.ot_offdef = '●'
else:
self.ot_offdef = '○'
#Stocke la pièce opposée à l'attaquant
if self.ot_offdef == '○':
self.ot_search = '●'
else:
self.ot_search = '○'
La fonction ʻOt_checkendofgame () `est un programme qui considère si le jeu Othello va se terminer. Veuillez vous référer au (2) de cette série d'articles pour l'opération.
Ce que nous faisons dans ce domaine est le suivant.
Dans cette fonction, count (), qui s'appelle myot.ot_bit.count ('●')
, est une fonction qui renvoie le nombre de données contenues dans le tableau de la classe list ().
#Déterminez si c'est fini (changez le tour si vous ne pouvez tout simplement pas mettre votre main)
def ot_checkendofgame(self):
#Il n'y a pas de place pour mettre votre propre main, et vous ne pouvez pas mettre la main de votre adversaire
if 0 > self.ot_canplacemypeace():
self.ot_changeturn()
if 0 > self.ot_canplacemypeace():
bc = myot.ot_bit.count('●')
wc = myot.ot_bit.count('○')
if ( bc - wc ) > 0:
bws = "● Victoire"
elif ( bc - wc ) < 0:
bws = "○ victoire"
else:
bws = "dessiner"
print("{}est. Je vous remercie pour votre travail acharné!".format(bws))
return 1
else:
print("{}Il n'y a pas de place pour le mettre. Cela change au tour de l'adversaire! !!".format(self.ot_search))
return -1
else:
return 0
Le précédent ʻot_checkendofgame () a déterminé si le jeu était terminé, s'il y avait un endroit pour mettre votre main, ou sinon, s'il y avait un endroit pour mettre la main de votre adversaire. La fonction ʻot_canplacemypeace ()
pense" Y a-t-il un endroit pour mettre ma main? "
#Découvrez s'il y a un endroit pour mettre la main
def ot_canplacemypeace(self):
for n in range(64):
if self.ot_bit[n] != '・':
continue
for d in self.ot_direction:
if 1 == self.ot_next_onepeace(int(n%8)+1,int(n/8)+1, d):
return 0
#S'il n'y a pas de place pour en mettre un, je viendrai ici
return -1
Voici ce que nous faisons:
for d dans self.ot_direction:
, la chaîne de clé indiquant la direction stockée dans le dictionnaire est stockée dans la variable d, qui est répétée le nombre de fois de la variable dictionnaire.Comme je l'ai dit la dernière fois, si vous mettez une pièce à l'endroit spécifié, vous devez juger si c'est un endroit où vous pouvez la mettre, et si vous pouvez la mettre, vous devez retourner la pièce de l'adversaire. Et si l'endroit où vous le mettez est un endroit où vous ne devriez pas le mettre en premier lieu, vous devez afficher ce fait.
#Mettez votre main sur le plateau d'Othello
def ot_place(self, ot_x, ot_y):
ot_change = False
for d in self.ot_direction:
if 1 == self.ot_next_onepeace(ot_x,ot_y,d):
self.ot_peace(ot_x,ot_y,self.ot_offdef)
self.ot_changepeace(ot_x,ot_y,d)
ot_change = True
#Lorsqu'il n'y a pas de direction valide
if not ot_change:
print("{}Impossible de placer".format(self.ot_offdef))
return -1
#Affichez l'écran et changez votre main au tour de l'adversaire
self.ot_display()
self.ot_changeturn()
return 0
Cette fonction est appelée lorsque vous essayez de placer un cadre dans un endroit prédéterminé. À l'emplacement spécifié, X et Y sont les coordonnées spécifiées par les valeurs 1 à 8 respectivement. Expliquons le programme de cette fonction.
. La variable d contient la valeur clé de ʻot_direction
.avec votre main dans le troisième argument pour placer votre cadre aux coordonnées spécifiées. La fonction ʻot_peace ()
est également une fonction qui renvoie une image aux coordonnées spécifiées si le troisième argument est omis. Si le troisième argument est spécifié, le cadre aux coordonnées spécifiées sera remplacé par le caractère spécifié. est Vrai à la sortie de l'itération, le processus de retournement a terminé la réécriture des données de la carte ʻot_bit
, alors appelez la fonction ʻot_display () pour réafficher la carte. Appelez ensuite la fonction ʻot_changeturn ()
pour changer le tour de l'attaquant.La prochaine fois, j'expliquerai la fonction ʻot_next_onepeace () et la fonction ʻot_changepeace ()
, qui peuvent être les plus compliquées. Ces deux fonctions sont appelées fonctions récursives, qui sont les fonctions que vous vous appelez vous-même, je voudrais donc les expliquer.
À la prochaine! !!
c u
<< J'ai créé un Othello pour enseigner Python3 aux enfants (4) J'ai créé Othello pour enseigner Python3 aux enfants (6) >>
Recommended Posts