Sur les billets d’avion d’une compagnie aérienne, figure un code de 11 chiffres précédés d’une lettre majuscule. Exemple : U19586900462
Pour vérifier l’authenticité d’un billet, on remplace la lettre du code par son rang alphabétique pour obtenir un nombre de 12 ou 13 chiffres.
Si le reste de la division par de la somme des chiffres de ce nombre est égale à 8, ce billet est authentique, sinon c’est un faux billet.
Exemple: le billet ayant pour code ‘U19586900462’.
– La lettre ‘U’ a pour rang alphabétique 21.
– Le nombre formé sera :’2119586900462’.
– La somme des chiffres de ce nombre est 2+1+1+9+5+8+6+9+0+0+4+6+2=53
– le reste de la division de 53 par 9 est égale à 8.
Ecrire un programme qui permet de vérifier l’authenticité d’un billet à partir de son code.
Pour vérifier l'authenticité d'un billet d'avion à partir de son code, voici le principe algorithmique détaillé :
1- Remplacer la lettre majuscule par son rang alphabétique
a) Prenez le premier caractère du code (qui est une lettre majuscule).
b) Convertissez cette lettre en son rang alphabétique :
c) Créer un nombre à partir du code
d) Concaténez ce nombre au reste des 11 chiffres du code pour obtenir un nombre entier de 12 ou 13 chiffres.
2- Calculer la somme des chiffres du nombre
Séparez chaque chiffre de ce nouveau nombre et additionnez-les.
3- Vérifier la condition d'authenticité
a) Divisez la somme obtenue par 9.
b) Si le reste de cette division est égal à 8, le billet est authentique ; sinon, c'est un faux billet.
Dans cet algorithme, On va utiliser trois fonctions:
Algorithme du programme Principal
1 2 3 4 5 6 7 8 9 |
Algorithme control_billet Debut ch<-<-aisie_code() Si test_authenticite(ch) alors Ecrire('ce billet est authentique') Sinon Ecrire('ce billet est non authentique') Fin si Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
ch | chaîne des caractères |
La fonction verif_code
Cette fonction vérifie si le code est composé de 11 chiffres précédés d’une lettre majuscule.
1 2 3 4 5 6 7 8 9 10 11 12 |
fonction vrif_code(ch:chaine):booleen Début Si 'A'<=ch[0]<='Z' alors # Verifier si le premier caractere est une lettre majuscule i<-1 Tant que i<long(ch)-1 et '0'<=ch[i]<='9' faire # verifier que le reste du code est forme par des chiifres i<-i+1 Fin tant que retourner '0'<=ch[i]<='9' Sinon retourner Faux Fin si Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
i | entier |
La fonction saisie_code
Cette fonction oblige l'utilisateur à saisir une chaine des caractères formée de 11 chiffres précédés d’une lettre majuscule..
1 2 3 4 5 6 7 8 9 10 |
fonction saisie_code():chaine Début Ecrire('donner un message de 11 chiffres précédés d’une lettre majuscule: ') Lire(ch) Tant que (len(ch)!=12) ou (verif_code(ch)=Faux) faire Ecrire('donner un message de 11 chiffres précédés d’une lettre majuscule: ') Lire(ch) Fin tant que retourner ch Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
ch | chaîne des caractères |
La fonction test_authenticite
Cette fonction vérifie la condition d'authenticité du code du billet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
fonction test_authenticite(ch:chaine):chaine Début # determiner le code de la lettre n<-(ord(ch[1])-64) // 10 + (ord(ch[1])-64) % 10 # ajouter la somme des chiffres de ce Pour i de 1 à long(ch)-1 faire n<-n+Valeur(ch[i]) Fin pour #retourner le resultat du test du reste de la division #par de la somme des chiffres de ce nombre est égale à 8 retourner n div 9=8 Fin |
Déclaration des objets
Objet | Type / Nature |
---|---|
n | entier |
i | entier |
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 |
def verif_code(ch): if 'A'<=ch[0]<='Z' : i=1 while i<len(ch)-1 and '0'<=ch[i]<='9': i=i+1 return '0'<=ch[i]<='9' else: return False def saisie_code(): ch=input('donner un message de 11 chiffres précédés d’une lettre majuscule: ') while (len(ch)!=12) or (verif_code(ch)==False): ch=input('donner un message de 11 chiffres précédés d’une lettre majuscule: ') return ch def test_authenticite(ch): # determiner le code de la lettre n=(ord(ch[1])-64) // 10 + (ord(ch[1])-64) % 10 # ajouter la somme des chiffres de ce for i in range(1, len(ch)): n=n+int(ch[i]) #retourner le resultat du test du reste de la division #par de la somme des chiffres de ce nombre est égale à 8 return n % 9==8 # programme principal ch=saisie_code() if test_authenticite(ch): print('ce billet est authentique') else: print('ce billet est non authentique') |
Exécution du programme
Pour créer une application en Python et Designer QT qui vérifie l’authenticité d’un billet, on va suivre ces étapes:
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLineEdit
nommé 'code' pour entrer le code du billet
QLabel
nommé 'msg' pour afficher des messages d'erreur et le résultat du test de l'authenticité du billet
QPushButton
nommé 'bt_test' pour lancer le test du bille
Enregistrez le fichier avec l'extension .ui
, par exemple control_billet-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 34 35 36 37 38 39 40 41 42 |
from PyQt5.uic import loadUi from PyQt5 import QtCore, QtGui from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui, QtWidgets import random app = QApplication([]) windows = loadUi ("control_billet-interface.ui") def verif_code(ch): if 'A'<=ch[0]<='Z' : i=1 while i<len(ch)-1 and '0'<=ch[i]<='9': i=i+1 return '0'<=ch[i]<='9' else: return False def test_authenticite(): windows.msg.clear() ch = windows.code.text() if (len(ch)==12) and (verif_code(ch)==True): # determiner le code de la lettre n=(ord(ch[1])-64) // 10 + (ord(ch[1])-64) % 10 # ajouter la somme des chiffres de ce for i in range(1, len(ch)): n=n+int(ch[i]) #retourner le resultat du test du reste de la division #par de la somme des chiffres de ce nombre est égale à 8 if n % 9==8: windows.msg.setText('ce billet est authentique') else: windows.msg.setText('ce billet est non authentique') else: windows.msg.setText('donner un message de 11 chiffres précédés d’une lettre majuscule:') windows.bt_test.clicked.connect(test_authenticite) windows.show() app.exec_() |
Exécution du programme
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