2013-06-30 5 views
4

Donc, j'ai un peu de mal avec ce morceau de code.Interpréter des nombres à deux chiffres

if s.get("home") < s.get("away"): 
     scoringplays = scoringplays + s.get("away") + "-" + s.get("home") + " " + game.get("away_team_name") 
    elif s.get("home") > s.get("away"): 
     scoringplays = scoringplays + s.get("home") + "-" + s.get("away") + " " + game.get("home_team_name") 
    else: 
     scoringplays = scoringplays + s.get("home") + "-" + s.get("away") + " Tied" 

Il tire le score d'un match de baseball de la MLB et les messages sur reddit comme ceci:

4-3 Gagner Nom de l'équipe

Cependant, je l'ai remarqué si l'un des scores est à deux chiffres, le code semble en lecture seule le premier chiffre, donc un score de 10-2 afficherait comme ceci:

2-10 Perdre Nom de l'équipe

J'ai cherché autour d'un peu, et peut-être que j'utilise les mauvais termes de recherche, mais je n'arrive pas à trouver une réponse ici. Toute aide serait grandement appréciée.

+0

Désolé. C'est python. Merci d'être si cordial. – user2536657

Répondre

4

On dirait que vous comparez des chaînes:

>>> "10" < "2" 
True 

Comparer leur version entier:

if int(s.get("home")) < int(s.get("away")) 

Si la clé est absente de la dict puis dict.get retours None par défaut. Vous pouvez également transmettre votre propre valeur par défaut.

home_score = int(s.get("home", 0)) # or choose some other default value 
away_score = int(s.get("away", 0)) 

if home_score < away_score: 
    #do something 

Démo:

>>> int("10") < int("2") 
False 
+0

Je reçois l'erreur suivante lorsque j'essaie: TypeError: l'argument int() doit être une chaîne ou un nombre, pas 'NoneType' – user2536657

+0

@ user2536657 cela signifie soit 's.get (" home ")' ou 's .get ("away") 'retourne" None ". Vous pouvez aussi utiliser une valeur par défaut: 's.get (" home ", 0)', ici 0 sera retourné si la clé "home" est introuvable. –

+0

Merci! cela semble avoir fait l'affaire. – user2536657

Questions connexes