Lorsque j'essaie d'exécuter mon code, je reçois une erreur de nom: Lorsque je pose la fonction d'assistance en haut, le programme a fonctionné mais je prévois d'utiliser quelques fonctions supplémentaires Donc, je veux les mettre en bas et définir le premier comme principal. J'ai également essayé d'utiliser si __name__ == "__main__": principal () code>, mais cela n'a pas fonctionné non plus. Alors, comment puis-je avoir mes autres fonctions être placées ci-dessous principalement tout en veillant à ce que tout soit défini? P> from sys import argv, exit
import csv
from collections import OrderedDict
def main():
if len(argv) != 3:
print("Usage: python dna.py data.csv sequence.txt")
exit(1)
with open(argv[1]) as csv_file:
database = csv.DictReader(csv_file)
with open(argv[2]) as txt_file:
sequence = txt_file.read()
STR_searcher()
def STR_searcher():
STR_dict = dict.fromkeys(range(1, len(database.fieldnames)))
for i in range(len(STR_dict)):
for j in range(len(sequence)):
print("hello")
main ()
3 Réponses :
C'est parce que dans la fonction de fonctionnement de str_searcher () code> la variable de la base de données code> n'est pas définie. Pour donner la variable à la fonction, définie comme suit:
def str_searcher (base de données): code> et l'appelez à partir de la fonction code> principale code> comme str_searcher (base de données) code>. p>.
Ceci se produit parce que votre variable code> code> est définie dans le contexte de votre fonction code> Main code> et de str_searcher code> c'est comme si cela n'existe pas . Envisagez de déplacer cela sur une classe, exemple: Myclass().main()
Vous devez transmettre les variables à la fonction ou vous pouvez utiliser le mot-clé global code> mais ce n'est pas un excellent moyen de le faire. P>
Je ne pense pas que je comprenne pourquoi vous attendez de la base code> de la base de données code> dans
principale code> pour être utilisable à l'intérieurstr_searchère code>. Vous attendez-vous égalementcsv_file code> ettxt_file code> pour être utilisable là-bas?"Alors, comment puis-je avoir mes autres fonctions être placées ci-dessous tout en veillant à ce que tout soit défini?" Il semble que vous pensiez que le problème est causé par la définition de
principal () code> avantstr_seercher code>? Ce n'est pas correct.@Karlknechtel J'ai commencé à coder il y a 3 semaines et a commencé à utiliser Python il y a 3 jours, alors je suis honnêtement assez confus dans l'ensemble. J'utilisais c avant-ce que j'ai été utilisé pour définir mes variables avant de les utiliser, et mon programme a fonctionné lorsque la fonction
str_searcher code> était au-dessus du reste du programme, c'est pourquoi c'est pourquoi cela ressemblait à c'était le problème pour moi.Ce que vous essayez de faire ne fonctionnerait pas non plus dans C non plus, peu importe la commande que vous mettez les fonctions dans. Je pense que vous pouvez également avoir mal compris comment "définir tes variables" fonctionne dans C. Le concept général que vous devez comprendre ici est < i> portée variable i>.