Python 我想在字典中添加我的两个列表项

Python 我想在字典中添加我的两个列表项,python,random,module,Python,Random,Module,我正在为一个时刻表生成器编写代码。此代码接受您想要学习的科目和学习偏好(上午、下午、晚上)。然后我每周学习的总小时数(20小时)。然后我用它除以7来计算每天的学习。然后我想给我的随机时间段分配一个随机主题 # Time Table Creator import random def TimeTableCreator(subjects,day,time_slots,total_hours): day = {} studyperday = total_hours/7 stud

我正在为一个时刻表生成器编写代码。此代码接受您想要学习的科目和学习偏好(上午、下午、晚上)。然后我每周学习的总小时数(20小时)。然后我用它除以7来计算每天的学习。然后我想给我的随机时间段分配一个随机主题

# Time Table Creator
import random
def TimeTableCreator(subjects,day,time_slots,total_hours):
    day = {}
    studyperday = total_hours/7
    studyperday = round(studyperday)

    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
    for subject in subjects_study:
        for i in range(studyperday):
         day[subject] = final_time_slots[i]

    print(day)
subjects = []
while True:
    subject = input("Enter a subject:\n")
    if subject=="":
        break
    subjects.append(subject)
    total_hours = 20


print("What is your preference of studying: Morning or afternoon or evening:")
time_preference = input()
if time_preference.lower()=="morning":
    time_slots = ["7:00-8:00","8:00-9:00","9:00-10:00","10:00-11:00","2:00-3:00"]
elif time_preference.lower()=="afternoon":
    time_slots = ["12:00-13:00","13:00-14:00","15:00-16:00","16:00-17:00","18:00-19:00"]
elif time_preference.lower()=="evening":
    time_slots = ["16:00-17:00","18:00-19:00","19:00-20:00","20:00-21:00","21:00-22:00"]
else:
    print("Invalid preference")
TimeTableCreator(subjects,"Monday",time_slots,total_hours)

程序输出

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:00到3:00。但我希望为不同的科目分配不同的时段
请帮助。

代码中的问题是字典创建。您不需要嵌套循环。你可以用

把这个换成

for subject in subjects_study:
        for i in range(studyperday):
         day[subject] = final_time_slots[i]
这个

一套解决方案:

day = dict(zip(subjects_study, final_time_slots))

代码中的问题是字典创建。您不需要嵌套循环。你可以用

把这个换成

for subject in subjects_study:
        for i in range(studyperday):
         day[subject] = final_time_slots[i]
这个

一套解决方案:

day = dict(zip(subjects_study, final_time_slots))

您正在使用嵌套循环进行循环,因此将遍历每个主题的所有
i
值,并以所有主题的最后一个
i
值结束:

    for subject in subjects_study:
        for i in range(studyperday):
         day[subject] = final_time_slots[i]
您需要的是使用
枚举

    for i, subject in enumerate(subjects_study):
        day[subject] = final_time_slots[i]

您正在使用嵌套循环进行循环,因此将遍历每个主题的所有
i
值,并以所有主题的最后一个
i
值结束:

    for subject in subjects_study:
        for i in range(studyperday):
         day[subject] = final_time_slots[i]
您需要的是使用
枚举

    for i, subject in enumerate(subjects_study):
        day[subject] = final_time_slots[i]
您使用了一个嵌套的for循环,它为每个最终的总小时分配了每个主题的值,因此它以相同的随机值(最后一个)结束。 这只需要一个如上所述的for循环

您使用了一个嵌套的for循环,它为每个最终的总小时分配了每个主题的值,因此它以相同的随机值(最后一个)结束。
这只需要如上所述的一个for循环。

您的预期输出是什么?我希望每个主题的时间段应该不同。每个科目显示2:00到3:00。但是我希望为不同的科目分配不同的时间段。你的预期产出是什么?我希望每个科目的时间段应该不同。每个科目显示2:00到3:00。但我希望为不同的主题分配不同的时段。@Vasu@Vasu无论如何,您的代码格式非常好。很容易理解:)谢谢。我正在制作一个时间表的创造者,现在我已经成功了。下面是它的用例:这个程序根据您的时间偏好(上午、下午、晚上)生成一个时间表。科目是随机选择的,但时间段是固定的,这样你就有了在特定时间学习的习惯。现在我已经运行了相同的函数,并创建了7天的时间表。是的,我能够按照代码进行操作,很好地注释了!无论如何,你有一个非常好的格式代码。很容易理解:)谢谢。我正在制作一个时间表的创造者,现在我已经成功了。下面是它的用例:这个程序根据您的时间偏好(上午、下午、晚上)生成一个时间表。科目是随机选择的,但时间段是固定的,这样你就有了在特定时间学习的习惯。现在我已经运行了相同的函数,并创建了7天的时间表。是的,我能够按照代码进行操作,很好地注释了@瓦苏,不客气。事实上,我认为“死神”用zip的回答可能更简洁。我试图更接近您的原始代码,我将把它保留下来,因为我认为了解
枚举
的工作原理对您很有帮助,但对于两个列表中的对应项对,我认为您应该使用
zip
@Vasu,不客气。事实上,我认为“死神”用zip的回答可能更简洁。我试图更接近您的原始代码,我将保留它,因为我认为了解
枚举
的工作原理对您很有指导意义,但是对于两个列表中的对应项对,经过思考,我认为您应该使用
zip