J'écris un code pour un fabricant de table de temps. Ce code prend les sujets que vous souhaitez étudier et la préférence d'étudier (matin, après-midi, soir). Ensuite, je prends des heures totales à étudier (20 heures) dans une semaine. Ensuite, je le divisez par 7 pour calculer l'étude par jour. Ensuite, je veux affecter un sujet aléatoire à mon emplacement de temps aléatoire.
Enter a subject: phy Enter a subject: chem Enter a subject: bio Enter a subject: What is your preference of studying: Morning or afternoon or evening: morning **{'chem': '2:00-3:00', 'phy': '2:00-3:00', 'bio': '2:00-3:00'}** Process finished with exit code 0
3 Réponses :
Le problème de votre code est la création du dictionnaire. Vous n'avez pas besoin de la boucle imbriquée. Vous pouvez utiliser zip ()
juste changer cela en
day = dict(zip(subjects_study, final_time_slots))
Vous bouclez à l'aide de boucles imbriquées, de sorte que toutes les valeurs i cod> pour chaque sujet et se retrouvent avec la valeur de la dernière valeur de
i code> pour tous les sujets :
for i, subject in enumerate(subjects_study):
day[subject] = final_time_slots[i]
@Vasu est le bienvenu. Je pense en fait que la réponse de Deadshot avec Zip est probablement Natre. J'ai essayé de rester plus proche de votre code d'origine et je le laisserai parce que je pense qu'il est instructif pour vous de voir comment énumérer code> fonctionne, mais pour des paires d'éléments correspondants de deux listes, je pense sur la réflexion que vous devriez utiliser
zip code>.
# Time Table Creator import random def TimeTableCreator(subjects,day,time_slots,total_hours): day = {} studyperday = round(total_hours/7) subjects_study = random.sample(subjects,k=studyperday) # subjects that are selected randomly final_time_slots = random.sample(time_slots,k=studyperday) # list of my time slots #trying to add both these items using for loop in a dictionary i = 0 for subject in subjects_study: day[subject] = final_time_slots[i] i += 1 print(day) You were using a nested for loop, that assigned each value of subject from each final_total_hours and therefore it ended up at the same random value (the last one). This only needed a single for loop as above.
Quoi qu'il en soit, vous avez un code très bien formaté. Était facilement compréhensible :)
Merci. Je faisais un créateur de la table de temps et je l'ai fait avec succès. Voici l'Usecase de celui-ci: Ce programme génère une table de temps en fonction de votre préférence temporelle (matin, après-midi, soir). Les sujets sont sélectionnés au hasard, mais les créneaux horaires sont fixés de manière à avoir l'habitude d'étudier à ce moment-là. Maintenant, j'ai la même fonction et j'ai créé la table d'heure pendant les 7 jours.
Oui, j'ai pu suivre le code, bien commenté!
Quelle est votre sortie attendue
Je veux que les créneaux horaires soient différents pour chaque sujet. Il montre 2h00 à 15h00 pour chaque sujet. Mais je veux que différents emplacements soient attribués à différents sujets.