2009-07-08 6 views
-2
for a in ('90','52.6', '26.5'): 
    if a == '90': 
     z = (' 0',) 
    elif a == '52.6': 
     z = ('0', '5') 
    else: 
     z = ('25') 

    for b in z: 

     cmd = exepath + ' -a ' + str(a) + ' -b ' + str(b) 
     process = Popen(cmd, shell=True, stderr=STDOUT, stdout=PIPE) 

     outputstring = process.communicate()[0] 
     outputlist = outputstring.splitlines() 

     for i in outputlist: 
      if i.find('The student says') != -1: 
       print i 

Travaillant sur une affectation et ceci un extrait de mon code. Il y a une partie au dessus de ce code mais tout ce qu'il fait c'est définir exepath et juste imprimer exepath à l'écran. Quand je cours ceci, je n'obtiens pas une erreur ou n'importe quoi mais le programme finit juste quand mis dans l'invite de commande. Pourquoi? et comment puis-je le réparer?pour instruction et i.find dans la liste

EDIT: Désolé pour les citations mais le problème. J'ai mis à jour le code pour corriger ça, mais ça ne me donne toujours rien en retour ... Quel pourrait être le problème?

+5

Vos citations sont en désordre. Cet extrait est-il correct? –

+0

Lorsque vous ajoutez des instructions 'print' dans chaque boucle' for', que voyez-vous? –

Répondre

1

En regardant votre code, il ne fait quelque chose de sortie si le i.find('The student says') correspond avec succès afin que vous pouvez soit exécuter ce dans un débogueur ou ajouter des instructions d'impression pour voir ce qui est dans outputstring pour chaque fois autour de la boucle.

6

vous manque des guillemets autour de vous d'abord pour essayer déclaration

for a in ('90','52.6', '26.5'): 
+0

Fin des citations FTW! – Fry

+1

En effet. Le PO pourrait envisager d'utiliser un éditeur de texte avec une coloration syntaxique pour attraper ce genre de chose. –

+0

Il n'est pas nécessaire d'utiliser un éditeur spécial lors de la publication ici, car Stack Overflow montre utilement une version en surbrillance du code - comme vu ci-dessus. –

1

Une fois que vous avez fixé la citation manquante, vous obtiendrez le comportement bizarre de cette partie:

else: 
    z = ('25') 

for b in z: 

les parenthèses ici ne rien faire du tout, et b dans la boucle sera '2' puis '5'. Vous voulez dire probablement utiliser, à la place:

z = ('25',) 

qui fait tuple za avec un seul élément (la fuite la virgule ici est ce qui indique au compilateur Python que c'est un tuple - fonctionnerait tout aussi bien w/o les parenthèses), alors b dans la boucle sera '25'.

Questions connexes