[PYTHON] Aus einem Buch, das der Programmierer lernen kann ... Überprüfung der Runenprüfsumme (feste Länge)

Erste Schritte mit der Programmierung mit Python Fortsetzung von Letztes Mal

Auch diesmal Problempräsentation davor ・ Wissen Sie, dass Sie die Zahlen bis zum Ende gelesen haben Ich werde das Problem herausfordern, um dies zu lösen.

Überprüfung der Rune-Prüfsumme (feste Länge) > Schreiben Sie ein Programm, das eine 6-stellige Identifikationsnummer (einschließlich einer Prüfziffer) verwendet und prüft, ob der Wert in einem Runenausdruck gültig ist. In diesem Programm muss nach dem Lesen einer Ziffer diese Ziffer verarbeitet werden, bevor mit der nächsten Ziffer fortgefahren werden kann.

Wie immer ist es jedoch schwierig, weiterzumachen.

○ Einfache Prüfsummenüberprüfung (feste Länge) > Schreiben Sie ein Programm, das eine 6-stellige Identifikationsnummer (einschließlich einer Prüfziffer) verwendet und prüft, ob der Wert in einem Runenausdruck gültig ist. Wenn das Ergebnis der Addition der numerischen Werte jeder Ziffer durch 10 teilbar ist, wird der Wert als gültig angesehen. In diesem Programm muss nach dem Lesen einer Ziffer die Verarbeitung dieser Ziffer abgeschlossen sein, bevor mit der nächsten Ziffer fortgefahren werden kann.
char digit;
int checksum = 0;
cout << "Enter a six-digit number:";
for (int position = 1; position <= 6; position ++) {
    cin >> digit;
    checksum += digit - '0';
}
cout << "Checksum is " << checksum << ". \n";
if (checksum % 10 == 0) {
    cout << "Checksum is divisible by 10. Valid. \n";
} else {
    cout << "Checksum is not divisible by 10. Invalid. \n";
}

Meine Antwort (Python)

ConsoleOut.py


#!/usr/bin/env python
#coding:utf-8

#Verwendung von Cout in Python, gelehrt von Shiracamus
from ConsoleOut import cout


def number():
    checksum = 0
    for i in range(6):
        cout << "Enter a six-digit number:"
        digit = input()
        checksum += int(digit)
    cout << "Checksum is " + str(checksum) + ". \n";
    if checksum % 10 == 0:
        cout << "Checksum is divisible by 10. Valid .\n"
    else:
        cout << "Checksum is not divisible by 10. Invalid. \n"

test01.py(Fügen Sie 6-stellige Eingabenummern hinzu)


###Ich habe es geschrieben, obwohl es nicht so sehr ist, dass ich sagen kann, dass ich es selbst gemacht habe.
#!/usr/bin/env python
#coding:utf-8

from ConsoleOut import cout


def number():
    checksum = 0
    for i in range(6):
        cout << "Enter a six-digit number:"
        digit = input()
        checksum += int(digit)
    cout << "Checksum is " + str(checksum) + ". \n";
    if checksum % 10 == 0:
        cout << "Checksum is divisible by 10. Valid .\n"
    else:
        cout << "Checksum is not divisible by 10. Invalid. \n"

Die meisten Teile sind bisher durch Ablenkung geschrieben, Das Verständnis von int-Typ, str-Typ, internen Variablen usw. ist immer noch unzureichend, und die erste Prüfsumme + = int (Ziffer) Aus irgendeinem Grund hatte ich Angst, dass sie sich nicht summieren würden. Mit Prüfsumme = 0 deklariert? Wenn Sie dies tun, summieren sie sich. Ich frage mich, ob ich es vorerst schaffen könnte (Schweiß)

(Addition) Verdoppeln Sie gleichzeitig die ungeradzahlige Eingabe Das ursprüngliche Problem besteht darin, dass die ungeraden Zahlen verdoppelt werden. Wenn die Zahl zweistellig ist, wird jede Ziffer hinzugefügt. Da es notwendig ist, es hinzuzufügen, habe ich diese Funktion zuvor unter Anleitung erstellt, damit ich sie umleiten kann Klicken Sie hier für Funktionen

test.py(Eine Funktion, die jede Ziffer hinzufügt, wenn die Anzahl der Eingaben 10 oder mehr beträgt)


