Maintenant, comme d'habitude, j'ai été chargé de le décomposer en problèmes plus petits pour savoir comment je pourrais le transformer en code Python, donc je vais vous montrer les détails.
--Lisez un caractère à la fois jusqu'à ce que vous atteigniez la fin de la ligne (ceci est résolu avec l'entrée de Python ()) --Convertissez une chaîne représentant un nombre en entier. (Ceci est également résolu par l'entrée de Python ()) --Convertir les valeurs entières de 1 à 26 en alphabet supérieur. --Convertir les valeurs entières de 1 à 26 en alphabets inférieurs. --Convertissez les valeurs entières de 1 à 8 en symboles conformément au tableau 2-3.
Je voudrais continuer avec le contenu ci-dessus. Alors, immédiatement
S'il s'agit du contenu d'un livre, il peut être converti en caractères de A à Z en le faisant correspondre avec le code de caractère ASCII et en ajoutant un code de caractère aux valeurs entières de l'entrée 1 à 26. Je continue avec.
Comme la dernière fois, j'aimerais essayer une méthode différente en Python sans utiliser de code de caractères ASCII, mais en Python, c'est plus rudimentaire, ou peut-être que c'est correct de la mettre dans une liste et de la récupérer avec un index. Si ce --Convertir les valeurs entières de 1 à 26 en alphabet supérieur. --Convertir les valeurs entières de 1 à 26 en alphabets inférieurs. --Convertissez les valeurs entières de 1 à 8 en symboles conformément au tableau 2-3. Je pense que nous pouvons le gérer.
test12.py
#!/usr/bin/env python
#coding:utf-8
from ConsoleOut import cout #cout en python<<Préparez une classe à utiliser(M'a appris)
import enum
import math
UPPERCASE = [' ','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
LOWERCASE = [' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
PUNCTUATION = [' ','!','?',',','.',' ',';','"','\n']
modeType = UPPERCASE
while modeType in [UPPERCASE,LOWERCASE,PUNCTUATION]:
cout << "Enter some numbers ending with -1: "
digit = input()
if modeType == UPPERCASE:
cout << "Number read: " + digit + "\n"
digit = int(digit) % 27
cout << ". Modulo 27: " + UPPERCASE[digit] + "\n"
if digit == 0:
modeType = LOWERCASE
else:
continue
elif modeType == LOWERCASE:
cout << "Number read: " + digit + "\n"
digit = int(digit) % 27
cout << ". Modulo 27: " + LOWERCASE[digit] + "\n"
if digit == 0:
modeType = PUNCTUATION
else:
continue
elif modeType == PUNCTUATION:
cout << "Number read: " + digit + "\n"
digit = int(digit) % 9
cout << ". Modulo 27: " + PUNCTUATION[digit] + "\n"
if digit == 0:
modeType = UPPERCASE
else:
continue
・ ・ ・ ・(Exécution du terminal)
>>> import test12
Enter some numbers ending with -1: 18
Number read: 18
. Modulo 27: R
Enter some numbers ending with -1: 12312
Number read: 12312
. Modulo 27:
Enter some numbers ending with -1: 171
Number read: 171
. Modulo 27: i
Enter some numbers ending with -1: 763
Number read: 763
. Modulo 27: g
Enter some numbers ending with -1: 98423
Number read: 98423
. Modulo 27: h
Enter some numbers ending with -1: 1208
Number read: 1208
. Modulo 27: t
Enter some numbers ending with -1: 216
Number read: 216
. Modulo 27:
Enter some numbers ending with -1: 11
Number read: 11
. Modulo 27: ?
Enter some numbers ending with -1: 500
Number read: 500
. Modulo 27:
Enter some numbers ending with -1: 18
Number read: 18
. Modulo 27:
Enter some numbers ending with -1: 241
Number read: 241
. Modulo 27: Y
Enter some numbers ending with -1: 0
Number read: 0
. Modulo 27:
Enter some numbers ending with -1: 32
Number read: 32
. Modulo 27: e
Enter some numbers ending with -1: 20620
Number read: 20620
. Modulo 27: s
Enter some numbers ending with -1: 27
Number read: 27
. Modulo 27:
Enter some numbers ending with -1: 10
Number read: 10
. Modulo 27: !
Enter some numbers ending with -1:
Pour le moment, il est maintenant possible de sortir des valeurs entières en alphabets et symboles en changeant de mode avec une boucle infinie, mais il existe de nombreux points subtils tels que la partie où des blancs supplémentaires apparaissent sur le chemin et comment sortir de la boucle infinie. Cependant, cela a fonctionné pour le moment.
Au fait, voici la réponse pour C ++
char outputCharacter;
enum modeType {UPPERCASE,LOWERCASE,PUNCTUATION};
modeType mode = UPPERCASE;
char digitChar;
do {
digitChar = cin.get();
int number = (digitChar - '0');
digitChar = cin.get();
while ((digitChar != 10)&&(digitChar != ',')){
number = number * 10 + (digitChar - '0');
digitChar = cin.get();
}
switch (mode){
case UPPERCASE:
number = number % 27;
outputCharacter = number + 'A' - 1;
if(number == 0){
mode = LOWERCASE;
continue;
}
break;
case LOWERCASE:
number = number % 27;
outputCharacter = number + 'a' - 1;
if (number == 0){
mode = PUNCTUATION;
continue;
}
break;
case PUNCTUATION:
number = number % 9;
switch(number){
case 1: outputCharacter = '!';break;
case 2: outputCharacter = '?';break;
case 3: outputCharacter = ',';break;
case 4: outputCharacter = '.';break;
case 5: outputCharacter = ' ';break;
case 6: outputCharacter = ';';break;
case 7: outputCharacter = '"';break;
case 8: outputCharacter = '\';break;
}
if(number == 0){
mode = UPPERCASE;
continue;
}
break;
}
cout << outputCharacter;
}while (digitChar != 10);
cout << "\n";
Cette fois, je n'ai pas pu le diviser en petits morceaux, j'ai donc écrit mon propre code python en regardant le code de réponse.
Recommended Posts