2017-09-06 4 views
0

Je suis désolé, mais je suis à perte ici tout le monde. Aucune idée réelle par où commencer. Je suis nouveau à Python et il y a plusieurs années que j'ai essayé la programmation de toute sorte. Je n'ai jamais été très expérimenté. Je suis en ligne ce cours de Python et suis arrivé à une impasse sur un exercice. Il part de l'exemple précédent.Problème avec Python excersice - Convertir les lettres en chiffres dans l'ordre (en utilisant ord et chr)

x = int(input()) 
if x>=1 and x<=26: 
    print('letter', x, 'in the alphabet:', chr(ord('A')+(x-1))) 
else: 
    print('invalid input:', x) 

Cet exemple de programme convertit des nombres en lettres. Donc, 'A' = 1 et 'B' = 2. Maintenant, je veux faire un programme comme celui-ci mais le contraire. Je suis censé commencer par cette ligne:

letter = input() 

Voici ce que l'exercice décrit:

codage d'exercice: 26 lettres Ecrire un programme qui fait l'inverse de l'exemple ci-dessus: il doit prendre un caractère comme entrée et sortie le nombre correspondant (entre 1 et 26). Votre programme devrait seulement accepter les majuscules. Comme erreur-vérification, imprimer invalide si l'entrée n'est pas une lettre majuscule

Maintenant c'est ce que je peux faire, mais pas la façon dont il veut que je le fasse, ni la façon dont je devrais le faire. Je pourrais faire quelque chose comme ceci:

if letter == 'A': 
    letter = int(1) 
    print(letter) 
elif letter == 'B': 
    letter = int(2) 
    print(letter) 

Bien sûr, ce serait très long et bâclé. Est-ce que quelqu'un a des conseils pour moi? Celui-ci m'a coincé. Je suis désolé, je sais que c'est probablement très simple, cela me semble beaucoup plus compliqué qu'il ne devrait l'être. J'ai essayé de chercher cela, mais tout ce que je trouve en ligne est assez différent que je ne peux pas comprendre comment l'implémenter dans ce code. Pour être honnête, les choses chr et ord me troublent énormément. Je l'apprécie pour ceux qui sont restés assez longtemps pour lire ceci. Je vous remercie. Je n'ai aucune idée de quoi faire avec celui-ci. Aussi, c'est la toute première fois que je poste quelque chose ici, donc si j'ai fait quelque chose de malpropre ou de mal, je m'excuse et je vais le supprimer/éditer dès que possible.

Le problème se trouve ici: https://cscircles.cemc.uwaterloo.ca/9-else-and-or-not/

Ajout d'un peu d'information. CScircles nécessite que A = 1 au lieu de 0. Merci pour les réponses rapides. Je travaillerai à nouveau sur ce sujet plus tard aujourd'hui.

+1

Utiliser 'ord' pour obtenir la valeur numérique du caractère, puis soustrayez un nombre de celui-ci pour que le code de "A" devienne 0. Qu'en est-il de 'ord' vous confond? – Carcigenicate

Répondre

1

Vous devez à nouveau utiliser la fonction ord, que vous avez utilisée dans l'exercice précédent pour obtenir le numéro de caractère du caractère. Vous pouvez ensuite soustraire la valeur char du caractère A pour obtenir une valeur comprise entre 1 et 26.

inp = input() 
if (len(inp) > 1 or inp != inp.upper()): 
    print("invalid input") 
else: 
    print(ord(inp)-ord("A")+1) 

La fonction ord(x) accepte un caractère x (par exemple tout caractère UTF8) et renvoie un nombre entier. Cette valeur entière représente le numéro du caractère dans la table de codage: Jetons un coup d'oeil à la table pour ascii ci-dessous. Ici, vous voyez les valeurs char et les valeurs dec/int des caractères. Par exemple, le caractère A est représenté par la valeur int65, et ainsi de suite.

La fonction chr(x) fait le contraire: il prend la valeur int et renvoie la char qui est représenté par cela, cela signifie:

ord("A") = 65 
chr(65) = "A" 
chr(ord(anyCharacter)) = anyCharacter