[PYTHON] À partir d'un livre que le programmeur peut apprendre ... Vérification de la somme de contrôle des runes (longueur variable) Partie 2

Premiers pas avec la programmation avec Python Suite de Dernière fois

Il semble que la plupart des parties que j'ai faites la dernière fois seront détournées, En parlant de ce qui a été résolu la dernière fois

・ Obtenez un numéro d'identification à 6 chiffres à partir de l'entrée standard ・ Ajoutez les numéros d'identification à 6 chiffres acquis (ci-après dénommés sujets spéciaux) (Sur les 6 chiffres, multipliez les chiffres impairs par 2, et si le résultat du calcul de la multiplication est de 2 chiffres, séparez chaque chiffre individuellement. Additionner)

Voici le problème suivant, mais dans le problème depuis le début c'est "un nombre arbitraire de chiffres" Ce n'est pas toujours un nombre à 6 chiffres.

Code correspondant au numéro d'identification de longueur arbitraire La réponse dans le livre est jugée par le nombre de résultats d'entrée / sortie par code de caractère ASCII en C ++. (Termine la boucle lorsque le code de caractère ASCII "break" est acquis)

Réponse du livre

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';###Le nombre impair reste le même
    else checksum += doubleDigitValue(digit - '0');###Double le nombre pair
    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";
}
・ ・ ・

Votre réponse Je le modifie en référence à la partie qui a reçu le commentaire. (De plus, dans le problème d'origine, le nombre impair est doublé, mais dans la première tâche, le nombre pair est doublé. Étant donné que le site de référence de l'algorithme de somme de contrôle des runes double également le nombre pair. Ce point a changé)

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"

・ ・ ・(Résultat de sortie du terminal)
>>> from test02 import number
>>> number()
Enter a number with an even number of digits:49927398716
Checksum is 70. 
Checksum is divisible by 10. Valid .


Je réfléchissais à la façon de trouver le nombre impair en additionnant le nombre de caractères saisis. Une méthode très simple et facile à comprendre de seulement pair et seulement impair que vous avez commentée la dernière fois Je l'ai utilisé parce que j'ai appris.

Essayez également d'utiliser raw_input () que vous m'avez appris en entrée standard. J'ai essayé, mais comme j'utilisais Python3.5, j'ai eu un NameError et un NameError. Comme c'est sur le site de référence que sys.stdin.readline () peut être utilisé en Python3 Je l'ai essayé, mais cela n'a pas fonctionné et le code est le même que la dernière fois.

Dans cet article "Python Tips: Je veux obtenir une chaîne de caractères à partir de l'entrée standard" sys.stdin. Il y avait un moyen d'utiliser readline ().

Recommended Posts

À partir d'un livre que le programmeur peut apprendre ... Vérification de la somme de contrôle des runes (longueur variable) Partie 2
À partir d'un livre que le programmeur peut apprendre ... Vérification de la somme de contrôle des runes (longueur fixe)
À partir d'un livre que les programmeurs peuvent apprendre ... (Python): examen des tableaux
D'un livre que les programmeurs peuvent apprendre ... (Python): Pointer
À partir d'un livre que les programmeurs peuvent apprendre (Python): Décoder les messages
À partir d'un livre que le programmeur peut apprendre ... (Python): trouver la valeur la plus fréquente
D'un livre que les pensées du programmeur peuvent être apprises: résumez les parties de petits problèmes
À partir d'un livre que les programmeurs peuvent apprendre (Python): valeur de l'écart de traitement statistique
À partir d'un livre que le programmeur peut apprendre ... (Python): Recherche conditionnelle (valeur maximale)
À partir d'un livre que les programmeurs peuvent apprendre (Python): Déclaration de classe (public / privé, etc.)
À partir d'un livre que le programmeur peut apprendre ... Conversion de caractères qui représentent des nombres en type entier
D'un livre qui apprend de manière intéressante la façon de penser du programmeur (Python)
La façon de penser du programmeur provient du livre XX (Python)
"Un livre qui comprend Flask à partir de zéro" Lecture d'un mémo
La façon de penser du programmeur provient du livre XX (Python)