déplacer les lettres à l'aide de l'ord et chr
Je suis en train de faire une fonction qui transforme chaque lettre de chaque mot vers la droite en valeur
et ces mots seront à partir d'une liste que je vais l'ouvrir en utilisant "ouvrir"de la fonction
J'ai écrit le code, et je suis confronté à quelques difficultés ici
voici mon code
def test():
value=eval(input("Value here!"))
with open ("word-text.txt","r") as f:
for ord in (f):
print (ord)
for chr in ord:
print (chr)
#nice=(chr[len(ord)+value])
''.join([chr(ord(i)+2) for i in s])
print (i)
c'est la sortie-je obtenir
Value here!2
apples
a
p
p
l
e
s
Traceback (most recent call last):
File "<pyshell#54>", line 1, in <module>
test()
File "/Users/user/Desktop/Outlook(1)/lab6.py", line 59, in test
''.join([chr(ord(i)+2) for i in s])
NameError: global name 's' is not defined
la liste que j'ai les mots suivants
pommes
les oranges
la pastèque
kiwi
courgettes
la carotte
le gombo
jalapeno
poivre
concombre
banane
et quand j'utilise ce code
ef test():
value=eval(input("Value here!"))
with open ("word-text.txt","r") as f:
for ord in (f):
print (ord)
for chr in ord:
print (chr)
nice=(chr[len(ord)+value])
print (nice)
- Je obtenir cette sortie
Value here!2
apples
a
Traceback (most recent call last):
File "<pyshell#56>", line 1, in <module>
test()
File "/Users/user/Desktop/Outlook(1)/lab6.py", line 58, in test
nice=(chr[len(ord)+value])
IndexError: string index out of range
>>>
Ce que je fais mal ici? et quel code est préférable d'utiliser, pour le faire fonctionner
Grâce
chr
etord
les deux sont buit-dans les fonctions de, ne pas les utiliser comme noms de variable.- Avis de la stacktrace, lire l'erreur et la figure. Ces erreurs sont assez évidentes.
- Pouvez-vous donner quelques entrées-sorties des exemples?
- Alors, comment dois-je utiliser? Je veux dire, j'ai vu beaucoup d'utilisations pour l', mais, non d'entre eux ont travaillé pour moi, ou peut-être que j'ai raté quelque chose, comme pouvez-vous donner un exemple de la façon dont vous l'utiliser chr et de l'ord dans un code
- disons que j'ai une liste de mots dans un fichier, ce fichier contient le mot "bonjour", et l'utilisateur a donné une valeur de 2 dans l'entrée • bonjour d'entrée = 2 Résultat = jgnnq il prend chaque lettre de chaque mot, puis ajoutez 2 lettres comme dans cet exemple, H>I>J
eval(input("Value here!"))
Pas! Ne pas le faire. Si vous souhaitez obtenir des nombres entiers comme l'utilisation d'intrantsint
:int(input("Value here!"))
. Si vous souhaitez utiliser des flotteursfloat
. Si vous voulez prendre aucun python littéral(integer, float, string, etc la liste.) utilisationast.literal_eval
:import ast; ast.literal_eval(input("Value here!"))
.- quels sont les caractères présents dans vos paroles? ascii uniquement
a-zA-Z
?
Vous devez vous connecter pour publier un commentaire.
Tandis que votre approche est généralement sur un peu à droite de la piste, il ya des problèmes avec elle, comme d'autres l'ont noté. Depuis, il semble que vous avez de la difficulté à comprendre quoi faire et comment faire pour résoudre le problème, j'ai rangé votre code (fait quelques modifications ici et là) et fortement documentée mon montage de votre code, de sorte que vous pouvez comprendre ce que l'approche devrait être:
Le seul problème avec cette approche est qu'elle n'est pas circulaire, (c'est à dire - il n'a pas de boucle de retour vers: par exemple,
z
décalé par3
ne devient pasc
), ainsi que les valeurs dépassent la limite supérieure de leur jeu de caractères (comme l'a montré la section de SORTIE ci-dessous). Et, si la valeur entrée est très grande (c'est à dire plus que les limites du jeu de caractères dans lequel vous travaillez, vous aurez du charabia.Cependant, je ne sais pas si c'est une exigence de votre problème (qui ne peut être que vous êtes essentiellement faire une primitive de chiffrement des mots de passe comme suggéré par vos précédentes questions), mais j'ai pensé que je devais mentionner dans néanmoins.
De SORTIE: