C'est à toi de choisir lors des input les exemples que tu donnes à tester à ton programme.
Donc essaie d'en utiliser qui entrent dans les différentes branches, par exemple : 2000, 1900, 2016 et 2019 (pour prendre les plus récentes de chaque catégorie).
Elif ferme une condition. OK c'est pas simple à expliquer en fait
Tu peux utiliser une succession de if, et dans ce cas il est possible qu'il y ait plusieurs solutions. Que plusieurs if soient validés.
ex :
b,c,d = 0,0,0
if a % 2 == 0 :
b = 1
if a > 10 :
c = 1
else :
d = 1
Dans ce cas, plusieurs solutions sont possibles selon la valeur de ton a. Il peut à la fois être pair, et > 10.
Donc b = 1
c = 1
d = 0
Par contre, en utilisant elif, tu les fermes au fur et à mesure.
b,c,d = 0,0,0
if a % 2 == 0 :
b = 1
elif a > 10 :
c = 1
else :
d = 1
Là, soit a est pair, soit il est supérieur à 10. elif ferme la condition précédente.
donc soit b = 1 et 0 pour c et d
soit c = 1 et 0 pour b et d
soit d = 1 et 0 pour b et c
Voilà. Donc c'est selon ce que tu recherches dans ton programme.
Utilise la balise </> pour poster du code, plutôto qu'une capture d'écran (ce sont les règles du forum).
DianeM a écrit:
Par exemple, quel serait-il si on utilisait le boléen bissextile = True.
Ici, c'est un peu maladroit d'initialiser la variable bissextile avec False, puisque de toute façon on redéfinit sa valeur après. Autrement dit, la valeur initiale n'a aucune importance. Je pense que le correcteur fait ça pour vous fixer dans l'idée des étudiants qu'on va manipuler une variable bissextile qui est booléen. Mais ça n'a aucun intérêt pour le programme.
DianeM a écrit:
Est-ce également possible de traiter le problème dans l'ordre de l'énoncé ?
Ce n'est pas forcément plus simple pour un débutant parce qu'on a des conditions à l'intérieur d'autres conditions. Mais c'est la traduction "mot à mot" de l'énoncé.
DianeM a écrit:
Je n'ai d'ailleurs pas compris l'utilisation ELIF dans cet exercice, quelqu'un pourrait me l'expliquer en "langage courant".
if veut dire "si"
else veut dire "sinon"
elif est un raccourci pour else if qui veut dire "sinon, si..."
alors voila, je suis en train de me casser la tête sur l'ouverture des fichiers "txt" depuis mon prgm roboc.py, pour l'instant j'en suis que la donc pas encore de structure dans prgm ni de réel organisation. le soucis que je rencontre est le suivant :
voici mon prgm a l'heure actuelle :
fichier_carte "pointe" l'ouverture dans le dossier 'cartes' du n° de la carte sélectionnée afin d'en faire l'ouverture mais voici ce que me retourne python :
a savoir que si par contre je mets les fichiers "txt" dans le dossier racine avec roboc.py là pas de pb il les ouvres... --'
voici mon arbo :
et dans 'cartes' on trouve :
j'arrive pas a voir ou est l'erreur ! help !!
- Edité par Franck Belmin 29 juillet 2019 à 12:58:53
je bosse sur "Le Pendu" et j'en suis encore à la gestion du pickle.
On lance la fonction verif_scores(nom_joueur).
Mon code me semble correct mais je ne comprends pas pourquoi je n'arrive pas à lister le contenu de mon dictionnaire dans le fichier scores_file.
Voici mon code :
# -*-coding:Utf-8 -*
import pickle
import os.path
# Ajout du joueur à la suite du fichier
def ajout_joueur(nom_joueur, score):
score_joueur = {nom_joueur: 0}
with open('scores_file', 'ab') as scores:
scores.write(pickle.dumps(score_joueur))
# Check si le fichier existe
def verif_file(nom_joueur):
sf = 'scores_file'
# si le fichier existe, on check si le joueur est présent dans le fichier
if os.path.isfile(sf):
verif_joueur(nom_joueur)
# si le fichier n'existe pas, on créé le fichier avec le nom du joueur et le score 0
else:
score_joueur = {nom_joueur: 0}
with open('scores_file', 'wb') as scores:
scores.write(pickle.dumps(score_joueur))
# Check si le joueur est dans le fichier
def verif_joueur(nom_joueur):
sf = 'scores_file'
with open(sf, 'rb') as scores:
unpickler = pickle.Unpickler(scores)
content = unpickler.load()
for elem in content.keys():
print(elem)
# Si le joueur existe, on affiche le score
if elem == nom_joueur:
print("Bienvenue " + elem + ", votre score est de :", content[elem])
# Si le joueur n'existe pas, on l'ajoute dans le fichier
else:
ajout_joueur(nom_joueur, 0)
def verif_scores(nom_joueur):
verif_file(nom_joueur)
el le problème est que ->
for elem in content.keys():
print(elem)
n'affiche que le premier enregistrement.
Je ne vois pas où je pêche.
PS : il y a des valeurs de score à 0, mais c'était pour le test.
- Edité par EmmanuelJean 29 juillet 2019 à 22:25:53
alors voila, dans le cadre de la réalisation du TP "labyrinthe" de l'activité III, j'ai transformé la carte du fichiers TXT en suite de liste de la manière suivante :
#transformé chaque ligne de la carte en liste
print("labyrinthe en liste")
g = open('cartes/' + cartes[carte_selec], "r")
for line in g:
i = list(line)
print (i)
(le print c'est la que pour que je constate le résultat)
comment modifier ma petite "formule" pour qu'a chaque liste créée Python y attribue une valeurs du type alphanumérique ? l'objectif
étant de pouvoir ensuite jouer sur la valeurs numérique afin de déplacer mon robot ('X') d'une ligne [liste] à l'autre. j'ai beau relire les cours et
me casser la tête rien a faire je trouve pas... De plus j'ai constaté que lors de l'exploitation de cette suite de liste Pytho ne prend en compte que la première. DAMNED !
je me souviens de cet exercice, pour ma part je n'avais pas fait d'alternance "elif" et "if", je n'avais fait qu'un seul if suivi d'une série de elif puis un else final. J'ai peur de ne pas être assez matheux pour descellé l'erreur dans ton pgm malheureusement mais j’espère que ce que je viens de te dire va pouvoir t'aider.
Je suis sur le TP labyrinthe et il y a un truc que je ne comprend pas : il est dit ceci:
Les symboles utilisés sont O pour un mur, . pour une porte (sur laquelle le robot peut passer), U pour la sortie et X pour le robot lui-même ;
Hors quand on prend les 2 cartes données en exemple on a un truc assez ambiguë:
Exemple:
OOOOOOOOOOOO
O O
O OO . OOO OOO
Si on suit les instructions "." est une porte, "O" est un mur, tres bien dans ce cas que que représente un/des espace " " ? Si on ne peut passer que par les portes "." pourquoi la 3eme ligne n'a pas cette représentation:
Aufaite j'ai une version portable de python installer sur ma clé usb, mais j'arrive pas l'ancer certains de mes programme à partir de la cmd intégré dans le programme voici l'erreur qui s'affiche """Fatal error in launcher: Unable to create process using '"i:\portable python-3.7.4\app\python\python.exe" "F:\Portable Python-3.7.4\App\Python\Scripts\django-admin.exe" '"""
J'ai une petite préoccupation, les exemples dans la vidéo ne correspondent pas avec celui du cours pour la partie fonctions!
Qu'est-ce qui ne correspond pas ? En quoi est-ce gênant pour toi ?
FakyKane a écrit:
Si quelqu'un pourrait m'aider j'en serais vraiment ravie.
Oui, mais t'aider à faire quoi ?
FakyKane a écrit:
De plus, le code ne marche pas pour moi!
Qu'est-ce qui ne marche pas ? Quelle est l'erreur qui s'affiche ?
@ZouhirOUMEDJKANE
À première vue ton code est pas mal mais dans ton code et ton post tu as 3 orthographes différentes de la même variable :
annee_bissextile
annee_bisextile
anne_bisextile
L'erreur vient évidemment de là.
À part ça, ne fais pas deux fois des tests équivalents. Si a % 4 == 0 est faux, alors a % 4 != 0 est vrai. Ne fais pas ces deux tests ; fais-en un, puis utilise le mot-clé else :
if a % 4 != 0:
annee_bissextile = False
else:
if a % 100 == 0:
...
Ensuite, écrire "else" et "if" à la suite peut en général se raccourcir par "elif" :
if a % 4 != 0:
...
elif a % 100 != 0:
...
elif a % 400 != 0:
...
Et bien je ne sais pas si c'est le copier-coller qui a raté mais l'indentation n'est pas bonne. Mais même en rectifiant l'indentation, le try qui se ballade tout seul ça ne peut pas exister sans une clause except, sous peine de provoquer une SyntaxError. Je ne sais pas dans quelle situation tu l'as testé mais il est curieux que ça marche pour toi.
En retirant le try, en effet pas de problème, bien que d'un point de vue gameplay évidement c'est pas top.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
Ad augusta per angusta.
En cour
typage structurel ftw
typage structurel ftw