Ecrire un algorithme et un programme avec le langage Python qui après avoir demandé un numéro de jour, de mois et d'année à l'utilisateur, renvoie s'il s'agit ou non d'une date valide.
Exemples :
pour jour=30, mois=11 et année=2001 à la date est valide
pour jour=31, mois=4 et année=2010 à la date est non valide(le nombre max des jours du mois=4(Avril) est 30)
pour jour=29 , mois=2 et année=2013 à la date est non valide (2013 est une année non bissextile alors le nombre max des jours du mois=2 (Fevrier) est 28)
Pour vérifier si une date est valide en Python, vous pouvez utiliser une fonction nommé ' validite_date' qui contient des instructions permettant de manipuler les dates de manière efficace et retourner une chaîne des caractères contenant le résultat du test de la validité de la date .
Voici un algorithme pour accomplir cela :
1- Demander à l'utilisateur d'entrer un jour, un mois et une année.
2- Vérifier que le jour, le mois et l'année sont des entiers valides.
- Vérifier la validité du mois (entre 1 et 12).
- Vérifier si l'année est bissextile.
- Vérifier la validité du jour en fonction du mois et de l'année.
- Si toutes les vérifications sont correctes, afficher "La date est valide".
- Sinon, afficher "La date est invalide".
L'algorithme proposé utilise la fonction validite_date.
Si la date est créée avec succès, la fonction validite_date retourne la chaîne des caractères 'date valide'.
Sinon, la fonction ' validite_date' retourne la chaîne des caractères 'date non valide'.
Algorithme du programme principal
1 2 3 4 5 6 7 8 9 10 |
Algorithme test_date Debut Ecrire('donner numero du jour') Lire(j) Ecrire('donner numero du mois') Lire(mois) Ecrire('donner annee') Lire(a) Ecrire('la date est ',validite_date(j,m,a)) Fin |
Déclaration des objets
Objet | Type / Nature |
j | Entier |
m | Entier |
a | Entier |
La fonction validite_date
Voici l'algorithme de la fonction validite_date qui vérifie si le jour, le mois et l'année forment une date valide.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Fonction valicite_date(j:entier, m:entier, a:entier):chaine Debut # Vérifier la validité du jour , du mois et de l'annee si (1<=j<=31) et (1<=m<=12) et a>0) alors #chercher le nombre de jours jmax dans un mois donné, #en tenant compte des années bissextiles pour le mois de février Si m dans [1,3,5,8,10,12] alors jmax<-31 Sinon si m dans [1,3,5,8,10,12] alors jmax<-30 Sinon # dans le cas le mois est le mois Fevrier on vérifie si une annee est bissextile Si (a div 400=0) ou ((a div 4=0) et (a div 100 !=0)) alors jmax<-29 # l'annee est bissextile Sinon jmax<-28 # l'annee est non bissextile Finsi Finsi Si 1<=j<=jmax alors retourner 'valide' Sinon retourner 'non valide' Finsi Sinon retourner 'non valide' Finsi Fin |
Objet | Type/Nature |
jmax | Entier |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
def validite_date(j,m,a) : if (( 1<=j<=31) and (1<=m<=12) and (a >0)) : if m in [1,3,5,8,10,12] : jmax=31 elif m in [4,6,9,11] : jmax=30 else : if ((a % 400 ==0) or ((a % 4 == 0) and ( a % 100 != 0))) : jmax=29 else : jmax=28 if 1<=j<=jmax : return 'valide'; else : return 'non valide'; else : return 'non valide'; j=int(input('donner numero du jour ')) m=int(input('donner numero du mois ')) a=int(input('donner année ')) print ('la date est ' + validite_date(j,m,a)) |
Exécution du programme
Pour créer une interface graphique avec Python et Qt Designer qui demande à l'utilisateur un jour, un mois et une année, puis vérifie si la date est valide, nous pouvons suivre les étapes suivantes :
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez des widgets:
QLineEdit
nommé 'j' pour entrer le numéro du jour.
QLineEdit
nommé 'm' pour entrer le numéro du mois.
QLineEdit
nommé 'a' pour entrer le numéro de l'année.
QPushButton
nommé 'test_bt' pour exécuter le module 'validite_date'.
QLabel
nommé 'validite_label' pour afficher le résultat de la validité de la date.
Enregistrez le fichier avec l'extension .ui
, par exemple ex5-interface.ui
.
Voici un exemple de script Python qui utilise l'interface graphique générée par Qt Designer.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
from PyQt5.QtWidgets import QApplication from PyQt5 import uic application = QApplication([]) window = uic.loadUi("ex5-interface.ui") def validite_date() : j=int(window.j.text()) m=int(window.m.text()) a=int(window.a.text()) if (( 1<=j<=31) and (1<=m<=12) and (a >0)) : if m in [1,3,5,8,10,12] : jmax=31 elif m in [4,6,9,11] : jmax=30 else : if ((a % 400 ==0) or ((a % 4 == 0) and ( a != 0))) : jmax=29 else : jmax=28 if 1<=j<=jmax : window.validite_label.setText('date valide') ; else : window.validite_label.setText('date non valide') ; else : window.validite_label.setText('date non valide') ; # Si on clique sur le bouton test_bt, le programme appelle la procedure validite_date window.test_bt.clicked.connect(validite_date) window.show() application.exec() |
Exécution du programme
En suivant ces étapes, vous pourrez créer une application PyQt5 qui lit deux entiers et affiche les entiers premiers entre eux.
Vous pouvez voir aussi :
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali-Prof Info