J'ai des doutes sur ce devoir sur python. L'exercice comprend les éléments suivants:
Ce bus dispose d'un système de contrôle d'entrée et de sortie des passagers pour surveiller le nombre d'occupants qu'il transporte et ainsi détecter quand la capacité est trop élevée.
À chaque arrêt, l'entrée et la sortie des passagers sont représentées par un tuple composé de deux nombres entiers.
bus_is_full = False bus_capacity = 0 stops = [(20, 0), (13, 7), (40, 10), (1, 20)] while not bus_is_full == True: for stop in stops: bus_capacity = stops() if bus_capacity == 50: bus_is_full = True stops +=1 elif bus_capacity < 50: stops +=1 print(bus_capacity)La succession d'arrêts est représentée par une liste de ces tuples.
stops = [(in1, out1), (in2, out2), (in3, out3), (in4, out4)]Objectifs:
- Utiliser des listes, des tuples
- Utiliser les boucles while / for
- Utiliser une longueur minimale, maximale
- Utiliser l'écart type moyen
Tâches:
- Calculez le nombre d'arrêts.
- Attribuer à une variable une liste dont les éléments sont le nombre de passagers à chaque arrêt (in-out),
- Trouvez l'occupation maximale du bus.
Jusqu'à présent, j'ai trouvé ce code mais il ne renvoie rien, donc je fais certainement quelque chose de mal en raison de mon inexpérience avec python.
bus_stop = (in, out)
3 Réponses :
Le code ci-dessous s'arrête au 3e arrêt avec une capacité supérieure à 50 (population réelle 56)
bus_is_full = False bus_capacity = 0 stops = [(20, 0), (13, 7), (40, 10), (1, 20)] stops_count = 0 # count the number of bust stops till capacity limit reached (including this stop) for stop in stops: bus_capacity += stop[0] - stop[1] # update tot bus_capacity with change in current bus stop (e.g if (13, 7) -> +6 people added) if bus_capacity >= 50: bus_is_full = True stops_count += 1 break elif bus_capacity < 50: stops_count += 1 print(bus_capacity) print(stops_count)
Vous pouvez convertir votre tuple dans une liste.
bus_is_full = False bus_capacity = 0 stops = [(20, 0), (13, 7), (40, 10), (1, 20)] number_stops = len(stops) print("The number of stops is : {0}\n".format(bus_capacity)) i=0 while i < number_stops : for stop in stops: l = list(stop) in_i = l[0] out_i = l[1] print("For the {0} stop, {1} passengers entered and {2} passengers left the bus".format(i, in_i, out_i) ) i += 1
Voici une manière un peu plus simple d'écrire ce que Sultan1991 a dit
bus_capacity = 0 stops = [(20, 0), (13, 7), (40, 10), (1, 20)] num_stops = 0 for on, off in stops: bus_capacity += on - off num_stops += 1 if bus_capacity >= 50: break print("Bus capacity:", bus_capacity) print("Number of stops:",num_stops)
Attention également: une boucle comme celle-ci n'est pas particulièrement performante sur de grands ensembles de données. Donc, si vous travaillez avec plus de données que cela, je vous suggère de regarder les bibliothèques numpy
ou pandas
car elles pourraient considérablement accélérer et réduire la mémoire nécessaire pour des opérations comme celle-ci. .
pour une question de débogage, je vois que vous avez fourni l'entrée, et votre sortie actuelle (rien) si bon début. Vous devez également dire ce que la sortie "devrait être".
bus_capacity = arrête ()?
Lorsque j'essaye d'exécuter le code tel que publié, j'obtiens une erreur. Cela compte comme sortie, vous devriez donc avoir publié cela également.
Vous ne devez poser qu'une seule question à la fois sur stackoverflow. Relisez vos "Objectifs" et pensez à une meilleure façon de déterminer le nombre d'arrêts, en utilisant un seul appel à une fonction intégrée python que vous êtes censé utiliser. (bien qu'il soit mal orthographié dans la section "Objectifs")
À côté du point, mais
tant qu'il n'est pas bus_is_full == True
->alors qu'il n'est pas bus_is_full
Rien dans le problème ne dit quoi que ce soit sur le fait que le bus est plein ou ne peut transporter que 50 personnes. D'où vient cela? Il dépasse clairement 50.
Cela aidera sur la deuxième partie: docs.python.org/3 / tutoriel /… vers la partie inférieure de cette petite section.