2010-09-17 5 views
0

Supposons que vous ayez écrit une nouvelle fonction qui vérifie si votre personnage de jeu a encore une vie. Si le personnage n'a plus aucune vie, la fonction devrait imprimer 'mort', si elle a moins de 5 points de vie, la fonction devrait imprimer 'presque morte', sinon elle devrait imprimer 'vivant'.Quelles sont les erreurs dans ce code?

am_i_alive(): 
    hit_points = 20 
    if hit_points = 0: 
     print 'dead' 
    else hit_points <= 5: 
     print 'almost dead' 
    else: 
     print 'alive' 

am_i_alive() 
+0

Où se trouve votre test élémentaire? Si vous écrivez quelques cas de test, vous sauriez quelles étaient les erreurs, n'est-ce pas? –

+0

@ S.Lott Dans le cas du code affiché, je dirais que c'est son propre test unitaire;) – aaronasterling

Répondre

8
def am_i_alive(): 
    hit_points = 20 
    if hit_points == 0: 
     print 'dead' 
    elif hit_points <= 5: 
     print 'almost dead' 
    else: 
     print 'alive' 

am_i_alive() 
  1. Vous devez le mot-clé def pour définir une fonction.
  2. Vous devez utiliser == et non = pour les comparaisons.
  3. Vous chaînez les instructions if en utilisant elif.

autre que cela, il semble bon. Comme dans correct et compilera. Il donnera toujours la même valeur cependant.

Une meilleure façon de le faire est la suivante:

def am_i_alive(hit_points): 
    if hit_points == 0: 
     print 'dead' 
    elif hit_points <= 5: 
     print 'almost dead' 
    else: 
     print 'alive' 

am_i_alive(20) 
am_i_alive(3) 
am_i_alive(0) 

Ici, nous passons un « argument » à la fonction. nous l'appelons am_i_alive(x)x peut être n'importe quel nombre. Dans le code pour la fonction am_i_alive, tout ce que nous mettons à la place de x devient la valeur référencée par hit_points.

Une fonction peut également prendre deux arguments. (en fait, jusqu'à 255 arguments)

def am_i_alive(hit_points, threshold): 
    if hit_points == 0: 
     print 'dead' 
    elif hit_points <= threshold: 
     print 'almost dead' 
    else: 
     print 'alive' 

am_i_alive(20, 5) 
am_i_alive(3, 2) 
am_i_alive(0, 10) 

Pouvez-vous comprendre ce que fait la dernière version?

Je ne l'ai pas lu parce que python est pas ma langue maternelle, mais on me dit que cela est une très bonne introduction to python and programming.

+0

oh! Cela a du sens maintenant! Je vous remercie! –

+0

Vous avez également besoin de 'elif' au lieu de' else if'. –

+0

@Fred Larson. Bon à regarder. Je fais une pause dans le codage C;) – aaronasterling

Questions connexes