Débutant : Tester un programme
Résolu/Fermé
A voir également:
- Débutant : Tester un programme
- Logiciel de programmation pour débutant - Guide
- Logiciel montage vidéo débutant - Guide
- Cours d'infographie pour debutant - Forum Graphisme
- Apprendre le coran pour débutant (+ pdf) - Télécharger - Histoire & Religion
- Partition piano gratuite débutant avec notes ✓ - Forum Musique / Radio / Clip
14 réponses
Utilisateur anonyme
8 sept. 2013 à 18:39
8 sept. 2013 à 18:39
Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> année=input("Saisissez une année : ")
Saisissez une année : 2009
>>> année=int(année)
>>> type(année)
<class 'int'>
>>> if année%4==1:
... bissextile=False
... elif année%4==0 and année%100==0:
... bissextile=True
... elif année%400==0:
... bissextile=True
... else:
... bissextile=False
...
>>> if bissextile:
... print("L'année est bissextile")
... else:
... print("L'année n'est pas bissextile")
...
L'année n'est pas bissextile
Voila un copier/Coller tout bête ^^
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> année=input("Saisissez une année : ")
Saisissez une année : 2009
>>> année=int(année)
>>> type(année)
<class 'int'>
>>> if année%4==1:
... bissextile=False
... elif année%4==0 and année%100==0:
... bissextile=True
... elif année%400==0:
... bissextile=True
... else:
... bissextile=False
...
>>> if bissextile:
... print("L'année est bissextile")
... else:
... print("L'année n'est pas bissextile")
...
L'année n'est pas bissextile
Voila un copier/Coller tout bête ^^
Utilisateur anonyme
17 sept. 2013 à 20:46
17 sept. 2013 à 20:46
Bonsoir,
input est une fonction permettant une demande à un utilisateur. Cette fonction renvoie une chaine de caractères.
Pour travailler sur des nombres tu devras convertir ta chaine en entier, d'où la fonction int(chaine) dans ton code.
sera équivalent à
Résultat un nombre!
On attaque ensuite l'algorithme concernant l'année bissextile.
Selon wikipedia, les années bissextiles sont
divisibles par 4 et non par 100
ou
divisibles par 400
Si on réfléchit un peu, en gros une année bissextile c'est divisible par 4 et soit divisible par 400 ou pas divisible par 100.
Au niveau opération ça donne ceci
annee % 4 == 0 and (annee % 100 != 0 or annee % 400 == 0)
Ce qui donne un code facile à compléter
Voilà en espérant t'avoir aidé...
Bonne continuation.
input est une fonction permettant une demande à un utilisateur. Cette fonction renvoie une chaine de caractères.
Pour travailler sur des nombres tu devras convertir ta chaine en entier, d'où la fonction int(chaine) dans ton code.
annee = input("Entrer année : ")
annee = int(annee)
sera équivalent à
annee = int(input("Entrer année : "))
Résultat un nombre!
On attaque ensuite l'algorithme concernant l'année bissextile.
Selon wikipedia, les années bissextiles sont
divisibles par 4 et non par 100
ou
divisibles par 400
Si on réfléchit un peu, en gros une année bissextile c'est divisible par 4 et soit divisible par 400 ou pas divisible par 100.
Au niveau opération ça donne ceci
annee % 4 == 0 and (annee % 100 != 0 or annee % 400 == 0)
Ce qui donne un code facile à compléter
annee = int(input("Entrer une année : "))
if annee % 4 == 0 and (annee % 100 != 0 or annee % 400 == 0):
print("annee bissextile")
else:
print("annee non bissextile")
Voilà en espérant t'avoir aidé...
Bonne continuation.
JulienJust
Messages postés
139
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
2 septembre 2014
18
17 sept. 2013 à 21:32
17 sept. 2013 à 21:32
Effectivement, ça corrige ma faute. Je partais du principe qu'une année bissextile est divisible par 100. D'où mes résultats illogiques.
#Juloblairot : en combinant le script que je t'ai donné et celui, tu obtiendras le programme que tu désires.
#Juloblairot : en combinant le script que je t'ai donné et celui, tu obtiendras le programme que tu désires.
JulienJust
Messages postés
139
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
2 septembre 2014
18
Modifié par JulienJust le 10/09/2013 à 14:47
Modifié par JulienJust le 10/09/2013 à 14:47
Hello !
Ceci peut t'aider:
N'hésite pas à me dire ce que tu ne comprends pas ;)
Ceci peut t'aider:
entier = 0 # variable égale à 0 ou 1. Initialisée à 0.
reponse = [ ] # liste contenant le résultat final
## Fonction vérifiant si le nombre entré est une annee bissxetile ##
def test_bissextile(year): # 'year' la variable d'entrée
resultat = [ ] # liste qui sera rempli au fur et à mesure du diagnostic
resultat.append(" ****Debut du test sur " + str(year) + "****\n")
if float(year) % 4 == 0: # Si le reste de la division par 4 est nul
resultat.append(" " + str(year)+ " est un multiple de 4.\n")
if float(year) % 100 == 0: # Si le reste de la division par 100 est nul
resultat.append(" " + str(year)+ " est un multiple de 100.\n")
if float(year) % 400 == 0: # Si le reste de la division par 400 est nul
resultat.append(" " + str(year)+ " est un multiple de 400.\n")
resultat.append(" " + str(year)+ " est une annee bissextile.\n")
else:# sinon
resultat.append(" " + str(year)+ " n'est pas un muiltiple de 400.\n")
resultat.append(" " + str(year)+ " n'est pas une annee bissextile.\n")
else:# sinon
resultat.append(" " + str(year)+ " n'est pas un muiltiple de 100.\n")
resultat.append(" " + str(year)+ " n'est pas une annee bissextile.\n")
else:# sinon
resultat.append(" " + str(year)+ " n'est pas un muiltiple de 4.\n")
resultat.append(" " + str(year)+ " n'est pas une annee bissextile.\n")
resultat.append(" ****Test terminé****\n\n")
return resultat
## On vérifie si la variable entrée est un entier ##
while entier == 0: # Tant que entier = 0
annee = raw_input("Entrez une une annee: \n")
try:
int(annee)
entier = 1 # Si 'annee' est bien un entier, dans ce cas entier = 1 et on sort de la boucle;
reponse = test_bissextile(annee)
for elem in reponse:
print elem
break # permet de sortir de la boucle
except ValueError: # Si 'annee' n'est pas un entier, on boucle
print "Entrez un nombre s'il vous plaît."
N'hésite pas à me dire ce que tu ne comprends pas ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
10 sept. 2013 à 18:10
10 sept. 2013 à 18:10
Alors merci à toi d'abord ! :D
Et ensuite, j'ai pas encore vu toutes les fonctions que tu utilises.
resultat.append(" " + str(year)+ " est un multiple de 100.\n")
if float(year) % 400 == 0:
Que signifie resultat.append ? Et pourquoi mettre des guillemets sans rien dedans ? Pareil, str(year) c'est juste pour afficher l'année (en précisant que c'est du type string c'est celà ?)
Pourquoi tu n'utilises pas print dans ce type de ligne ?
float correspond aux nombres a virgules (donc non multiple de 400 dans ce cas là) c'est ca ?
if float(year) %400==0: correspond à if année%400==0: non ? Pourquoi tu indiques le type de variable a chaque fois ? (il me semble qu'en C, il faut toujours rentrer le type de la fonction, c'est pour celà ?)
Pour la deuxième partie, correspondant à "si la variable entrée est un entier" :
Que signifie raw_input ?
Try est mis pour faire un test ? Quelle différence entre try et if alors ?
reponse = test_bissextile(année) ca signifie "si l'année est bien un entier alors, faire le test année bissextile au dessus. C'est ca ?
ExceptValueError: On autorise des valeurs fausses ? Je ne comprends pas cette ligne non plus ^^
Beaucoup de questions je suis désolé mais je débute vraiment. Merci de ton aide !
Et ensuite, j'ai pas encore vu toutes les fonctions que tu utilises.
resultat.append(" " + str(year)+ " est un multiple de 100.\n")
if float(year) % 400 == 0:
Que signifie resultat.append ? Et pourquoi mettre des guillemets sans rien dedans ? Pareil, str(year) c'est juste pour afficher l'année (en précisant que c'est du type string c'est celà ?)
Pourquoi tu n'utilises pas print dans ce type de ligne ?
float correspond aux nombres a virgules (donc non multiple de 400 dans ce cas là) c'est ca ?
if float(year) %400==0: correspond à if année%400==0: non ? Pourquoi tu indiques le type de variable a chaque fois ? (il me semble qu'en C, il faut toujours rentrer le type de la fonction, c'est pour celà ?)
Pour la deuxième partie, correspondant à "si la variable entrée est un entier" :
Que signifie raw_input ?
Try est mis pour faire un test ? Quelle différence entre try et if alors ?
reponse = test_bissextile(année) ca signifie "si l'année est bien un entier alors, faire le test année bissextile au dessus. C'est ca ?
ExceptValueError: On autorise des valeurs fausses ? Je ne comprends pas cette ligne non plus ^^
Beaucoup de questions je suis désolé mais je débute vraiment. Merci de ton aide !
JulienJust
Messages postés
139
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
2 septembre 2014
18
11 sept. 2013 à 11:56
11 sept. 2013 à 11:56
Hello !!!
Effectivement il y a beaucoup de questions !!
Du coup ma question c'est : as-tu testé le script ?? Si oui, pourquoi ne pas ne l'avoir modifié en fonction de tes question ? :)
Je vais néanmoins répondre à quelques unes de tes questions :
1.
`resultat' est une liste (
Les guillemets sans rien dedans c'est simplement pour faire jolie lors de l'impression dans la console :) ça représente un « espace ». Donc tu peux les supprimer si tu en as envie.
La fonction `str()' appliquée à la donnée `year' permet de convertir `year' en string (= chaîne de caractères).
Concernant les `print'. Je te laisse remplacer les `resultat.append()' par des `print' et de voir le résultat (c'est toujours mieux de tester :) ).
2.
C'est une fonction qui renvoie toujours une chaîne de caractères. Elle joue le même rôle que `input()' (tu peux donc le remplacer les intervertir). A partir de là, tu devrais réaliser que le nombre entré par l'utilisateur, arrive dans le script comme une chaîne de caractères (string). Il me faut donc convertir cette chaîne en nombre (réel : `float( )' ; entier : `int( )') pour effectuer le prochain calcul.
Effectivement il y a beaucoup de questions !!
Du coup ma question c'est : as-tu testé le script ?? Si oui, pourquoi ne pas ne l'avoir modifié en fonction de tes question ? :)
Je vais néanmoins répondre à quelques unes de tes questions :
1.
`resultat.append(" " + str(year)+ " est un multiple de 100.\n")'
`resultat' est une liste (
resultat = [ ] # liste qui sera rempli au fur et à mesure du diagnostic). Sous python, pour ajouter un élément dans une liste, il faut utiliser la fonction `append()'. Donc j'ajoute la chaîne de caractères " " + str(year)+ " est un multiple de 100.n" à la liste `resultat'.
Les guillemets sans rien dedans c'est simplement pour faire jolie lors de l'impression dans la console :) ça représente un « espace ». Donc tu peux les supprimer si tu en as envie.
La fonction `str()' appliquée à la donnée `year' permet de convertir `year' en string (= chaîne de caractères).
Concernant les `print'. Je te laisse remplacer les `resultat.append()' par des `print' et de voir le résultat (c'est toujours mieux de tester :) ).
2.
`raw_input()'
C'est une fonction qui renvoie toujours une chaîne de caractères. Elle joue le même rôle que `input()' (tu peux donc le remplacer les intervertir). A partir de là, tu devrais réaliser que le nombre entré par l'utilisateur, arrive dans le script comme une chaîne de caractères (string). Il me faut donc convertir cette chaîne en nombre (réel : `float( )' ; entier : `int( )') pour effectuer le prochain calcul.
Ton script ? Non je ne l'ai pas testé désolé ^^
Le mien je l'ai testé mais je n'allais pas retaper tout le programme a chaque fois que je voulais tester. Du coup j'ai essayé pour 2008 et 2009 et l'année est affichée non bissextile
D'accord pour "append()" je n'avais pas encore vu.
D'accord pour raw_input. Je comprends mieux du coup
Le mien je l'ai testé mais je n'allais pas retaper tout le programme a chaque fois que je voulais tester. Du coup j'ai essayé pour 2008 et 2009 et l'année est affichée non bissextile
D'accord pour "append()" je n'avais pas encore vu.
D'accord pour raw_input. Je comprends mieux du coup
JulienJust
Messages postés
139
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
2 septembre 2014
18
11 sept. 2013 à 11:58
11 sept. 2013 à 11:58
3.
Donc je répète, `float(year)' convertit converti la donnée entrée en nombre. Avec le modulo (`%') on vérifie le reste de la division. En gros, ici la condition du `if' signifie : « Si le reste de la division year/400 est nul, alors : »
4.
`Try' te permet de tester un condition, si elle est respectée, tu agis ! Si elle ne l'est pas (`except'), bin tu agis mais d'une autre façon.
Dans mon script, `try/except' te permet de savoir si l'utilisateur a bien entré un nombre entier. Et si ce n'est pas le cas (`ValueError'), je préviens l'utilisateur par un `print'.
Pour moi c'est beaucoup plus intéressant d'utiliser ça plutôt qu'un `if/else'.
`if float(year) % 400 == 0:'
Donc je répète, `float(year)' convertit converti la donnée entrée en nombre. Avec le modulo (`%') on vérifie le reste de la division. En gros, ici la condition du `if' signifie : « Si le reste de la division year/400 est nul, alors : »
4.
`try......except'
`Try' te permet de tester un condition, si elle est respectée, tu agis ! Si elle ne l'est pas (`except'), bin tu agis mais d'une autre façon.
Dans mon script, `try/except' te permet de savoir si l'utilisateur a bien entré un nombre entier. Et si ce n'est pas le cas (`ValueError'), je préviens l'utilisateur par un `print'.
Pour moi c'est beaucoup plus intéressant d'utiliser ça plutôt qu'un `if/else'.
JulienJust
Messages postés
139
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
2 septembre 2014
18
Modifié par JulienJust le 11/09/2013 à 12:02
Modifié par JulienJust le 11/09/2013 à 12:02
Et enfin:
5.
Cette ligne seule, te dit simplement que la variable `reponse' est le résultat de la fonction `test_bissextile' appliquée à la variable `annee'.
Voilà !!!
si tu as d'autres questions, n'hésites pas.
Conseil: testes les limites du script ;)
5.
`reponse = test_bissextile(année)'
Cette ligne seule, te dit simplement que la variable `reponse' est le résultat de la fonction `test_bissextile' appliquée à la variable `annee'.
Voilà !!!
si tu as d'autres questions, n'hésites pas.
Conseil: testes les limites du script ;)
Utilisateur anonyme
11 sept. 2013 à 13:05
11 sept. 2013 à 13:05
D'accord merci ! Très complet comme réponses merci beaucoup !
Il y a plusieurs choses que je n'ai pas vue pour le moment, ca me restreint donc a une ou deux possibilités je crois.
Encore merci !
Je re test mon script mais cette fois en le définissant pour pouvoir réessayer de le réutiliser.
Je peux faire le même départ :
Il y a plusieurs choses que je n'ai pas vue pour le moment, ca me restreint donc a une ou deux possibilités je crois.
Encore merci !
Je re test mon script mais cette fois en le définissant pour pouvoir réessayer de le réutiliser.
Je peux faire le même départ :
année=input("Saisissez une année : ")Et je recopie mon code. Je test de suite !
Saisissez une année : 2009
>>> année=int(année)
def test_bissextile(année):
if année%400==0:
JulienJust
Messages postés
139
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
2 septembre 2014
18
11 sept. 2013 à 13:23
11 sept. 2013 à 13:23
Que donne ton script actuellement? (tu peux me l'envoyer en inbox)
Utilisateur anonyme
Modifié par Juloblairot le 15/09/2013 à 20:04
Modifié par Juloblairot le 15/09/2013 à 20:04
Bon bah j'abandonne là ^^ Ca fait bien une petite heure que je cherche, je ne trouve pas comment faire une chose assez simple
Je veux faire un programme qui trouve, à partir d'une valeur que l'utilisateur choisi, la première année bissextile.
Exemple si je tappe 2001, je veux qu'il me dise que 2001 n'est pas bissextile mais que 2004 l'est
Voila, j'ai un problème avec ma boucle while. Mais je n'arrive pas à comprendre comment faire ca. J'ai déjà essayé de rajouter un
mais ca ne marche pas. Merci de l'aide possible !
N'essaie pas, fais le ou ne le fais pas.
Je veux faire un programme qui trouve, à partir d'une valeur que l'utilisateur choisi, la première année bissextile.
Exemple si je tappe 2001, je veux qu'il me dise que 2001 n'est pas bissextile mais que 2004 l'est
# -*-coding:Latin-1 -*
import os
bissextile=str
année=input("Saisissez une année de départ : ")
année=int(année)
if année%400==0 or (année%4==0 and année%100==0):
bissextile=True
else:
bissextile=False
if bissextile:
print("BISSEXTILE")
else:
while bissextile is not True:
print(année+1)
année+=1
os.system("pause")
Voila, j'ai un problème avec ma boucle while. Mais je n'arrive pas à comprendre comment faire ca. J'ai déjà essayé de rajouter un
if bissextile is True:
break
mais ca ne marche pas. Merci de l'aide possible !
N'essaie pas, fais le ou ne le fais pas.
JulienJust
Messages postés
139
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
2 septembre 2014
18
16 sept. 2013 à 11:21
16 sept. 2013 à 11:21
Re-hello !
Hum... ça doit te faire un genre de boucle infinie, non? (ou rien peut-être...).
Pourquoi ne pas faire au plus simple:
ça devrait marcher nickel.
Hum... ça doit te faire un genre de boucle infinie, non? (ou rien peut-être...).
Pourquoi ne pas faire au plus simple:
annee_entree = input("Entrez une annee: \n")
annee = int(annee_entree)
## Fonction vérifiant si le nombre entré est une annee bissxetile ##
def test_bissextile(annee):
if (annee % 4 == 0) and (annee % 100 == 0) and (annee % 400 == 0):
pass
else:# sinon
annee = test_bissextile(annee+1)
return annee
#----------- Programme principale -----------#
annee = test_bissextile(annee_entree)
if annee != annee_entree:
print " " + str(annee_entree) + " n'est pas bissextile.\n"
print " mais " + str(annee) + " est bissextile.\n"
else:
print " " + str(annee) + " est bissextile.\n"
ça devrait marcher nickel.
Utilisateur anonyme
16 sept. 2013 à 19:51
16 sept. 2013 à 19:51
Ca a l'air plus simple en effet ^^
Oui ca me fait une boucle infinie en mettant 2002 2003 2004 etc...
Que signifie le
Le
Je peux mettre les deux parties du programme sur le meme blocnote ?
Oui ca me fait une boucle infinie en mettant 2002 2003 2004 etc...
Que signifie le
pass?
Le
return anneesignifie qu'il faut reccommencer la boucle pour année+1 c'est ca ?
Je peux mettre les deux parties du programme sur le meme blocnote ?
JulienJust
Messages postés
139
Date d'inscription
mardi 25 juin 2013
Statut
Membre
Dernière intervention
2 septembre 2014
18
16 sept. 2013 à 22:22
16 sept. 2013 à 22:22
Le "pass" permet de sortir de la boucle if quand la condition est respectée. Donc en gros, si l'année est bissextile, tu sors de la boucle if et la fonction retourne l'année.
"return annee" c'est la fin de la fonction "test_bissextile. Lorsque l'année est bissextile, la fonction te la "sort" (d'où la ligne annee = test_bissextile(annee_entree) dans le programme principal).
On retourne dans la fonction "test-bissextile" que si l'année donnée n'est pas bissextile (d'où le else : annee = test_bissextile(annee+1) ).
Ensuite oui tu peux mettre ces deux parties dans un même fichier où simplement garder la fonction dans un fichier et utilise la partie "programme principal" dans la console.
Je te conseille de tester le script et de le changer à ton aise si tu ne comprends pas certaines choses.
"return annee" c'est la fin de la fonction "test_bissextile. Lorsque l'année est bissextile, la fonction te la "sort" (d'où la ligne annee = test_bissextile(annee_entree) dans le programme principal).
On retourne dans la fonction "test-bissextile" que si l'année donnée n'est pas bissextile (d'où le else : annee = test_bissextile(annee+1) ).
Ensuite oui tu peux mettre ces deux parties dans un même fichier où simplement garder la fonction dans un fichier et utilise la partie "programme principal" dans la console.
Je te conseille de tester le script et de le changer à ton aise si tu ne comprends pas certaines choses.
Utilisateur anonyme
17 sept. 2013 à 21:12
17 sept. 2013 à 21:12
D'accord merci à toi :) C'est plus simple en effet !
Simplement, je ne comprends pas la différence entre
Simplement, je ne comprends pas la différence entre
année%100==0et
année%100 !=0
Utilisateur anonyme
17 sept. 2013 à 21:33
17 sept. 2013 à 21:33
"Simplement, je ne comprends pas la différence entre
année%100==0
et
année%100 !=0 "
annee % 100 == 0 -> annee est divisible par 100
annee % 100 != 0 -> annee n'est pas divisible par 100
En fait annee % 100 va retourner le reste de la division annee / 100
année%100==0
et
année%100 !=0 "
annee % 100 == 0 -> annee est divisible par 100
annee % 100 != 0 -> annee n'est pas divisible par 100
En fait annee % 100 va retourner le reste de la division annee / 100