Python :: Aufgabe #256

5 Lösungen Lösungen öffentlich

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ß

Lösungen:

1 Kommentar
vote_ok
von Gisbert5020 (3120 Punkte) - 31.03.2020 um 20:09 Uhr
Quellcode ausblenden 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)
vote_ok
von satn1241 (3090 Punkte) - 01.04.2020 um 12:07 Uhr
Quellcode ausblenden 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)        
vote_ok
von Asthos (410 Punkte) - 03.04.2020 um 22:08 Uhr
Quellcode ausblenden 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
vote_ok
von Des_ORNTRT (530 Punkte) - 07.04.2020 um 21:10 Uhr
Quellcode ausblenden 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.")

vote_ok
von cmb (190 Punkte) - 04.07.2020 um 13:25 Uhr
Quellcode ausblenden 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.")
1800996

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.