LolaLutani a écrit: > le seul problème c’est vraiment la partie de ses lances qui doit être additionné et ne pas dépasser 21 Tu simules un jeu de hasard. Ou bien tu vérifies que tu as dépassé 21, ou bien tu prend la chance d'arrêter avant. Et l'ordi lui? Quelle serait sa stratégie?
Le Tout est souvent plus grand que la somme de ses parties.
le joueur doit tirer le nombre de fois qui veut le dès et je dois lui donner la somme des dés. Et si il a pas dépassé 21 je lui propose si il veut relancer le dés. a la fin je dis si le joueur a gagné face à l’ordinateur ou non. le premier qui dépasse 21 a perdu. ou sinon il a match nul
Je propose le code suivant dans lequel l'ordinateur a une mini-stratégie. Il se peut qu'il décide de ne pas jouer un certain nombre de fois. On aura l'impression d'une boucle infinie, mais il n'en est rien ... - from random import randint, choices joueur = 0 ordi = 0 # Je force un des deux à atteindre ou dépasser 21. while joueur < 21 and ordi < 21: # J'affiche seulement si nécessaire. if joueur > 15 and ordi > 15: print("Tu as un total de", joueur, " L'ordinateur a un total de", ordi) # Je demande au joueur de relancer s'il est près de 21. if joueur > 15: print("Veux-tu relancer? ('o' pour 'oui')") if input().lower()[0] == 'o': joueur += randint(1, 6) else: joueur += randint(1, 6) # L'ordi prend la chance de jouer s'il est près de 21. if ordi > 15: # Plus il est loin, plus il prend la chance. if choices((True, False), (21-ordi, ordi-15))[0]: ordi += randint(1, 6) else: ordi += randint(1, 6) # Résultat final. print("Tu as un total de", joueur, "L'ordinateur a un total de", ordi) if joueur > 21 and ordi > 21: print("Les deux perdent") elif ordi > 21: print("Tu gagnes") elif joueur > 21: print("L'ordinateur gagne") elif joueur > ordi: print("Tu gagnes") elif ordi > joueur: print("L'ordinateur gagne") else: print("C'est égal")
Le Tout est souvent plus grand que la somme de ses parties.
Arrivant à la fin de la deuxième partie ( lien). le mentor de la classe à proposer un code de récapitulation, quand j'ai essayé le code sur PyCharm ça fonctionne pas !
def print_welcome_message():
print("Bienvenue sur la mini-calculatrice !")
def input_two_number():
num1 = float(input("Entrez le premier nombre : "))
num2 = float(input("Entrez le deuxième nombre : "))
return num1, num2
def print_menu_and_get_choice():
print("=== MENU ===")
print("1. Addition")
print("2. Soustraction")
print("3. Multiplication")
print("4. Division")
user_choice = input("Entrez votre choix (1-4) : ")
while user_choice not in ["1", "2", "3", "4"]:
user_choice = input("Choix invalide. Entrez votre choix (1-4) : ")
return user_choice
def sum(a, b):
return a + b
def substraction(a, b):
return a - b
def multiplication(a, b):
return a * b
def division(a, b):
if b != 0:
return a / b
else:
print("Erreur : division par zéro")
def run_calcul():
num1, num2 = input_two_number()
match user_choice:
case '1':
result = sum(num1,num2)
case '2':
result = substraction(num1, num2)
case '3':
result= multiplication(num1,num2)
case '4':
result= division(num1,num2)
case _:
print("Choix invalide")
return result
if __name__ == '__main__':
print_welcome_message()
user_choice = print_menu_and_get_choice()
result = run_calcul(user_choice)
print(result)
L'erreur se trouve dans le fonction run_calcul, mais je ne sais pas c'est quoi l'erreur exactement.
Est-ce que ton erreur ressemble à ceci: Traceback (most recent call last): File "C:\Users\Administrateur\Documents\Sources\aa.py", line 62, in <module> result = run_calcul(user_choice) TypeError: run_calcul() takes 0 positional arguments but 1 was given Tu appelles la fonction avec un argument mais tu la définis sans argument. Ajoutes user_choice comme argument.
Pour la division par 0, je te suggère de retourner 0 ou la valeur float('inf') qui représente l'infini.
- Edité par PierrotLeFou 27 mai 2023 à 1:30:55
Le Tout est souvent plus grand que la somme de ses parties.
Est-ce que ton erreur ressemble à ceci: Traceback (most recent call last): File "C:\Users\Administrateur\Documents\Sources\aa.py", line 62, in <module> result = run_calcul(user_choice) TypeError: run_calcul() takes 0 positional arguments but 1 was given Tu appelles la fonction avec un argument mais tu la définis sans argument. Ajoutes user_choice comme argument.
Pour la division par 0, je te suggère de retourner 0 ou la valeur float('inf') qui représente l'infini.
- Edité par PierrotLeFou hier à 1:30-
-----------------------------
Non, plutôt ça :
/Users/**/PycharmProjects/OpenClassroom_base_python/venv/bin/python /Users/**/PycharmProjects/OpenClassroom_base_python/boucles/Calculatrice.py
File "/Users/**/PycharmProjects/OpenClassroom_base_python/boucles/Calculatrice.py", line 46
match user_choice:
^
SyntaxError: invalid syntax
Process finished with exit code 1
Quelle est ta version de Python? Les vieilles versions de Python ne supportent pas la commande match. Je suis sur Python 3.10.7 et ton code marche chez moi (après les corrections mentionnées).
Le Tout est souvent plus grand que la somme de ses parties.
Oui ça vient du mot-clé match (filtrage par motif) qui a été introduit en Python 3.10. Si tu utilises une version inférieure il est normal que tu rencontres une erreur de syntaxe.
Ensuite tu auras effectivement à traiter l'erreur pointée par PierrotLeFou où tu oublies de déclarer le paramètre de ta fonction.
Bonsoir, Je suis actuellement le cours sur les bases du langage Python. Mais je n'arrive pas à accéder aux exercices sur la plateforme Replit, pourtant j'ai bien un compte et je fais bien parti de la Team OpenClassroom. Lorsque je clique sur les liens de la section "A vous de jouer", j'attéris sur Replit avec un fichier main.py vide. J'aimerais bien être guidée afin de pouvoir avoir accès aux exercices. Merci.
Bonjour a tous, j'aurais besoin d'explication concernant l'exercice du chapitre " Controlez le déroulement de votre programme avec des conditions". J'ai construit mon code sur mycharm sur lequel il fonctionne bien, mais une fois sur replit, mon code ne remplit pas les conditions du test, la seule condition est le message d'erreur concernant la division par zero.
nombre_a_gauche = input("Entrer votre premiere valeur :")
nombre_a_droite = input("Entrer votre deuxieme valeur : ")
operation = input("Entrer votre operateur : ")
resultat = 0
x = nombre_a_gauche.isnumeric()
y = nombre_a_droite.isnumeric()
if (x == False) and (y == False) :
print("Erreur: les deux nombres doivent être des nombres entiers")
else :
match operation:
case "+":
resultat = nombre_a_gauche + nombre_a_droite
case "-":
resultat = nombre_a_gauche - nombre_a_droite
case "*" :
resultat = nombre_a_gauche * nombre_a_droite
case "/" :
if (nombre_a_droite ==0) :
print("Erreur: impossible de diviser par zéro.")
exit()
else :
resultat = nombre_a_gauche/nombre_a_droite
print(f" Le résultat de l'opération est :{resultat}")
Tu es certain que ça marchait quelque part? Tu joues avec des caractères alors que tu devrais convertir en entier (int). Ligne 10: c'est une erreur si le premier OU le second n'est pas un nombre. Après conversion et correction, ça marchera.
Le Tout est souvent plus grand que la somme de ses parties.
Y a t'il les corrections des exercices Replit du cours sur les bases du langage Python ?
Merci
- Edité par Lola Heselmann il y a environ 16 heures
Je crois que les Replit ne sont plus dispo. Edit: en fait si si on prend le lire le début du cours (je pense que tu peux soumettre le code via le bouton submit et attendre de voir on te répond)
Après, tu peux poster l'exercice sur le forum avec ton code et nous demander notre avis.
Y a t'il les corrections des exercices Replit du cours sur les bases du langage Python ?
Merci
- Edité par Lola Heselmann il y a environ 16 heures
Je crois que les Replit ne sont plus dispo. Edit: en fait si si on prend le lire le début du cours (je pense que tu peux soumettre le code via le bouton submit et attendre de voir on te répond)
Après, tu peux poster l'exercice sur le forum avec ton code et nous demander notre avis.
- Edité par umfred il y a environ 11 heures
Merci de proposer votre aide, mais malheureusement certains exercices de la 3ème partie du cours nécessitent un fichier csv... qui n'est donné nulle part! Donc, au-delà du fait que les corrections ne sont pas proposées, il y a certains exercices qu'on ne peut tout bonnement pas faire du tout. Vivement que ce soit réglé! Et heureusement que dans d'autres cours de Python du site, Replit n'est pas utilisé, et il n'y a pas tous ces soucis.
Merci de proposer votre aide, mais malheureusement certains exercices de la 3ème partie du cours nécessitent un fichier csv... qui n'est donné nulle part! Donc, au-delà du fait que les corrections ne sont pas proposées, il y a certains exercices qu'on ne peut tout bonnement pas faire du tout. Vivement que ce soit réglé! Et heureusement que dans d'autres cours de Python du site, Replit n'est pas utilisé, et il n'y a pas tous ces soucis.
Le fichier doit être intégré au Replit, sur la gauche, on doit voir la liste des fichiers main.py, etc
Est-ce que quelqu'un sait si c'est normal de ne pas avoir la correction lorsqu'on clique sur Submit dans Replit ?
Sur l'exercice des boucles : pas de problème, mais sur l'exercice des fonctions, que dalle à part un message qui ne veut rien dire : "Note: Your submission is past the due date and will be marked late."
j'ai essayé différentes manieres d'importer le module "operations", juste import nom_module en debut de code, puis j'ai fait le rappel du nom du module juste avant la fonction, ou aussi bien from module import * ( bien que déconseillé). Et dans ces cas là, les test additions et multiplications n'étaient plus validés. Du coup j'ai opté pour la syntaxe qui est dans le code précedent.
Aprés concernant la fonction main, j'ai essayé différentes facon, je pensais qu'il fallait mettre des arguments à la fonction main qui serviraient aux fonctions addition et multiplication mais rien ni fait. Tout comme l'appel qu'il demande comme dernière instruction du test.
Je veux bien te croire quand tu dis que les fonctions addition et multiplication fonctionnent. D'après moi, tu n'as pas donné le bon nom à ce module. Le fichier contenant tes fonctions devrait s'appeler operations.py avec le suffixe ".py"
P.S. On joue un peu aux devinettes sans les messages d'erreur.
- Edité par PierrotLeFou 30 juillet 2023 à 1:59:46
Le Tout est souvent plus grand que la somme de ses parties.
Bjr, les fonctions addition et multiplication sont bien dans un fichier dénommé "operations.py", voici le code du fichier operations :
def addition(a, b):
c = a + b
return c
def multiplication(a, b):
c = a * b
return c
Et voici le rendu d'erreur du test, aprés l'ensemble du code fonctionne, je n'ai pas d'erreur d'éxécution en soit. J'ai essayé d'importer directement les formules du module operations directement dans les fonctions print demander dans main(), le code fonctionne toujours mais le test_main est refusé.
✅ test_addition
✅ test_multiplication
❌ test_main
Message: Les fonctions ne sont pas correctement appelées, ou vous n'affichez pas les résultats.
Stack Trace:
Traceback (most recent call last):
File "/home/runner/Importez-des-packages-Python-Exercice-1-ClementMALZAC/_test_runnertest_suite.py", line 16, in test_main
output = StringIO()
NameError: name 'StringIO' is not defined
2/3 passed, see errors above
- Edité par clementmalzac 30 juillet 2023 à 15:20:16
Et il y a quoi dans le fichier "_test_runnertest_suite.py" ? Et c'est quoi 'StringIO' ? Tu as quels fichiers dans ton répertoire? Car là, je ne m'y retrouve pas.
Es-tu sur un système Linux ou MacOS ?
- Edité par PierrotLeFou 30 juillet 2023 à 15:43:59
Le Tout est souvent plus grand que la somme de ses parties.
Ca ne je saurais pas le dire, ces fichiers sont générés lors des test de l'exercice.je les fais directement sur le site Replit, pour être sur de respecter les consignes.
J'ai essayé de les ouvrir pendant que le test s'effectuaient, mais impossible vu qu'ils se suppriment automatiquement une fois que les test sont effectués.
- Edité par clementmalzac 30 juillet 2023 à 15:52:50
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.