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. Qu'est-ce que j'essaie actuellement de corriger: P> 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. P> En outre, j'ai besoin d'avoir l'utilisateur choisir un nom de fichier Pour les données. P> Comme toujours, l'aide est très appréciée! P> p> def get_productCode (): code> fonctionne p>
def get_productnum (): code> fonctionne p>
def utilisateur_continue (): code> travaux mais maintenant ne reçoit pas d'invité p>
3 Réponses :
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. P>
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: p> 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: p> la sortie de ce serait: p> espère que c'est utile :) p> < / p>
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
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.")
Le dictionnaire est-il créé à l'intérieur de la fonction? Cela signifie qu'il est supprimé après la ligne
impression (produit_dict) code>. 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 ().