Je m'appelle ramito et je suis connu sur le Site du Zero en tant que Webdesigner.
Lycéen, j'ai subi la réforme qui propose au cursus Scientifique la spécialité ISN (Informatique et Science du Numérique)
Le professeur nous avait donnés un exercice à faire :
Citation
Écrire un programme qui demande un nombre à l’utilisateur, puis qui calcule et affiche le carré de ce nombre.
Mon problème
J'ai commence le python il y a peu grâce aux tutos du SDZ.
J'avais réussi à faire ça :
u = demande
b = u*u
print ("Le carré de " + str(u) + " est " + str (b))
Le professeur nous as ensuite envoyés un mail dans lequel il est écrit ça :
def exo1():
# tant que la variable booléenne ok est à False
# on essaie d'obtenir un nombre de l'utilisateur...
ok=False
while not ok:
try:
u=demande("donnez un nombre réel")
except:
message_erreur("exemple de réel : -1.53")
else:
ok=True
print("variable ="+str(u))
return(u)
# modifiez le programme pour que :
# 1/ il n'accepte que des vrais réels (que se passe-t-il lorsque
# l'utilisateur retourne 2,5 par exemple ?
# 2/ il n'accepte que des entiers.
# 3/ si on tape un code du genre "xxx" on obligera le programme à s'arrêter
# 4/ plutôt qu'un print qui envoie dans la console,
# faites afficher un message à l'écran.
# On pourra compléter la bibliothèque "lycee" de manière à disposer
# de ces fonctions.
Ce que je ne comprends pas ici c'est les "True" et "False"
J'ai regardé les tutos du sdz le concernant mais impossible de comprendre ici à quoi elles servent.
Si quelqu'un peut me dire concrétement ici ce que signifie chaque ligne et surout les True et False, cela m'aiderait grandement.
Merci d'avance à tout ceux qui me viendront en aide,
Cordialement,
ramito
# Créé par rdesplat, le 24/09/2012
from __future__ import division
from Tkinter import *
from lycee import *
def message_erreur(t):
# utilisation du module messagebox de TkInter (passez la souris sur le mot
# tkMessageBox et acédez à la bibliothèque correspondante
tkMessageBox.showerror("erreur",t)
def message_info(t):
# utilisation du module messagebox de TkInter (passez la souris sur le mot
# tkMessageBox et acédez à la bibliothèque correspondante
tkMessageBox.showinfo("Info",t)
max_termes=4
L=["Aucune","Poussin","Pupille","Minime","Cadet"]
Agemin=[0,6,8,10,12]
Agemax=[6,8,10,12,1000]
u=demande("Age de la personne")
i=0
trouve=False
resultat=""
while i<max_termes and not trouve:
trouve=(u>=Agemin[i]) and (u<Agemin[i])
if not trouve:
i=i+1
resultat=L[i]
message_info("La personne est dans la catégorie : "+resultat)
Pourquoi ce code ne marche t-il pas ? Le professeur nous as donné ce code et il dit que ça marche.
Je reviens au 1er message, il y a eu des posts avant que je réponde.
La variable "u" n'est pas explicite pour un débutant comme pour un pro, on évite les variables à une seule lettre sauf le "n" et le "i" comme diminutif de nombre ou indice (et encore...).
True et False veulent dire "vrai" et "faux".
ok=False veut simplement dire, que c'est pas ok
donc whilenotok: veut dire "Tant que ce n'est pas ok, on reste dans la boucle".
Je connais ISN, j'ai aidé un enseignant à se former dans le langage pour enseigner dans cette section.
Ils ne sont pas spécialisés dans un langage et sont plus là, pour vous enseigner l’algorithmique, ne lui en veut pas c'est pas le but de son programme de t'apprendre un langage.
Citation : PuckMan
Try/Except n'est pas bien approprié ici. Mais c'est vaguement un if/else dans ton cas.
Je ne suis pas d'accord, comment ferais-tu l'équivalent?
Ce que je trouve bizarre, et je pense que josmiley parlait de cela, c'est la boucle while dans une fonction, c'est pas très beau.
Le else semble inutile, ce bloc pourrait être placé dans le try.
while True: # boucle infinie
try: # J'essaie...
n = int(input("donnez un nombre réel : ")) # de transformer ma chaîne en un entier
print("variable = {}".format(n)) # et je l'affiche
break # j'interrompt la boucle
except ValueError: # Si une erreur de type ValueError
print("Erreur de type") # j'affiche "Erreur de type"
Bonne continuation...
P.S Pour ton 2ème message, il nous manque le module lycee
Merci de ton aide, pourtant mon niveau en Python étant réellement faible, je ne comprends pas ta boucle "try". Le int(input( et le ("variable = {}". format(n)) ..
Le module lycée, mon professeur ne me l'a pas donné mais il n'a pas l'air d'être très compliqué (comme celui TkInter).
j'ai rien dit, effectivement le test ne se fait pas dans demande() qui est un simple input() donc le bloc try/except s'impose ici.
Arf tout ça par esprit de contradiction je te connais
Citation : ramito
Merci de ton aide, pourtant mon niveau en Python étant réellement faible, je ne comprends pas ta boucle "try". Le int(input( et le ("variable = {}". format(n))
variable={}, remplacera la valeur de "n" dans l'accolade.
La fonction format est dans la documentation python
Citation : ramito
Le module lycée, mon professeur ne me l'a pas donné mais il n'a pas l'air d'être très compliqué (comme celui TkInter).
Impossible de tester si tu ne l'as pas, car la fonction demande doit se trouver dans ce module. Si tu ne l'as pas tu ne pourras pas l'importer.
Citation : ramito
Pour que cela marche il faudrait que je modifie quoi ?
j'en avais jamais entendu parlé ... voilà une doc qui va bien occuper ma journée.
Bah en fait, c'est l'algo de recherche dichotomique. D'ailleurs, c'est ch***t que ça fonctionne uniquement dans un sens de tri (tout comme heapq d'ailleurs).
Lignes de code incomprises
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.