À partir d'un livre que le programmeur peut apprendre ... Vérification de la somme de contrôle des runes (longueur fixe)

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

Aussi, cette fois, Présentation du problème avant cela ・ Sachez que vous avez lu les chiffres jusqu'à la fin Je vais contester le problème pour le résoudre.

Vérification de la somme de contrôle des runes (longueur fixe) > Écrivez un programme qui prend un numéro d'identification à 6 chiffres (y compris un chiffre de contrôle) et vérifie si la valeur est valide dans une expression runique. Dans ce programme, après avoir lu un chiffre, il est nécessaire de traiter ce chiffre avant de passer au chiffre suivant.

Cependant, comme toujours, il est difficile de continuer.

○ Vérification simple de la somme de contrôle (longueur fixe) > Écrivez un programme qui prend un numéro d'identification à 6 chiffres (y compris un chiffre de contrôle) et vérifie si la valeur est valide dans une expression runique. Si le résultat de l'addition des valeurs numériques de chaque chiffre est divisible par 10, la valeur est considérée comme valide. Dans ce programme, après avoir lu un chiffre, le traitement de ce chiffre doit être terminé avant de passer au chiffre suivant.
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";
}

Ma réponse (Python)

ConsoleOut.py


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

#Utiliser cout en python enseigné par 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(Ajouter des numéros d'entrée à 6 chiffres)


###Je l'ai écrit même si ce n'est pas tant que je peux dire que je l'ai fait moi-même.
#!/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"

La plupart des parties sont jusqu'ici écrites par diversion, La compréhension du type int, du type str, des variables internes, etc. est encore insuffisante, et la première somme de contrôle + = int (chiffre) Pour une raison quelconque, je craignais qu'ils ne s'additionnent. Déclaré avec somme de contrôle = 0? Si vous le faites, ils s'additionneront. Je me demande si je pourrais le faire pour le moment (suer)

(Addition) En même temps, doublez l'entrée impaire Le problème original est que les nombres impairs sont doublés, et si le nombre est composé de deux chiffres, chaque chiffre est ajouté. Puisqu'il est nécessaire de l'ajouter, j'ai fait cette fonction sous la direction avant, donc je vais la détourner Cliquez ici pour les fonctions

test.py(Une fonction qui ajoute chaque chiffre si le nombre d'entrées est de 10 ou plus)


#!/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

Et voici le précédent

test.py(Ajout de la fonction doubleDigitValue)


#!/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:  #S'il s'agit d'un nombre impair, doublez-le et s'il est égal ou supérieur à 10, ajoutez chaque chiffre.
            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"

Résultat d'exécution


>>> 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 .
>>> 
#Le problème a été résolu. Je vous remercie!

Comme premier résultat (1 * 2) + 1 + (1 * 2) + 1 + (1 * 2) +1 = 9 // 1ère fois Lorsque le résultat est affiché, il semble être correct au début Je pense que c'est différent d'y entrer la deuxième fois. (2 * 2) + 1 + (1 * 2) + 1 + (1 * 2) + 1 = 10 ??? // 2ème fois C'est une situation inadéquate, mais réfléchissons un peu plus.

Recommended Posts

À 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 le programmeur peut apprendre ... Vérification de la somme de contrôle des runes (longueur variable) Partie 2
À 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): À propos du tri
À 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)
Votre dll est-elle une dll qui peut tirer parti du multi-core?
Itérateur qui peut balayer vers l'avant à partir du milieu de la séquence