def ULIfrom(in1):
out1 = 0
out2 = ""
out3 = ""
dict2 = {' ':int(0),'a':int(1),'b':int(2),'c':int(3),'d':int(4),'e':int(5),'f':int(6),'g':int(7),'h':int(8),
'i':int(9),'j':int(10),'k':int(11),'l':int(12),'m':int(13),'n':int(14),'o':int(15),'p':int(16),'q':int(17),
'r':int(18),'s':int(19),'t':int(20),'u':int(21),'v':int(22),'w':int(23),'x':int(24),'y':int(25),'z':int(26)
}
for x in in1:
if x == ".":
out2 = dict2.get(out1)
out3 += out2
else:
if x == "U":
out1 += 10
elif x == "L":
out1 += 5
elif x == "I":
out1 += 1
return(out2)
print (ULIfrom(input("enter your encoded phrase:")))
I am fairly new to coding so i don't know whats going on when I try to store multiple dictionary values in the out3 variable and it says that you cant combine NoneTypes and strings because the dictionary values that come out should be strings.
3 Réponses :
Vous avez généré un dictionnaire qui place à partir d'une touche de chaîne de caractères unique sur une valeur entière, mais le reste de votre code semble nécessiter le mappage opposé - traduire d'un entier à un caractère.
En outre, lorsque vous concaténez < Code> OUT2 CODE> TO OUT3 CODE> Vous ne testez pas pour voir s'il s'agit d'une chaîne renvoyée dans la recherche dictionnaire (si la clé est trouvée) ou un Aucun code> valeur. Vous devez ignorer la concaténation si Out2 == Aucun code> ou donner l'appel à Obtenir code> une valeur de chaîne par défaut (pour revenir si la touche n'est pas dans le dictionnaire): P>
On ignore en quelque sorte ce que le résultat de votre fonction devrait être. Je suppose que vous voulez traverser tous les caractères dans Il n'y a pas besoin d'écrire toutes les valeurs du dictionnaire de mappage. Écrivez une compréhension du dictionnaire et laissez Python le faire pour vous. Les cas pour les lettres puis une boucle sur la chaîne, trouvez l'entrée dans le dictionnaire (avec la valeur par défaut Vous pouvez raccourcir ce code encore plus si vous remplacez p> avec p> Après clarification de la question, j'ai ajusté le code à: p> Le résultat est et maintenant pour les choses vraiment mauvaises. J'ai supposé une entrée valide pour rendre le code un peu plus court. Voici une doublure: p> in1 code> et ajouter les valeurs du dictionnaire comme total. Vous voudrez peut-être utiliser des noms plus significatifs pour les variables à l'avenir, de sorte que vous et d'autres lecteurs puisse comprendre ce qu'ils doivent contenir. 'u' code>, 'l' code> et 'i' code> peuvent être ajoutés au dictionnaire, de sorte que vous n'avez pas Pour les traiter plus tard dans le code. p> 0 code>) et ajoutez ces valeurs pour obtenir le total. p>
Bonjour mot code>. p>
C'est vraiment bon code mais j'ai besoin de trouver la valeur pour chaque ensemble de code à l'intérieur de deux arrêts complets et de changer cela dans une lettre que je peux ensuite mettre dans une variable avec le reste des lettres pour traduire complètement le mot
Après cette explication, j'ai ajusté ma réponse. Si vous continuez à apprendre Python, vous le comprendrez plus tard. ;)
Qu'est-ce que vous entrez comme
"entrez votre phrase codée:" code>?Out2 = dict2.get (OUT1) CODE> tente d'obtenir la valeur de la touche OUT1 = 0 qui n'existe pas dans votre DICT2, elle ne renvoie aucun.La fonction car elle n'a aucun sens. Il retourne toujours
out2 code>.Out2 code> est uniquement défini six code> est'.' code> et pour cette valeur, nous n'avons aucune entrée dans le dictionnaire. Pourquoi avons-nous besoinout2 code> etOut3 code>? Pourriez-vous expliquer ce que votre fonction devrait faire?BTW, vous n'avez pas à écrire
int (1) code>. Just1 code> est suffisant, car1 code> est déjà un entier. Et déposez les parenthèses aprèsretour code>.retour code> n'est pas une fonction, mais une déclaration.Une exférence du code OG serait liii.l.uiiiiiiii.ul./.uuiiii.ul.uliii.iiiiiiiiii. signifie bonjour monde.