Python :: Aufgabe #256
5 Lösungen
Berechnen der Prüfziffer einer EAN- Nummer
Anfänger - Python
von JKooP
- 29.03.2020 um 13:53 Uhr
Schreibe ein Programm mit dem man sowohl die Prüfziffer einer EAN- Nummer (Europäische Artikel- Nummerierung) berechnen als auch überprüfen kann.
Die EAN- Nummer besteht aus 13 Ziffern, wobei es sich bei der letzten Ziffer um die Prüfziffer handelt.
Beispiel für eine EAN: 978381582086[?]
Die Prüfziffer wird berechnet, indem man die ersten 12 Ziffern von links beginnend abwechselnd mit 1 und 3 multipliziert und anschließend die Produkte summiert.
Die Differenz zum nächsten Vielfachen von 10 ist die Prüfziffer.
Ist die Summe durch 10 teilbar, ist die Prüfziffer die Ziffer 0.
9·1 + 7·3 + 8·1 + 3·3 + 8·1 + 1·3 + 5·1 + 8·3 + 2·1 + 0·3 + 8·1 + 6·3
= 9 + 21 + 8 + 9 + 8 + 3 + 5 + 24 + 2 + 0 + 8 + 18 = 115
115 + 5 = 120 ⇒ Prüfziffer: 5
Viel Spaß
Die EAN- Nummer besteht aus 13 Ziffern, wobei es sich bei der letzten Ziffer um die Prüfziffer handelt.
Beispiel für eine EAN: 978381582086[?]
Die Prüfziffer wird berechnet, indem man die ersten 12 Ziffern von links beginnend abwechselnd mit 1 und 3 multipliziert und anschließend die Produkte summiert.
Die Differenz zum nächsten Vielfachen von 10 ist die Prüfziffer.
Ist die Summe durch 10 teilbar, ist die Prüfziffer die Ziffer 0.
9·1 + 7·3 + 8·1 + 3·3 + 8·1 + 1·3 + 5·1 + 8·3 + 2·1 + 0·3 + 8·1 + 6·3
= 9 + 21 + 8 + 9 + 8 + 3 + 5 + 24 + 2 + 0 + 8 + 18 = 115
115 + 5 = 120 ⇒ Prüfziffer: 5
Viel Spaß
Lösungen:
Python-Code
def pruef(nummer): summe=0 for x in range(12): if x%2==0: summe+=int(nummer[x]) else: summe+=int(nummer[x])*3 return(120-summe) nummer= input("EAN-Nummer eingeben:") zahl = pruef(nummer) if len(nummer) == 13 and str(zahl) != nummer[12]: print("Die EAN-Nummer ist falsch") else: print("Die Prüfnummer =",zahl)
Python-Code
#Prüfziffer einer EAN-Nummer bestimmen summe = 0 #Eingabe zahl = int(input("Geben Sie bitte die EAN-Nr. ein (12 Zifern): ")) zahl = str(zahl) #Überprüfung der Eingabe while len(zahl) !=12: zahl = int(input("Das eingebene Format passt nicht, bitte erneut eingeben!")) zahl = str(zahl) #Berechnung der Prüfziffer for stelle in zahl: if int(stelle)%2 == 0: summe = summe + int(stelle) elif int(stelle)%2 == 1: summe = summe + int(stelle)*3 prüfziffer = (10 - summe%10)%10 #Ausgabe der Prüfziffer print("dir Prüfziffer ist:",prüfziffer)
Python-Code
#!/usr/bin/env python # -*- coding: utf-8 -*- #Aufgabe: #Schreibe ein Programm mit dem man sowohl die Prüfziffer einer EAN- Nummer (Europäische Artikel- Nummerierung) berechnen als auch überprüfen kann. #Die EAN- Nummer besteht aus 13 Ziffern, wobei es sich bei der letzten Ziffer um die Prüfziffer handelt. #Beispiel für eine EAN: 978381582086[?] #Die Prüfziffer wird berechnet, indem man die ersten 12 Ziffern von links beginnend abwechselnd mit 1 und 3 multipliziert und anschließend die Produkte summiert. #Die Differenz zum nächsten Vielfachen von 10 ist die Prüfziffer. #Ist die Summe durch 10 teilbar, ist die Prüfziffer die Ziffer 0. #9·1 + 7·3 + 8·1 + 3·3 + 8·1 + 1·3 + 5·1 + 8·3 + 2·1 + 0·3 + 8·1 + 6·3 #= 9 + 21 + 8 + 9 + 8 + 3 + 5 + 24 + 2 + 0 + 8 + 18 = 115 #115 + 5 = 120 ⇒ Prüfziffer: 5 EAN1 = '9783815820860' EAN2 = '978381582086' def get_pruefziffer(ean): zwischensumme = 0 for i, c in enumerate(ean): if i == 12: #mehr Einträge müssen nicht aufaddiert werden break if i % 2 == 1: #ungerade Einträge zwischensumme += int(c) * 3 else: #gerade Einträge zwischensumme += int(c) #Prüfziffer ist der Rest der ganzzahligen Division mit 10 return zwischensumme % 10 #Überprüfen ob die Prüfziffer auch stimmt def check_ean(ean): if len(ean) != 13: print(str(ean) + ' hat nicht die richtige Länge') elif get_pruefziffer(ean) != ean[12]: print(str(ean) + ' hat nicht richtige Prüfziffer ' + str(get_pruefziffer(ean))) else: print(str(ean) + ' hat richtige Prüfziffer ') check_ean(EAN1) print('Prüfziffer von ' + str(EAN2) + ' ist ' + str(get_pruefziffer(EAN2)))
Ergebnis:
9783815820860 hat nicht richtige Prüfziffer 5
Prüfziffer von 978381582086 ist 5
Python-Code
print("EAN-Prüfziffer berechnen oder überprüfen?") print("a für berechnen , b für überprüfen") wahl = input().lower() if wahl == "a": print("Geben sie die ersten 12 Ziffern der EAN-Nummer ein:") eanNummer: str = input() x = 0 j = 0 l = 0 for i in range(1, 13): if i % 2 == 0: x = x + (int(eanNummer[j]) * 3) j += 1 else: x = x + int(eanNummer[j]) j += 1 while x % 10 != 0: x += 1 l += 1 print("Die Prüfziffer lautet " + str(l)) if wahl == "b": print("Geben sie die EAN-Nummer ein:") eanNummer: str = input() x = 0 j = 0 l = 0 for i in range(1, 13): if i % 2 == 0: x = x + (int(eanNummer[j]) * 3) j += 1 else: x = x + int(eanNummer[j]) j += 1 while x % 10 != 0: x += 1 l += 1 if str(l) == eanNummer[12]: print("Die Prüfziffer ist korrekt.") else: print("Die Prüfziffer ist nicht korrekt.")
Python-Code
while True: try: eanstr = input("EAN eingeben: ") eanint = int(eanstr) break except ValueError: print("Keine Zahl!") faktoren = [1,3,1,3,1,3,1,3,1,3,1,3] sumprod = 0 for inx,val in enumerate(faktoren): sumprod += int(eanstr[inx])*val pruefz = eanstr[len(eanstr)-1] print("Die eingegebene Prüfziffer ist",pruefz,".") pruefzber = abs((sumprod % 10) -10) % 10 print("Die berechnete Prüfziffer ist",pruefzber,".") if int(pruefz) == pruefzber: print("Die EAN ist korrekt.") else: print("Die Prüfziffer der EAN ist nicht korrekt.")