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

Erste Schritte mit der Programmierung mit Python Fortsetzung von Letztes Mal

Es scheint, dass die meisten Teile, die ich das letzte Mal gemacht habe, umgeleitet werden. Apropos, was letztes Mal gelöst wurde

・ Beziehen Sie die 6-stellige Identifikationsnummer von der Standardeingabe ・ Fügen Sie die erworbenen 6-stelligen Identifikationsnummern hinzu (im Folgenden als besondere Angelegenheiten bezeichnet). (Multiplizieren Sie von den 6 Ziffern die ungeraden Ziffern mit 2, und wenn das Berechnungsergebnis der Multiplikation 2 Ziffern beträgt, trennen Sie jede Ziffer einzeln. Zusammen addieren)

Hier ist das nächste Problem, aber im Problem von Anfang an ist es "beliebige Anzahl von Ziffern". Es ist nicht immer eine 6-stellige Zahl.

Code entsprechend der Identifikationsnummer beliebiger Länge Die Antwort im Buch wird anhand der Anzahl der Eingabe- / Ausgabeergebnisse anhand des ASCII-Zeichencodes in C ++ beurteilt. (Beenden Sie die Schleife, wenn der ASCII-Zeichencode "break" erfasst wird.)

Antwort buchen

char digit;
int checksum = 0;
int position = 1;
cout << "Enter a number with an even number of digits: ";
digit = cin.get();
while(digit != 10) {
    if (position % 2 == 1) checksum += digit - '0';###Die ungerade Zahl bleibt gleich
    else checksum += doubleDigitValue(digit - '0');###Verdoppeln Sie die gerade Zahl
    digit = cin.get();
    position++;
}

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";
}
・ ・ ・

Ihre Antwort Ich ändere es in Bezug auf den Teil, der den Kommentar erhalten hat. (Auch im ursprünglichen Problem wird die ungerade Zahl verdoppelt, aber in der ersten Aufgabe wird die gerade Zahl verdoppelt. Da die Referenzstelle für den Runenprüfsummenalgorithmus auch die gerade Zahl verdoppelt. Dieser Punkt hat sich geändert)

test02.py


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

import sys
from ConsoleOut import cout
from test import doubleDigitValue


def number():
    checksum = 0
    position = 0
    cout << "Enter a number with an even number of digits:"
digits = input()
    while position < len(digits):
        digits = digits[position]
        if position % 2 == 1:
            checksum += int(digit)
        else:
            checksum += doubleDigitValue(int(digit))
        position += 1
            
    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. Invalud. \n"

・ ・ ・(Ergebnis der Terminalausgabe)
>>> from test02 import number
>>> number()
Enter a number with an even number of digits:49927398716
Checksum is 70. 
Checksum is divisible by 10. Valid .


Ich habe darüber nachgedacht, wie ich die ungerade Zahl finden kann, indem ich die Anzahl der eingegebenen Zeichen aufsummiere. Eine sehr einfache und leicht verständliche Methode, bei der Sie das letzte Mal einen Kommentar abgegeben haben Ich habe es benutzt, weil ich unterrichtet wurde.

Versuchen Sie auch, raw_input () zu verwenden, das Sie mir in der Standardeingabe beigebracht haben. Ich habe es versucht, aber weil ich Python3.5 verwendet habe, habe ich einen NameError und einen NameError erhalten. Da es sich auf der Referenzseite befindet, kann sys.stdin.readline () in Python3 verwendet werden Ich habe es versucht, aber es hat nicht funktioniert und der Code ist der gleiche wie beim letzten Mal.

In diesem Artikel "Python-Tipps: Ich möchte eine Zeichenkette aus der Standardeingabe erhalten" sys.stdin. Es gab eine Möglichkeit, readline () zu verwenden.

Recommended Posts

Aus einem Buch, das der Programmierer lernen kann ... Überprüfung der Runenprüfsumme (variable Länge) Teil 2
Aus einem Buch, das der Programmierer lernen kann ... Überprüfung der Runenprüfsumme (feste Länge)
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): 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)