Mon code est d'imprimer la moyenne des tuples dans une liste et de retourner Aucun si la liste est vide. En ce moment c'est mon code

def average_vehicles(vehicle_records):
    """Return average of vehicles"""
    summ = 0
    num = 0
    average = 0
    if vehicle_records != []:
        for value in vehicle_records:            
            summ += value[1]
            num += 1
        average = summ / num
    else:
        average  = "None" 
    return average

J'obtiens la sortie correcte pour ce code de test:

some_records = [('2010-01-01',100),
            ('2010-01-02',200),
            ('2010-01-03',300)]
avg = average_vehicles(some_records)
print(avg)

Cependant, je n'arrive pas à faire imprimer "OK" pour le code de test suivant et je ne sais pas pourquoi il ne fait pas le travail alors que tout le reste semble correct, quelqu'un peut-il m'aider?

some_records = []
avg = average_vehicles(some_records)
if avg is None:
   print('OK')
else:
   print('The function should return a None value')
1
user9644895 16 avril 2018 à 17:14

5 réponses

Meilleure réponse

Aucun ne doit pas être une chaîne mais un objet Aucun. Modifiez la ligne suivante average = "None" en average = None et cela devrait fonctionner.

0
user9483860user9483860 16 avril 2018 à 14:17
some_records = []
avg = average_vehicles(some_records)
if avg == 'None':
   print('OK')
else:
   print('The function should return a None value')

Explication:

Lorsque nous imprimons le type de avg, il est de type str mais si nous vérifions avg is None, dans ce None est de type Nonetype. Nous devons donc vérifier en utilisant "Aucun" comme avg == 'None'

0
kvmahesh 16 avril 2018 à 14:21
some_records = []
avg = average_vehicles(some_records)
if avg == "None":
   print('OK')
else:
   print('The function should return a None value')
0
Mohammad Wasim 16 avril 2018 à 14:17

None et "None" ne sont pas la même chose.

0
Scott Hunter 16 avril 2018 à 14:16

Vous retournez la chaîne "None" au lieu de l'objet None

1
AntiMatterDynamite 16 avril 2018 à 14:17