2010-04-11 2 views
3

Je suis un programmeur débutant, en utilisant python sur Mac.Raison inconnue pour le code exécutant la façon dont il le fait en python

J'ai créé une fonction dans le cadre d'un jeu qui reçoit l'entrée du joueur pour le nom du personnage principal.

Le code est:

import time 

def newGameStep2(): 
     print ' ****************************************** ' 
     print '\nStep2\t\t\t\tCharacter Name' 
     print '\nChoose a name for your character. This cannot\n be changed during the game. Note that there\n are limitations upon the name.' 
     print '\nLimitations:\n\tYou cannot use:\n\tCommander\n\tLieutenant\n\tMajor\n\t\tas these are reserved.\n All unusual capitalisations will be removed.\n There is a two-word-limit on names.' 
     newStep2Choice = raw_input('>>>') 
     newStep2Choice = newStep2Choice.lower() 
     if 'commander' in newStep2Choice or 'lieutenant' in newStep2Choice or 'major' in newStep2Choice: 
      print 'You cannot use the terms \'commander\', \'lieutenant\' or \'major\' in the name. They are reserved.\n' 
      print 
      time.sleep(2) 
      newGameStep2() 
     else: 
      newStep2Choice = newStep2Choice.split(' ') 
      newStep2Choice = [newStep2Choice[0].capitalize(), newStep2Choice[1].capitalize()] 
      newStep2Choice = ' ' .join(newStep2Choice) 
     return newStep2Choice 

myVar = newGameStep2() 
print myVar 

Quand je testais, j'entré major a ', et quand il m'a demandé d'entrer un autre nom, i entrée 'a b'. Cependant, quand il a renvoyé la sortie de la fonction, il renvoie 'major a'. Je suis passé par là avec un débogueur, mais je n'arrive toujours pas à trouver où le problème s'est produit.

Merci pour toute aide, Jasper

Répondre

8

Votre appel récursif à newGameStep2() ne revient pas, alors quand le second se termine d'appel, le flux de contrôle se poursuit dans le premier appel après le si/bloc d'autre, et return newStep2Choice retourne les première valeur de lecture. Vous devez modifier l'appel récursif à:

return newGameStep2() 
Questions connexes