0
votes

Pourquoi ne peux-je pas prendre plusieurs valeurs de dictionnaire et les mettre dans la même variable

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.

5 commentaires

Qu'est-ce que vous entrez comme "entrez votre phrase codée:" ?


Out2 = dict2.get (OUT1) 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 . Out2 est uniquement défini si x est '.' et pour cette valeur, nous n'avons aucune entrée dans le dictionnaire. Pourquoi avons-nous besoin out2 et Out3 ? Pourriez-vous expliquer ce que votre fonction devrait faire?


BTW, vous n'avez pas à écrire int (1) . Just 1 est suffisant, car 1 est déjà un entier. Et déposez les parenthèses après retour . retour 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.


3 Réponses :


0
votes

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 TO OUT3 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 valeur. Vous devez ignorer la concaténation si Out2 == Aucun ou donner l'appel à Obtenir une valeur de chaîne par défaut (pour revenir si la touche n'est pas dans le dictionnaire): xxx


0 commentaires

0
votes

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 in1 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.

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 'u' , 'l' et 'i' peuvent être ajoutés au dictionnaire, de sorte que vous n'avez pas Pour les traiter plus tard dans le code.

puis une boucle sur la chaîne, trouvez l'entrée dans le dictionnaire (avec la valeur par défaut 0 ) et ajoutez ces valeurs pour obtenir le total. xxx

Vous pouvez raccourcir ce code encore plus si vous remplacez xxx

avec xxx < / pré>


Après clarification de la question, j'ai ajusté le code à: xxx

Le résultat est Bonjour mot .


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: xxx

enfants, ne fais pas cela à la maison!


1 commentaires

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



0
votes


1 commentaires

Après cette explication, j'ai ajusté ma réponse. Si vous continuez à apprendre Python, vous le comprendrez plus tard. ;)