0
votes

Je veux ajouter mes deux articles de liste dans un dictionnaire

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


2 commentaires

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.


3 Réponses :


1
votes

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))



0
votes

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]


1 commentaires

@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 fonctionne, mais pour des paires d'éléments correspondants de deux listes, je pense sur la réflexion que vous devriez utiliser zip .



1
votes
# 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.

3 commentaires

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é!