Programmation » Python 3.8.2 : débutant - créer une boucle
Catégorie:  
   
Python 3.8.2 : débutant - créer une boucle
Publié le 14/11/2020 @ 08:18:13,
Par Monky
Bonjour,

Je réalise mon tout premier programme sous Python. Autant vous dire que je ne suis pas loin.

J'essaye de créer un petit jeu autour d'un nombre mystère.

Le programme choisit aléatoirement un nombre et demande ensuite à l'utilisateur de faire une proposition.

La boucle est donc la suivante :
Jusqu'à ce que la réponse soit égale au nombre mystère,
Dire "Non, le nombre est plus petit"
Proposez un autre nombre

Dire "Non, le nombre est plus grand
Proposez un autre nombre

En fin de boucle : oui ! C'est la bonne réponse

Pour le moment, je fais apparaitre le nombre aléatoire en début de programme pour pouvoir tester sa réaction à mes réponses...

Ma boucle ne mène à rien. Pas de message d'erreur, mais lorsque je rentre une proposition, le programme ne fait rien de ce que j'ai mis dans la boucle.

Je sais pertinement que j'ai écrit quelque chose de stupide dans mon programme, mais je ne trouve pas la réponse.

Pourriez-vous me donner une petit impulsion pour rebondir ?

  1. #coding:utf-8 
  2. #tirage au sort du nombre aléatoire entre 1 et 100 
  3. from random import randint 
  4. randint(1100
  5. #Création de la variable nombre mystère 
  6. import random 
  7. nbr = random.randint(1100
  8. nbr = int(nbr) 
  9. print(nbr) 
  10. #Demander une proposition à l'utilisateur 
  11. #rep = input("Selon vous, quel est le nombre mystère ? > ") 
  12. #rep = int(rep) 
  13. #Création fonction demander une proposition à l'utilisateur 
  14. rep = input("Selon vous, quel est le nombre mystère ? > "
  15. rep = int(rep) 
  16. def ask(): 
  17.   print(rep) 
  18. print(ask) 
  19. #Boucle pour donner les indications à l'utilisateur 
  20. while rep == nbr: 
  21.     if rep > nbr: 
  22.         print("Le nombre mystère est plus petit"
  23.         print(ask) 
  24.         continue 
  25.     elif rep < nbr: 
  26.         print("Le nombre mystère est plus grand"
  27.         print(ask) 
  28.         continue 
  29.     print("Oui ! Le nombre mystère était : ", nbr) 
  30.     break


J'ai fait une autre version de la boucle, sans plus de succès. Il n'affiche même pas le premier message de la boucle :

  1. #coding:utf-8 
  2. #tirage au sort du nombre aléatoire entre 1 et 100 
  3. from random import randint 
  4. randint(1100
  5. #Création de la variable nombre mystère 
  6. import random 
  7. nbr = random.randint(1100
  8. nbr = int(nbr) 
  9. print(nbr) 
  10. #Demander une proposition à l'utilisateur 
  11. #rep = input("Selon vous, quel est le nombre mystère ? > ") 
  12. #rep = int(rep) 
  13. #Boucle pour donner les indications à l'utilisateur 
  14. #while rep == nbr: 
  15. rep = 0 
  16. rep = int(rep) 
  17. while rep == nbr: 
  18.   rep = input("Selon vous, quel est le nombre mystère ? > "
  19.        
  20.   if rep > nbr: 
  21.     print("Le nombre mystère est plus petit"
  22.   elif rep < nbr: 
  23.     print("Le nombre mystère est plus grand"
  24.   else
  25.     print("Oui ! Le nombre mystère était : ", nbr)

Dernière édition: 14/11/2020 @ 08:47:10
   
Python 3.8.2 : débutant - créer une boucle
Publié le 14/11/2020 @ 09:07:06,
Par Monky
J'ai trouvé la solution.

Dans ma tête, je conceptualisais le While comme "jusqu"à ce que". J'aurais plutôt dû penser "Tant que". Mon code fonctionne à présent.

Autre objectif maintenant, ajouter la possibilité au joueur de recommencer.

  1. #coding:utf-8 
  2. #tirage au sort du nombre aléatoire entre 1 et 100 
  3. from random import randint 
  4. randint(1100
  5. #Création de la variable nombre mystère 
  6. import random 
  7. nbr = random.randint(1100
  8. nbr = int(nbr) 
  9. print(nbr) 
  10. #Boucle pour donner les indications à l'utilisateur 
  11. #while rep == nbr: 
  12. rep = 0 
  13. rep = int(rep) 
  14. #Tant que réponse est différente du nombre mystère 
  15. while rep != nbr: 
  16.   rep = input("Selon vous, quel est le nombre mystère ? > ")     
  17.   rep = int(rep) 
  18.   if rep > nbr: 
  19.     print("Le nombre mystère est plus petit"
  20.   elif rep < nbr: 
  21.     print("Le nombre mystère est plus grand"
  22.   else
  23.     print("Oui ! Le nombre mystère était : ", nbr)
   
Python 3.8.2 : débutant - créer une boucle
Publié le 14/11/2020 @ 17:54:36,
Par Monky
J'ai fini mon premier petit programme. Très basique, mais comme je ne suis pas bien doué...

  1. #coding:utf-8 
  2. #Salutations 
  3. #\n permet de passer à la ligne. 
  4. user = input("Bonjour ! Quel est ton prénom ?\n\n > "
  5. print("Bonjour {}, ravi de faire ta connaissance !\n\nNous allons jouer au nombre mystère.\n\nJe vais choisir un nombre entre 1 et 100.\n\nFais-moi ensuite tes propositions.\n\nJe vous dirai si le nombre est plus grand ou plus petit\n\n".format(user)) 
  6. import random 
  7. #Tirage au sort 
  8. def choixN(n): 
  9.   return random.randint(1, n) 
  10. #Balise pour recommencer la partie 
  11. recommencer = True 
  12. recommencer = bool(recommencer) 
  13. #Boucle qui va permettre de recommencer la partie 
  14. while recommencer == True: 
  15.   choix = input("Tapez 1 pour utiliser un nombre entre 1 et 10.\nTapez 2 pour utiliser un nombre entre 1 et 100.\nTapez 3 pour utiliser un nombre entre 1 et 1000.\n\n> "
  16.   choix=int(choix) 
  17.   if choix == 1
  18.     nbr = choixN(10
  19.   elif choix == 2
  20.     nbr = choixN(100
  21.   elif choix == 3
  22.     nbr = choixN(1000
  23.   rep = 0 
  24.   #Tant que réponse est différente du nombre mystère 
  25.   while rep != nbr: 
  26.     rep = input("Selon vous, quel est le nombre mystère ? \n\n> ")     
  27.     rep = int(rep) 
  28.     if rep > nbr: 
  29.       print("Le nombre mystère est plus petit\n\n"
  30.     elif rep < nbr: 
  31.       print("Le nombre mystère est plus grand\n\n"
  32.     else
  33.       print("Oui ! Le nombre mystère était effectivement : ", nbr) 
  34.       recommencer = input("Voulez-vous recommencer une partie ? (o / n)"
  35.       if recommencer == "o" or recommencer == "O"
  36.         recommencer = True 
  37.       else : 
  38.         recommencer = False 
  39.         print("Merci d'avoir joué {}, à bientôt !".format(user))
   
Python 3.8.2 : débutant - créer une boucle
Publié le 15/11/2020 @ 17:36:53,
Par zion
Hello Monky,

Désolé, pas que je ne sois pas intéressé, mais je n'ai pas trop regardé Python ,même si la lecture ne semble pas bien difficile comme langage j'avoue :smile:

J'avais fait un atelier similaire en PHP-Cli avec mes filles, elles aimaient plus le CLI que le blocky, va comprendre :spamafote:
C'est pour des enfants de quel âge?
Je suis le Roy :ocube:
   
Python 3.8.2 : débutant - créer une boucle
Publié le 15/11/2020 @ 17:52:25,
Par Monky
Hello Monky,

Désolé, pas que je ne sois pas intéressé, mais je n'ai pas trop regardé Python ,même si la lecture ne semble pas bien difficile comme langage j'avoue :smile:

J'avais fait un atelier similaire en PHP-Cli avec mes filles, elles aimaient plus le CLI que le blocky, va comprendre :spamafote:
C'est pour des enfants de quel âge?

Il n'y a pas de mal... Tout cela n'est pas très élaboré. On est ici dans l'enseignement primaire. Sixième primaire. Et concernant mes aptitudes, ce sont celles d'un débutant, j'ai mis le nez dedans la veille.

L'idée c'est qu'ils programmes avec Scratch. Je vais tenter de faire le pendant en Python de temps en temps pour leur montrer que c'est un réel codage qu'ils apprennent.

J'ai aussi un bras robotisé sur base d'Arduino. Ils vont donc aussi chipoter là-dessus.

J'ai apporté mon imprimante 3D pour faire le lien avec tout ça puisque le bras a été créé avec une imprimante 3D.

J'ai aussi un PC de bureau, un portable, un GSM qui sont complètement démonté. Nous observons le contenu et faisons le lien avec tout ça.

Je relie tout cela aux cours de sciences notamment sur le corps humain, mais aussi les engrenages. Evidemment, on peut travailler de nombreuses notions mathématiques. Je voudrais qu'ils créent de petit programmes par exemple aussi pour calculer des aires selon les formes. Excellent pour les aider à se construire des démarches de résolution, ce qui les bloque le plus souvent.

Rien d'intéressant au niveau de l'ensemble des visiteurs et utilisateurs de ce site, mais on va dire que j'essaie de les initier...
   
Python 3.8.2 : débutant - créer une boucle
Publié le 15/11/2020 @ 17:53:17,
Par Monky
Voici l'association du codage scratch et du code Python (ne pas se soucier du site, c'est un site de brouillon pour moi) : https://sites.google.com/annonciation.be/ticecole/cours/codage
   
Python 3.8.2 : débutant - créer une boucle
Publié le 15/11/2020 @ 18:08:52,
Par zion
J'avais vu un truc d'une école d'ingénieurs à Bruxelles pour apprendre à compter en binaire (à une expo science au Heyzel). Je n'ai plus le nom de l'école, mais c'était en légo avec des cartes, tu devais faire ta représentation binaire d'un nombre, et si tu y arrivais correctement il prenait une balle de golf pour la mettre dans le bon carré (avec genre 8x8 carrés et 2x8 chargeurs pour les balles).
C'était hyper intuitif pour apprendre à compter en binaire pour des gosses, impossible pour des adultes, l'âge fin primaire est parfait.

Pour Scratch, ne sous estime par la programmation en console comme avec Python ou PHP, les gosses aiment créer un petit truc interactif qui pose des questions, j'avais fait pareil avec elles pour demander 2 nombres, si elles voulaient une addition ou multiplication, elles voyaient directement l'intérêt (pour leurs devoirs :grin: ), je te dis pas la motivation :wink:

C'était bien plus facile en CLI que via un truc comme blocky, et un Pi est parfait pour ça.
Je suis le Roy :ocube:
   
Python 3.8.2 : débutant - créer une boucle
Publié le 15/11/2020 @ 18:12:43,
Par Monky
Je vais me pencher là dessus dès que j'ai un peu de temps... Merci !

Oui oui, j'ai un raspberry aussi en classe. Oublié de le mentionner...
   
Python 3.8.2 : débutant - créer une boucle
Publié le 16/11/2020 @ 22:03:28,
Par gizmo
Tout dépend de ce que tu veux faire avec les enfants.

Les interfaces de type Scratch ont les avantages suivant:
* impossible de faire une faute de frappe
* pas besoin d'apprendre l'anglais
* tu as un GUI d'office
* Hyper-simple de faire inter-agir différents éléments.

Les langages textuels, eux, on les avantages suivant:
* forcent à réfléchir en algorithmique
* ont un debugging plus simple à mettre en place
* permettent d'aller plus loin (quoique dans le cadre de cours en primaire, il y a peu de chance que tu atteignes ce niveau dans le temps alloué)

Pour aider à la transition de l'un à l'autre, tu peux aussi regarder ceci: https://edublocks.org qui te permets de voir la traduction block vers texte

PS: avec python, attends-toi a passer un temps non négligeable a fixer les erreurs d'indentation de tes élèves :ohwell:
Concept vivant.
   
Python 3.8.2 : débutant - créer une boucle
Publié le 16/11/2020 @ 23:14:09,
Par zion
gizmo> :love:

Tu penses quoi du PHP pour les gosses tiens? Tu utiliserais quoi comme premier langage ?
Je suis le Roy :ocube:
   
Python 3.8.2 : débutant - créer une boucle
Publié le 17/11/2020 @ 05:46:35,
Par Monky
Tout dépend de ce que tu veux faire avec les enfants.

Les interfaces de type Scratch ont les avantages suivant:
* impossible de faire une faute de frappe
* pas besoin d'apprendre l'anglais
* tu as un GUI d'office
* Hyper-simple de faire inter-agir différents éléments.

Les langages textuels, eux, on les avantages suivant:
* forcent à réfléchir en algorithmique
* ont un debugging plus simple à mettre en place
* permettent d'aller plus loin (quoique dans le cadre de cours en primaire, il y a peu de chance que tu atteignes ce niveau dans le temps alloué)

Pour aider à la transition de l'un à l'autre, tu peux aussi regarder ceci: https://edublocks.org qui te permets de voir la traduction block vers texte

PS: avec python, attends-toi a passer un temps non négligeable a fixer les erreurs d'indentation de tes élèves :ohwell:


Merci ! Je connaissais Edubloc. A voir où en seront les élèves. Mais je voudrais effectivement arriver à ce genre de choses...
   
Python 3.8.2 : débutant - créer une boucle
Publié le 17/11/2020 @ 15:29:04,
Par gizmo
gizmo> :love:

Tu penses quoi du PHP pour les gosses tiens? Tu utiliserais quoi comme premier langage ?


Je pense que, même si la syntax est souvent absconse ("mais pourquoi il faut des $?"), elle a l'avantage, sur python, d'avoir des règles visuelles plus claire.
Et puis, comme ce n'est pas du compilé, il y a moins de phase "attendre" qui font que les enfants perdent le fil.
Aussi, GROS avantage, le mix HTML/php dans le même fichier, qui leur permet facilement d'avoir une GUI, même primaire (le but n'est pas d'apprendre les bonnes pratique de programmation, mais d'apprendre la logique algorithmique et l'analyse de système).
Répondre - Catégorie:  
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?