0
votes

Existe-t-il un moyen de sélectionner un dictionnaire, puis de sélectionner une seule fonction de ce dictionnaire?

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

Voici un exemple de ce que la sortie me donne: (entrée de l'utilisateur dans "" , nom de la fonction dans '', sortie dans '""')

choisir un ensemble d'équations. 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"'

Mais je veux que ce soit plus comme ça:

choisir un ensemble d'équation. Calcul ou physique: "Physique"
1: 'Physique 1'
2: 'Physique 2'
3: 'Physique 3'
Entrez l'ID d'équation souhaitée: «2»
'"Exécute la fonction choisie"'


2 commentaires

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 ...}} Quelque chose comme ça, vous pouvez transformer la saisie de l'utilisateur de sujet en minuscule pour faciliter la tâche.


4 Réponses :


0
votes

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


0 commentaires

0
votes

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

de cette façon, vous pouvez faire toute votre entrée dans la même fonction. xxx

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.


0 commentaires

0
votes

La chose la plus facile serait, les suivantes: xxx

mais je suggère, vous modifiez la structure de données à quelque chose comme ce qui suit; xxx

et y accéder par quelque chose comme, xxx


0 commentaires

0
votes

ajoutez un dictionnaire imbriqué avec les noms de fonction: xxx

puis modifier votre boucle: xxx

Vous pouvez également utiliser imbriqué < code> Liste S à la place, comme ['Calculus 1', CAL1] Mais il peut être difficile de dire que Calculus ['1'] [0] est Le nom et Calculus ['1'] [1] est la fonction.

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


0 commentaires