0
votes

Comment puis-je boucler plusieurs entrées dans un fichier de dictionnaire avec python?

Mon objectif est de prendre deux entrées utilisateur sur une boucle, de les enregistrer dans un dictionnaire, et lorsque l'utilisateur met fin à la boucle, d'enregistrer le dictionnaire. xxx

def get_productCode (): fonctionne

def get_productnum (): fonctionne

def utilisateur_continue (): travaux mais maintenant ne reçoit pas d'invité

Qu'est-ce que j'essaie actuellement de corriger: xxx

par ma compréhension sur chaque boucle, il devrait recevoir le retour Code produit et produit, et les stocker? Mais maintenant, il ne demandera pas à l'utilisateur de continuer et de mettre fin à la boucle afin que je puisse voir le dictionnaire avant d'essayer d'avoir l'utilisateur le sauvegarder.

En outre, j'ai besoin d'avoir l'utilisateur choisir un nom de fichier Pour les données.

Comme toujours, l'aide est très appréciée!


5 commentaires

Le dictionnaire est-il créé à l'intérieur de la fonction? Cela signifie qu'il est supprimé après la ligne impression (produit_dict) . Si vous souhaitez utiliser le dictionnaire en dehors de la fonction, vous pouvez le recevoir comme un argument à cette fonction ou le rendre global.


@Genoxidus où vous prenez une entrée utilisateur?


Votre compréhension est incorrecte. Vous ne stockez rien. Certainement pas assez longtemps pour le sauver


@orkach je vois savoir que le dictionnaire doit être global pour sauver chaque boucle.


@ komatiraju032 Les entrées provenaient de get_productcode () et get_productnum ().


3 Réponses :


0
votes

Il y a deux problèmes ici. Premier numéro est que votre dictionnaire est en train d'être détruit une fois que la fonction Create_ProductDict () est terminée, car le dictionnaire est créé dans le cadre de la fonction.

Un moyen de contourner ce serait de déclarer le dictionnaire de la portée mondiale en tant que variable globale. De cette façon, le dictionnaire persistera car plus d'éléments y sont ajoutés.

Ensuite, vos variables d'entrée ne sont actuellement pas utilisées et que le dictionnaire n'est pas ajouté à. La syntaxe est la suivante: xxx

supposant que vos fonctions d'entrée sont équivalentes à la fonction d'entrée () de Python, une solution qui résoudra ces deux problèmes sembleraient à quelque chose comme Ceci: xxx

la sortie de ce serait: xxx

espère que c'est utile :) < / p>


0 commentaires

0
votes

Essayez ceci:

def get_Product():
    user_cont = True
    while user_cont:
        get_ProductCode()
        get_ProductNum()
        create_ProductDict()
        user_cont = user_continue()

def user_continue():
    ip = input('Enter Yes to Continue: ').lower()
    return True if ip == 'yes' else False


0 commentaires

0
votes

Voici ma fonction principale finie après que tout ce qui précède m'a signalé dans la direction dont j'avais besoin, mais n'était pas en mesure de répondre à mes questions entièrement. Ma détermination de la clé était la mise à jour du dictionnaire avant que je demande de continuer, puis ajoutez la sauvegarde du dictionnaire à la fin. (Les fonctions supplémentaires non incluses ici, comme cela ne correspond pas à la question / solution. Je vous remercie!

    user_cont = True
    while user_cont:

        # get product code
        productCode = get_ProductCode()

        # get product number
        productNum = get_ProductNum()

        # print(productCode, productNum)

        # save to dict
        products[productCode] = productNum

        # debug to ensure dictionary was saving multi lines
        # print(products)

        # ask to continue
        user_cont = user_continue()

    for productCode, productNum in products.items():
        formproducts = (productCode + ", " + productNum)

        # print test
        # print(formproducts)

    # save dict to file
    FILENAME = input(str("Please enter a file name: "))
    file = open(FILENAME, "w")
    file.write( str(products) )
    file.close()
    print("File saved.")


0 commentaires