turk = {"Ã":"C","ç":"c","Ä":"G","Ä":"g","İ":"I","ı":"i",
"Ã":"O","ö":"o","Å":"S","Å":"s","Ã":"U","ü":"u"}
eng = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgijklmnopqrstuvwxyz"
space = " "
word = input("Enter a word")
def turkChar (word, turk):
newword = ""
for c in word:
if c in eng:
newword = newword + c
elif c in turk:
newword = newword + turk[c]
else:
newword = newword + space
return newword
I wrote this simple code which turns Turkish chars into English. I added space variable to make a space but what if user wants to make more space or tab or even numbers. How can I make this ?
3 Réponses :
Je pense que vous devriez avoir une seule carte du turc vers l'anglais. Ainsi, A correspondrait à A, B à B et ainsi de suite, en plus du dictionnaire turc que vous avez déjà. Vous pouvez ensuite ajouter l'espace, la tabulation et tout autre caractère au mappage.
Votre code devient une boucle avec une recherche dans le dictionnaire à l'aide de la fonction get.
Oh ok cela a du sens maintenant j'ajoute de l'espace, des tabulations et d'autres choses au dictionnaire, comment puis-je ajouter des nombres dans ce code?
Python a une fonction de chaîne appelée translate() qui est faite pour cela et qui est très efficace (beaucoup plus efficace qu'une boucle / dict-lookup). Vous pouvez faire une table de traduction avec un dictionnaire exactement comme celui que vous avez déjà, que vous pouvez créer avec maketrans() puis passer à translate() :
turk = str.maketrans({"Ã":"C","ç":"c","Ä":"G","Ä":"g","İ":"I","ı":"i",
"Ã":"O","ö":"o","Å":"S","Å":"s","Ã":"U","ü":"u"})
s = "Hellö Äà 123"
s.translate(turk)
# 'Hello GC 123'
C'est génial mais j'ai besoin d'apprendre à coder de manière si difficile est la meilleure pour le moment, merci quand même.
Je ne pense pas que vous devriez traiter les caractères d'espace, de tabulation et de nombre différemment de vos caractères eng . Je voudrais simplement étendre vos personnages comme ceci:
turk = {"Ã":"C","ç":"c","Ä":"G","Ä":"g","İ":"I","ı":"i",
"Ã":"O","ö":"o","Å":"S","Å":"s","Ã":"U","ü":"u"}
eng = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz \t1234567890"
word = input("Enter a word")
def turkChar(word, turk):
newword = ""
for c in word:
if c in eng:
newword = newword + c
elif c in turk:
newword = newword + turk[c]
return newword
Ensuite, nous pouvons supprimer les parties `` espace '' pour aboutir à ceci:
eng = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz \t1234567890"
\t dans une chaîne.h inférieur manquant dans votre chaîne d' eng .turk comme un argument mais pas eng , définissez les deux ou ni l'un ni l'autre.eng ni dans turk il est ignoré.Cela fonctionne mais si je donne deux espaces, cela échoue
Hmm, je ne pense pas que cela devrait échouer. Cela fonctionne quand je l'essaye. Pourriez-vous créer un résumé de votre exemple d'utilisation?
J'ai supprimé l'argument "turk" et maintenant cela fonctionne grâce