Python :: Aufgabe #313 :: Lösung #2
3 Lösungen
#313
Seriennummer Euro- Banknoten überprüfen (bis 2013)
Anfänger - Python
von JKooP
- 26.01.2021 um 10:26 Uhr
Jede Banknote enthält eine eindeutige Seriennummer, bestehend aus 12 Zeichen
mit folgender alphanumerischer Signatur (ab 2013 abweichend):
LNNNNNNNNNNJ (z.B. X17291528696)
L: Ländercode als Buchstabe von A bis Z (z.B. X für Deutschland, N für Österreich…)
N: 10 Ziffern von 0 bis 9
J: Prüfziffer von 1 bis 9
Berechnung der Prüfziffer:
Der Ländercode muss in eine Zahl umgewandelt werden.
Diese ergibt sich aus der Position des Buchstabens im Alphabet. (A = 1, B = 2; … X = 24)
Dann wird die Quersumme aus der entstandenen Zahl des Ländercodes und den 10 folgenden Ziffern ohne Prüfziffer gebildet.
241729152869 => 2+4+1+7+2+9+1+5+2+8+6+9 = 56
Es wird der Rest (R) der Division durch 9 ermittelt
R = 56 Modulo 9 = 2
und dann der Prüfwert (P).
P = 8 – R => 8 – 2 = 6
Wenn P = 0, dann ist J = 9, ansonsten ist J = P.
X17291528696 => gültige Banknote!
Aufgabe:
Schreibe ein Programm, welches folgende Ergebnisse liefert:
1. Prüfen, ob es sich bei der eingegebenen Seriennummer um die richtige Signatur handelt.
2. Generieren der Prüfziffer J aus dem Ländercode und den folgenden 10 Ziffern.
3. Prüfen, ob es sich bei Eingabe einer Seriennummer um eine Euro- Banknote handelt.
4. Ausgabe des zugehörigen Landes der Euro- Banknote (siehe NZB-Kennung)
Viel Spaß
mit folgender alphanumerischer Signatur (ab 2013 abweichend):
LNNNNNNNNNNJ (z.B. X17291528696)
L: Ländercode als Buchstabe von A bis Z (z.B. X für Deutschland, N für Österreich…)
N: 10 Ziffern von 0 bis 9
J: Prüfziffer von 1 bis 9
Berechnung der Prüfziffer:
Der Ländercode muss in eine Zahl umgewandelt werden.
Diese ergibt sich aus der Position des Buchstabens im Alphabet. (A = 1, B = 2; … X = 24)
Dann wird die Quersumme aus der entstandenen Zahl des Ländercodes und den 10 folgenden Ziffern ohne Prüfziffer gebildet.
241729152869 => 2+4+1+7+2+9+1+5+2+8+6+9 = 56
Es wird der Rest (R) der Division durch 9 ermittelt
R = 56 Modulo 9 = 2
und dann der Prüfwert (P).
P = 8 – R => 8 – 2 = 6
Wenn P = 0, dann ist J = 9, ansonsten ist J = P.
X17291528696 => gültige Banknote!
Aufgabe:
Schreibe ein Programm, welches folgende Ergebnisse liefert:
1. Prüfen, ob es sich bei der eingegebenen Seriennummer um die richtige Signatur handelt.
2. Generieren der Prüfziffer J aus dem Ländercode und den folgenden 10 Ziffern.
3. Prüfen, ob es sich bei Eingabe einer Seriennummer um eine Euro- Banknote handelt.
4. Ausgabe des zugehörigen Landes der Euro- Banknote (siehe NZB-Kennung)
Viel Spaß
#2
von vMaex (540 Punkte)
- 16.02.2021 um 10:11 Uhr
#Seriennummer Banknoten prüfen
buchstabe = ('a b c d e f g h i j k l m n o p q r s t u v w x').split()
länder = ('leer Litauen Lettland Estland Slowakei Malta Zypern Slowenien leer UK Schweden Finnlad Protugal Österreich leer Niederlande leer Luxemburg Italien Irland Frankreich Spanien Dänemark Deutschland').split()
buchstabe_land = {}
seriennummer = ['X17291528696', 'S37373737354', 'X00000000134', 'A123456789012', 'Z12345678901']
zahl = 1
for b in buchstabe:
buchstabe_land[b] = [zahl, länder[buchstabe.index(b)]]
zahl = zahl + 1
def nummer_prfen():
if len(seriennummer) == 12 and seriennummer.rstrip('1,2,3,4,5,6,7,8,9,0').lower() in buchstabe:
return True
else:
print('Seriennummer ist ungültig')
return False
def p_ziffer():
global land
nummer, land = buchstabe_land[seriennummer.rstrip('1,2,3,4,5,6,7,8,9,0').lower()]
snum_bereinigt = list(seriennummer)
snum_bereinigt.pop(0)
snum_bereinigt.pop(-1)
ergebnis = sum(int(x) for x in snum_bereinigt)
for x in str(nummer):
ergebnis = ergebnis + int(x)
r = ergebnis % 9
p = 8 - r
j = list(seriennummer).pop(-1)
if p == int(j):
return True
else:
return False
for seriennummer in seriennummer:
print('\n' + seriennummer)
if nummer_prfen() is True:
if p_ziffer() is True:
print('Banknote ist gültige Euronote aus',land)
else:
print('Banknote ist keine gültige Euronote')
else:
continue
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
