Boucle "while"

Résolu/Fermé
lecorse Messages postés 127 Date d'inscription samedi 11 mars 2006 Statut Membre Dernière intervention 19 juin 2020 - Modifié le 8 déc. 2018 à 19:40
mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 - 8 déc. 2018 à 19:41
Bonjour,
Tout ce que je sais sur python je l'ai appris avec les tutoriels du net.
D'après ce que j'ai lu la boucle "while" pourrait m'aider à poser 10 questions maximums avec mon petit programme.
Pourriez -vous m'expliquer je ne comprends pas
Merci pour l'aide


from random import randint

p = 0
c = 0

a = randint(1,10)
b = randint(1,10)

# test contrôle (ok- a=4,b=6,x=24)
print(a,"X",b)
#print(b)
x = a*b
#print(x)


(y) = input("résultat = ") 

c = c + 1
if int(y) == int(x):
        print("exact")
        p = p + 1
        print("tu as : ",p ,"bonne(s)", "réponse(s) sur : ", c ,"question(s)")
else:
        print("faux le résultat est :", a*b)






Configuration: Windows / Edge 17.17134

2 réponses

mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
Modifié le 14 nov. 2018 à 00:06
Bonjour,

Voici comment tu peux écrire ce programme :

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from random import randint

NUM_QUESTIONS = 5

num_correct_answers = 0
for num_questions in range(1, NUM_QUESTIONS + 1):
    a = randint(1, 10)
    b = randint(1, 10)
    x = a * b
    try:
        y = int(input("%d * %d = ? " % (a, b)))
    except:
        y = None
        pass
    if x == y:
        num_correct_answers += 1
        print("Bravo! (%d/%s) of correct answers" % (num_correct_answers, num_questions))
    else:
        print("Nope... %d * %d = %d" % (a, b, x))

print("This is the end! (%d/%s) of correct answers" % (num_correct_answers, num_questions))


Le bloc
try ... except
sert à rattraper les saisies de l'utilisateur qui ne sont pas un entier.

Bonne chance
0
lecorse Messages postés 127 Date d'inscription samedi 11 mars 2006 Statut Membre Dernière intervention 19 juin 2020 18
14 nov. 2018 à 20:32
Merci pour ta réponse c'est exactement ce que je voulais.Je vais bien étudier ton programme mais avant permets moi encore (une ou deux !!) petites questions pour bien tout comprendre :

Pourrais-tu m'expliquer le code "%d" avec (input'%d * %d = ? %(a,b))) je suppose que (a,b) sont les paramètres de %d

Avec print("Nope....%d/%s = %d (a,c,x)) % (num_correct_answers, num_questions sont les paramètres de %d et %s

Comme %d * %d sont mes paramètres de a,b dans input

Bonne soirée.
0
mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
16 nov. 2018 à 00:25
Bonjour

Le premier
%d
est substitué par le premier élément du tuple en tant que valeur entière décimale (j'aurais pu utiliser
%i
), comme expliqué ici. Idem pour le second %d, avec le second élément du tuple. Cette syntaxe peut être étoffée pour spécifier le nombre de chiffres significatifs, le padding, l'alignement, etc.

Pour des variables non numériques, tu peux utiliser
%s
pour formater un élément sous forme de chaîne (ça écrira le résultat de
str(objet)
) ou
%r
(résultat de
repr(objet)
).

Bonne chance
0
lecorse Messages postés 127 Date d'inscription samedi 11 mars 2006 Statut Membre Dernière intervention 19 juin 2020 18
16 nov. 2018 à 18:24
Merci pour ta réponse.
Maintenant je vais prendre le temps pour bien digérer ce que tu viens de m'expliquer.
Vu mon âge j'ai compris que j'avais encore beaucoup trop de matière à apprendre pour espérer être un jour à ta hauteur mais je ne me décourage pas j'irai le plus loin possible.
Maintenant encore une petite question certainement idiote: Pour que mes petites filles puissent s’entraîner au calcul mental comment faire pour qu'elles puissent se servir de mon programme. Elles n habitent pas près de chez moi.
Bon weekend.
0
mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
Modifié le 18 nov. 2018 à 16:07
Maintenant je vais prendre le temps pour bien digérer ce que tu viens de m'expliquer.

Tu avais déjà pour ainsi dire compris tout ce qu'il y avait à comprendre. Tu peux ignorer les compléments que je t'ai donné, c'était juste pour donner les racines de cette syntaxe.

Pour des besoins simples, tu peux simplement garder en tête que les %s sont substitués par les chaque élément du tuple passés derrière l'opérateur %.

Ainsi
print("a : %s b : %s c :%s" % (1, 2, 3))
écrit
"a : 1 b : 2 c :3"


Vu mon âge j'ai compris que j'avais encore beaucoup trop de matière à apprendre pour espérer être un jour à ta hauteur mais je ne me décourage pas j'irai le plus loin possible.

C'est un puits sans fond, mais on a tous débuté, donc il ne faut pas se laisser intimider, et surtout, que ça reste un plaisir :-)

Maintenant encore une petite question certainement idiote: Pour que mes petites filles puissent s’entraîner au calcul mental comment faire pour qu'elles puissent se servir de mon programme. Elles n habitent pas près de chez moi.

Au contraire, cette question est très pertinente.

De base, un programme python ne peut être lancé que sur une machine où python est installé (e.g. anaconda sous windows, ou le paquet
python3
sous linux), ainsi que les éventuels modules python qui pourraient être nécessaires à ce programme (ici, tu ne seras pas concerné car tu n'utilises que des modules de base).

Comme il n'est pas dit que tes petites filles aient installé python (ou envie de le faire), une alternative pourrait être de générer un exécutable. Je te renvoie sur cette discussion, car personnellement, je ne les ai jamais testé.

Par contre, à ce stade, il faut garder à l'esprit que ce programme est en mode texte, ce qui nécessite de le lancer depuis un terminal (e.g. commande ms-dos sous windows). Si tu voulais faire une interface graphique, il faudrait ajouter à ce programme une petite interface graphique. Il existe plein de modules pour y parvenir, par exemple pyqt ou pygtk, etc. Par contre ceci nécessite un peu de temps pour apprendre à les maîtriser, mais il existe de nombreux tutoriels sur internet pour les découvrir...

Une solution intermédiaire serait de mettre ton programme sur une plateforme genre https://repl.it (c'est un site sur lequel on peut mettre des exercices écrits en python et les faire faire à des élèves), ainsi elles pourraient utiliser ton programme directement depuis leur navigateur.

Autre possibilité, écrire ce programme par exemple en javascript (donc un autre langage) pour qu'elle n'aient qu'à ouvrir le programme depuis leur navigateur.

Bonne chance
0
lecorse Messages postés 127 Date d'inscription samedi 11 mars 2006 Statut Membre Dernière intervention 19 juin 2020 18
5 déc. 2018 à 17:12
Encore merci

Bonne soirée
0
mamiemando Messages postés 33076 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 avril 2024 7 748
8 déc. 2018 à 19:41
De rien, bonne continuation !
0