Je suis arrivée au dernier TP de ce cours, et je bloque completement.
J'ai un code à peu près fonctionnel, avec un serveur et des clients qui communiquent comme il faut, mais je me prends la tete avec les input du coté client.
Le fait d'utiliser input() met mon code en attente. Je suis obligée d'appuyer sur entree pour le debloquer et lui permettre de gérer l'affichage des messages du serveur.
Bonjour, j'ai besoin d'aide, si quelqu'un peut me donner des idées, c'est un programme pour manipuler les séquences d'ADN, le voilà le sujet! Merci bcp
# -*-coding:utf-8 -*
import os
from fonctions import *
from math import ceil
remember = False
game = False
pendu = False
casino = False
mise = 0
a = ceil(6/4)
OUI = ['oui', 'Oui', 'OIu', 'OUI', 'yes', 'Yes', 'YEs',
'YES', 'ouais', 'Ouais', 'ok', 'Ok', 'OK', 'Oui !', 'o', 'O']
NON = ['non', 'Non', 'NON', 'no', 'n', 'N']
score = (openScore())
while not remember:
NewPlayer = (input("Salut ! Qu\'elle est ton pseudo ? : ")).lower()
EspaceTemps(10)
if NewPlayer in score:
print('Salut', NewPlayer, "! Te revoila ! Ton ancien score est de : ", score[NewPlayer])
EspaceTemps(3)
remember = True
if NewPlayer not in score:
score[NewPlayer] = int(NumMagic())
print("Voilà quelques points attribués pour commencer :", score[NewPlayer], "Pts/Btc")
remember = True
while not game:
pendu = False
casino = False
print()
ask = input("*°*-------*------MENU PRINCIPAL------*------*°*"
"\n ----> CHOIX DU JEUX : casino ou pendu ou non(N,n) ? --> ")
if ask == 'pendu':
EspaceTemps(3)
print("Je vais lancer le pendu !")
EspaceTemps(5)
sleep(1)
pendu = True
game = True
elif ask == 'casino':
casino = True
game = True
print("Je vais lancer le casino !")
EspaceTemps(7)
print(" ┼ BIENVENUE DANS CE MAGNIFIQUE CASINO ┼ ")
EspaceTemps(5)
elif ask in NON:
ajoutS(score)
print()
print("GOOD BYE, Thanks to you to try me ^_-_^ ")
print()
break
else:
print("Je n'ai pas compris.")
print()
game = False
while casino:
print()
print(NewPlayer, "vous disposez de :", score[NewPlayer], "Btc\n")
if score[NewPlayer] != 0:
EspaceTemps(1)
try:
mise = int(input("Croupier : 'Faites vos jeux' ! \n"
"Combien misez-vous ? : "))
except ValueError:
print(" ERREUR ! : Ceci n'est pas un chiffre non ?")
continue
EspaceTemps(1)
if int(mise > 0) and (int(mise) <= score[NewPlayer]):
nbr = int(input("Sur quel chiffre misez-vous entre 1 et 36 inclu ? \n"))
EspaceTemps(3)
if 0 < nbr < 37:
sleep(1)
print("Les dès sont lancés !")
EspaceTemps(5)
sleep(1)
roulette = NumMagicRoulette()
print("Le resultat est : ", roulette)
if nbr == roulette:
sleep(3)
score[NewPlayer] = ceil(mise * 35) + (score[NewPlayer] - mise)
ajoutS(score)
sleep(1)
print("Gagné !!", mise, "x35 --!\n\n"
"INCROYABLE !\n\n"
"Gain de : ", ceil(mise * 35), " ! ! -- !! -- !! -- !! -- !!!!!\n")
elif PairImpair(nbr) == 'pair' and PairImpair(roulette) == 'pair':
EspaceTemps(2)
score[NewPlayer] = ceil(mise * 2.5) + (score[NewPlayer] - mise)
ajoutS(score)
sleep(1)
print("Double pair !", mise, "x2,5 -! \n"
"Gain de : ", ceil(mise * 2.5), " ! ! ")
elif PairImpair(nbr) == 'impair' and PairImpair(roulette) == 'impair':
EspaceTemps(2)
score[NewPlayer] = ceil(mise * 2.5) + (score[NewPlayer] - mise)
ajoutS(score)
sleep(1)
print("Double impair !", mise, "x2,5 -! \n"
"Gain de : ", ceil(mise * 2.5), " ! ! ")
else:
EspaceTemps(1)
score[NewPlayer] -= mise
ajoutS(score)
print("perdu... :/ \n")
regame = input("Voulez-vous continuer ? :")
if regame in OUI:
casino = True
elif regame in NON:
casino = False
game = False
continue
else:
EspaceTemps(1)
print("Merci de choisir un nombre entre 1 et 36 compris \n")
if int(mise < 0) or (int(mise) > score[NewPlayer]):
EspaceTemps(1)
print("Merci de vouloir miser l'argent que vous possèdez.")
else:
casino = False
ajoutS(score)
EspaceTemps(1)
print("Désolé vous n\'avez plus d\'argent, veullez sortir du casino. Merci")
EspaceTemps(1)
print("Vous n'avez plus de point vous en pouvez plus jouer ici.")
EspaceTemps(1)
while pendu:
mot_pendu = openMotPendu()
chiffres_interdits = "1234567890"
epitaphe = {0: "I never understood what the point to die far this kind of game.",
1: "Too weird to live, too rare to die. HST",
3: "We made never mistake without trying.",
4: "Le marbre est le plancher des vivants et le toît des morts",
5: "Verre vide, je te plains, verre plein, je te vide",
6: "Les gens s'attendent à ce que nous échouions. Notre mission est de dépasser leur attente.",
7: "Ci-gît Jackson, Regrets éthernels.Epitaphe de Jackson, qui découvrit les propriétés de l'éther",
8: "I told you I was sick",
9: "His final words was : \'It was so good this mushrooms\'",
10: "When I was in the military they gave me a medal for killing two men a discharge 4 loving one",
11: "a"}
mort = '| | | | | | | | | | | | | '
potence3 = '├'
potence2 = '│'
potence1 = '┴'
potence4 = '├─'
potence5 = '├┐'
jeux_pendu = True
FIN = False
depart = 1
while jeux_pendu is True:
if depart == 1:
pendu = ''
x = randrange(0, 30)
choix_du_mot = mot_pendu[x]
Xword = "x" * (len(choix_du_mot))
list_Xword = list(''.join(Xword))
liste_choix_du_mot = list(choix_du_mot)
liste_choix_du_motR = list(choix_du_mot)
print("Voici le mot à deviner ! :", Xword)
CheatCode(NewPlayer, choix_du_mot)
print()
depart = 0
if not FIN:
sleep(0.5)
lettre_proposee = input("Proposes une lettre qui serait contenue dans ce mot : ").lower()
print()
for chiffre in lettre_proposee:
if chiffre in chiffres_interdits:
print("Keske tu fous ?! C'est pas une lettre ça non ? ")
jeux_pendu = True
if len(lettre_proposee) > 1:
print("Une seule lettre à la fois !")
print()
continue
try:
variable_juste_pour_test = liste_choix_du_motR.index(lettre_proposee)
except ValueError:
print("Désolé :/")
print()
pendu += '| '
score[NewPlayer] -= 1
ajoutS(score)
print(pendu)
print("- 1 Pts")
jeux_pendu = True
if pendu == mort:
x1 = randrange(0, 11)
dead = 'Vous êtes mort ---> ± *R.I.P.* ', epitaphe[x1]
print(potence5)
print(potence2)
print(potence1)
print(dead)
FIN = True
if (lettre_proposee not in liste_choix_du_mot) and (lettre_proposee in liste_choix_du_motR):
lettre_proposee = lettre_proposee.upper()
print("Tu as trouvé tous les", lettre_proposee, "dans ce mot ;)")
lettre_proposee = lettre_proposee.lower()
if lettre_proposee in liste_choix_du_mot:
emplacement_lettre = liste_choix_du_mot.index(lettre_proposee)
list_Xword[emplacement_lettre] = lettre_proposee
liste_choix_du_mot[emplacement_lettre] = '0'
print("Bravo !! Une lettre en moins à trouver ! ")
print(''.join(list_Xword))
if list(list_Xword) == liste_choix_du_motR:
print("Tu as gagné !!! ")
print()
score[NewPlayer] += 350
ajoutS(score)
print("+ 350 Pts !!")
FIN = True
depart = 0
while FIN and not casino:
relance = input("Tu veux recommencer ? : ")
print()
if relance in OUI:
depart = 1
FIN = False
continue
if relance in NON:
FIN = False
casino = False
jeux_pendu = False
game = False
pendu = False
elif relance not in NON or OUI:
print("Je n'ai pas compris ? ^___^!")
print()
if score[NewPlayer] <= 0:
jeux_pendu = False
else:
EspaceTemps(1)
if jeux_pendu is False:
ajoutS(score)
print()
print("GOOD BYE, Thanks to you to try me ^____^ ")
print()
Salut !
Voici ma "solution de l'exercice Casino et Pendu du cours de python d'openclassrooms en un seul jeux avec un "menu principal"
"""Fonctions automatisant l'ajout des scores dans le ficher binaire"""
"""with open(nom_fichier,"wb") as fich: # Il est conseillé d'utiliser with
pickle.dump(objet, fich) # objet est enregistré dans fichier
objet = pickle.load(fich) # on récupère l'objet suivant de fichier """
import os
import pickle
from time import sleep
from random import randrange
def NumMagic() :
return randrange(40, 80)
def NumMagicRoulette() :
return randrange(1, 37)
def EspaceTemps(espace) :
for a in range(espace) :
print()
sleep(0.25)
def openScore() :
with open('donnees', 'rb') as fichier:
mon_depickler = pickle.Unpickler(fichier)
score = mon_depickler.load()
#print('scores chargés :', score,'\n')
return score
def ajoutS(new_score) :
with open('donnees', 'wb') as fichier :
pickle.dump(new_score, fichier)
def openMotPendu() :
with open('motpendu', 'rb') as fichier:
mon_depickler = pickle.Unpickler(fichier)
mot_pendu = mon_depickler.load()
#print('dico chargés :', mot_pendu,'\n')
return mot_pendu
def ajoutMotPendu(dico_des_mots) :
with open('motpendu', 'wb') as fichier :
pickle.dump(dico_des_mots, fichier)
def PairImpair(un_nbr) :
if (un_nbr%2 == 0) :
return('pair')
else :
return('impair')
def CheatCode(nom_du_joueur, mot):
if nom_du_joueur == 'wildcat':
print("CheatCode ON :", mot)
elif nom_du_joueur == 'pouya':
print("salut Pouya ! Merci de corriger mon Pendu 3.0 haha, bisous à vous 2 \n"
"Tu entre en mode GodeMode : your intelligence up to 23, you guess and \n"
"you feel every words asked in pendu !")
print("CheatCode ON :", mot)
Bonjour ,j'ai un petit problème sur un exercice du chapitre "Les listes et les tuples (2/2)" :
# -*-coding:utf-8 -*
import os
def afficher(*parametres,sep=" ",fin="\n"):
parametres=list(parametres)
for i,parametre in enumerate(parametres):
parametres[i]=str(parametre)
chaine=sep.join(parametres)+fin
print(chaine,end="")
afficher("Bonjour","à","tous","j'ai",16,"ans",sep=" ",fin=".")
os.system("pause")
Pourquoi est-ce que quand je lance le programme, la pause s'active avant le print ?
PS : j'ai aussi essayer de mettre la pause dans la fonction juste en dessous du print mais elle s'active quand même avant le print
EDIT : J'ai trouvé le problème c'était le 'end=""' à la fin du print mais je ne comprends toujours pas pourquoi la pause s'active avant le print à cause du 'end=""' pouvez-vous m'expliquer svp
Bonjour j'espere avoir une reponse je suis au petit 7 de l'introduction et je viens de me rendre compte que depuis le debut j'utilise idle et qu'il faut enfaite utiliser l'interprete est ce grave si je continue avec idle et comment est ce que je peut trouver l'interprete car j'ai chercher dans les fichiers mais pas trouves merci
M'étant amusé à coder le DK labyrinthe avec une interface graphique (https://openclassrooms.com/courses/1399541-interface-graphique-pygame-pour-python/1400238-tp-dk-labyrinthe), j'aimerai pouvoir le transformer en exécutable mais je n'y arrive pas, supposément, à cause des différentes images (je n'ai pas eu de mal à le faire avec un programme comme ZCasino ni même avec des fichiers en appelant d'autres). J'ai cru comprendre ça et là qu'il fallait modifier le .spec ou utiliser l'option --add-data dans l'invite de commande. Toutefois, rien de probant
Mon fichier DK labyrinthe se développe comme suit :
DK labyrinte
|-cartes
|--carte1.txt
|--carte2.txt
|-images
|--images1234....png et jpg (je vous épargne toute la liste :D)
|-fonctions.py (contenant les fonctions de calcul)
|-main.py (contenant le menu)
|-niveau.py (servant à charger les differents niveaux)
|-lancement.py (2 lignes de codes servant à lancer le programme)
Avez vous des pistes/solutions pour résoudre se problème ?
PS : Veuillez m'excuser si la question dépasse le cadre de se topic
Si c'est dans cette fenetre que tu écris ton code, c'est bien se qui est demandé, si tu l'écris dans idle, ce n'est pas grave, tu y viendras de toute manière.
je m'appelle sadio Bocoum et j'ai besoin d'aide pour créer une fonction qui prend en parametre une liste et qui renvoie au hasard un element de la liste.
from random import randrange
def fonctionList(liste1):
x = randrange(0, 4) #donne un chiffre entre de 0 à 4 inclus
return liste1[x]
liste1 = ['uno', 'lapin', 'soleil', 'cocktail_de_fruits' ]
print(fonctionList(liste1))
Bonjour dans le Tp : un dictionnaire bien ordonnée :
Je ne comprendspas bien la syntaxe de la ligne 17 :
class DictionnaireOrdonne:
"""Notre dictionnaire ordonné. L'ordre des données est maintenu
et il peut donc, contrairement aux dictionnaires usuels, être trié
ou voir l'ordre de ses données inversées"""
def __init__(self, base={}, **donnees):
"""Constructeur de notre objet. Il peut ne prendre aucun paramètre
(dans ce cas, le dictionnaire sera vide) ou construire un
dictionnaire remplis grâce :
- au dictionnaire 'base' passé en premier paramètre ;
- aux valeurs que l'on retrouve dans 'donnees'."""
self._cles = [] # Liste contenant nos clés
self._valeurs = [] # Liste contenant les valeurs correspondant à nos clés
# On vérifie que 'base' est un dictionnaire exploitable
if type(base) not in (dict, DictionnaireOrdonne):
raise TypeError( \
"le type attendu est un dictionnaire (usuel ou ordonne)")
ça me semble plus simple de remplacer la ligne 17 par :
if type(base) is dict == False:
...
Qu'en pensez-vous?
- Edité par CasteloWoshu 7 juillet 2018 à 16:54:19
J'essaye de faire le dernier TP, mais je bloque… J'essaye de créer deux threads pour le client, un pour la réception et l'autre pour l'émission.
1er problème : comment puis-je arrêter le fil d'émission placé dans une boucle infinie ? (à partir d'un message reçu du serveur ou à partir du reste du programme) ?
2ème problème : lorsque deux messages sont envoyés trop rapprochés, leur réception n'est pas toujours distincte. Ainsi, envoyer "2 joueurs connectés" puis "fin" est parfois reçu comme "2 joueurs connectésfin" et empêche l'interprétation de "fin" comme signal pour interrompre le thread de réception.
je viens de terminé le cours " commence ton projet avec python " et à la fin du chapitre en bonus. On doit téléchargé Scrapy via une commande. Mais .. erreur. Apres quelques recherches, scrapy ne prend pas la version 3.7 de python :/. Des solutions ?
je suis en train de terminer ce tutoriel ("stockez des citations dans un fichier avec le module json"), et ai créé les fichiers quotes.json et characters.json. Cependant j'ai un message d'erreur quand je lance le script à cause d'accents dans les citations ; et ce malgré # -*- coding: utf8 -*- dans l'entête du script python.
Traceback (most recent call last): File "test.py", line 13, in <module> read_values_from_json() File "test.py", line 10, in read_values_from_json data = json.load(f) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/__init__.py", line 293, in load return loads(fp.read(), File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/codecs.py", line 322, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8e in position 12: invalid start byte
continents = ["Afrika", "America", "Asia", "Europa","Kongo", "Deutschland"]
for continent in continents:
if continent == ("Kongo", "Deutschland"):
print(continent)
Bonjour S'il vous plait, aidez moi a résoudre ce problème,je suis en train d apprendre a utiliser les boucles en python et je suis buter a ceci, j'aimerai que que "Kongo" et "Deutschland ne soient pas reprit dans ma liste apres le print quand je fais print avec un element ex "Kongo" ca fonctionne mais quand j essaye d en mettre deux ca ne marche pas .
comment faire pour que ce deux pays ne figure plus dans ma liste continents apres le print
Je pense qu'il faut rajouter un opérateur logique "OR" : continent == kongo OR continent == Deutshcland.
Grace à une variable "compteur", tu peux repérer le tour de boucle et donc l'index correspondant et utiliser la méthode "del" sur ta liste à l'index en question.
Narcoz :
Essaye de rajouter encoding : "latin-1" quand tu fais json.load. Je ne me rappelle plus la syntaxe exacte mais tu peux la retrouver assez facilement
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
plass