J'essaie de choisir un dictionnaire via l'entrée de l'utilisateur et de sélectionner une fonction répertoriée dans le dictionnaire choisi pour exécuter. Ce qui arrive actuellement avec mon code est-ce que cela choisira correctement le bon dictionnaire, mais lors de la sélection de la fonction, il fonctionnera lors de la saisie de l'ID de fonction souhaitée, mais de la répétition pour chaque entrée d'élément dans le dictionnaire choisi. Que dois-je faire pour résoudre ce problème?
Les fonctions réellement définies sont simplement d'imprimer un nombre aléatoire comme un espace réservé lors du test / du débogage. De plus, je laisse les fonctions dans leur emplacement de mémoire hexagonale pour la simplicité tout en test / débogage. P> Voici un exemple de ce que la sortie me donne: (entrée de l'utilisateur dans "" , nom de la fonction dans '', sortie dans '""') p> choisir un ensemble d'équations. Calcul ou physique: "Physique" Mais je veux que ce soit plus comme ça: p> choisir un ensemble d'équation. Calcul ou physique: "Physique"
1: (Fonction Phy1 à 0x7f32A527C6A8)
Entrez l'ID d'équation souhaitée: "1"
Appuyez sur Entrée
'"347"'
2: (Fonction PHY2 à 0x7F32A527C730)
Entrez l'ID d'équation souhaitée: «3»
Appuyez sur Entrée
'"540"'
3: (Fonction Phy3 à 0x7F32A527C7B8)
Entrez l'ID d'équation souhaitée: «2»
Appuyez sur Entrée
'"429"' p>
1: 'Physique 1'
2: 'Physique 2'
3: 'Physique 3'
Entrez l'ID d'équation souhaitée: «2»
'"Exécute la fonction choisie"' P> P>
4 Réponses :
Vous pouvez essayer comme ci-dessous:
Choose equation set. Calculus or Physics: "Calculus" (1, ':', 'cal1') (2, ':', 'cal2') (3, ':', 'cal3') Enter desired equation function id: 1 Cal1
Cela semble être ce que vous voudriez ici est un dictionnaire imbriqué, où les clés de niveau supérieur sont "physiques" et "calculs", puis les valeurs de chacun seraient les dictionnaires que vous avez déjà spécifiés. de cette façon, vous pouvez faire toute votre entrée dans la même fonction. p> et comme l'un des commentaires mentionnés, pourrait être le meilleur Pour rendre les clés du dictionnaire minuscule et convertir toutes les entrées en minuscule. p> p>
La chose la plus facile serait, les suivantes: mais je suggère, vous modifiez la structure de données à quelque chose comme ce qui suit; p> et y accéder par quelque chose comme, p>
ajoutez un dictionnaire imbriqué avec les noms de fonction: puis modifier votre boucle: p> Vous pouvez également utiliser imbriqué < code> Liste code> S à la place, comme Si tout ce que vous vous souciez d'être un nom de fonction générique qui augmente sur la commande qu'il apparaît, puis Il est encore plus simple: p> ['Calculus 1', CAL1] CODE> Mais il peut être difficile de dire que Calculus ['1'] [0] code> est Le nom et Calculus ['1'] [1] code> est la fonction. p>
Vous voulez d'abord boucler vos fonctions pour imprimer leurs noms (pas les objets de la fonction elles-mêmes). Je ne vois nulle part où vous faites ça. Après cette sélection est terminée.
Que diriez-vous d'avoir des dictionnaires imbriqués à la place?
{"Calculus": {"1": CAL1, "2": CAL2 ...}, "Physique": {"1": phy1, "2": phy2 ...}} code> Quelque chose comme ça, vous pouvez transformer la saisie de l'utilisateur de sujet en minuscule pour faciliter la tâche.