#!/usr/bin/env python
#coding:utf-8

def doubleDigitValue(digit):
    doubledDigit = digit * 2
    if (doubledDigit >= 10):
        sum = 1 + doubledDigit % 10 
    else:
        sum = doubledDigit
    return sum

Und hier ist der vorherige

test.py(DoubleDigitValue-Funktion hinzugefügt)


#!/usr/bin/env python
#coding:utf-8

from ConsoleOut import cout
from test import doubleDigitValue


def number():
    checksum = 0
    for i in range(6):
        cout << "Enter a six-digit number:"
        digit = input()
        if i % 2 == 0:
            checksum += int(digit)
        else:  #Wenn es sich um eine ungerade Zahl handelt, verdoppeln Sie sie und addieren Sie jede Ziffer, wenn sie 10 oder mehr beträgt.
            checksum += doubleDigitValue(int(digit)) 
    cout << "Checksum is " + str(checksum) + ". \n";
    if checksum % 10 == 0:
        cout << "Checksum is divisible by 10. Valid .\n"
    else:
        cout << "Checksum is not divisible by 10. Invalid. \n"

Ausführungsergebnis


>>> from test01 import number
>>> number()
Enter a six-digit number:1
Enter a six-digit number:1
Enter a six-digit number:1
Enter a six-digit number:1
Enter a six-digit number:1
Enter a six-digit number:1
Checksum is 9. 
Checksum is not divisible by 10. Invalid. 
>>> number()
Enter a six-digit number:2  #2
Enter a six-digit number:1  #1*2
Enter a six-digit number:1  #1 
Enter a six-digit number:1  #1*2
Enter a six-digit number:1  #1
Enter a six-digit number:1  #1*2
Checksum is 10. 
Checksum is divisible by 10. Valid .
>>> 
#Das Problem ist gelöst worden. Vielen Dank!

Als erstes Ergebnis (1 * 2) + 1 + (1 * 2) + 1 + (1 * 2) +1 = 9 // 1. Mal Wenn das Ergebnis angezeigt wird, scheint es zunächst korrekt zu sein Ich denke, es ist anders, es das zweite Mal einzugeben. (2 * 2) + 1 + (1 * 2) + 1 + (1 * 2) + 1 = 10 ??? // 2. Mal Es ist eine unangemessene Situation, aber lassen Sie uns etwas mehr darüber nachdenken.

Recommended Posts

Aus einem Buch, das der Programmierer lernen kann ... Überprüfung der Runenprüfsumme (feste Länge)
Aus einem Buch, das der Programmierer lernen kann ... Überprüfung der Runenprüfsumme (variable Länge) Teil 2
Aus einem Buch, das Programmierer lernen können ... (Python): Überprüfung von Arrays
Aus einem Buch, das Programmierer lernen können ... (Python): Zeiger
Aus einem Buch, das Programmierer lernen können ... (Python): Über das Sortieren
Aus einem Buch, das Programmierer lernen können (Python): Nachrichten dekodieren
Aus einem Buch, das der Programmierer lernen kann ... (Python): Finden Sie den häufigsten Wert
Aus einem Buch, in dem die Gedanken des Programmierers gelernt werden können: Fassen Sie die Teile kleiner Probleme zusammen
Aus einem Buch, das Programmierer lernen können (Python): Statistischer Verarbeitungsabweichungswert
Aus einem Buch, das der Programmierer lernen kann ... (Python): Bedingte Suche (Maximalwert)
Aus einem Buch, das Programmierer lernen können (Python): Klassendeklaration (öffentlich / privat usw.)
Aus einem Buch, das der Programmierer lernen kann ... Konvertieren von Zeichen, die Zahlen darstellen, in einen ganzzahligen Typ
Aus einem Buch, das die Denkweise des Programmierers interessanterweise gelernt hat (Python)
Die Denkweise des Programmierers stammt aus dem XX. Buch (Python)
"Ein Buch, das Flask von Grund auf versteht" Memo lesen
Die Denkweise des Programmierers stammt aus dem XX. Buch (Python)
Ist Ihre DLL eine DLL, die Multi-Core nutzen kann?
Iterator, der von der Mitte der Sequenz aus vorwärts scannen kann