我们应该如何解决这个错误“'NoneType'类型的参数不可迭代”?

How should we solve this error"argument of type 'NoneType' is not iterable"?

提问人:z.m 提问时间:11/2/2023 最后编辑:z.m 更新时间:11/2/2023 访问量:53

问:

这是我关于为学校制定每周计划的程序的代码,但我遇到了一个错误:

def teacher_validator_tenth():
    
    valid_lesson_teacher = {'Math':['Jones'],'Physics':['Baker','Anderson'],'Geography':['Smith'],'English':['Johnson'],'Exam':['Williams'],'Geometry':['Lewis'],'Sport':['Harrison'],'Chemistery':['Walker'],'Laboratory':['Wilson'],'Literature':['Armstrong']}


    tenth_Bell1_d1_10 = name_of_lesson_b1_d1_10.get()
    tenth_Bell2_d1_10 = name_of_lesson_b2_d1_10.get()
    tenth_Bell3_d1_10 = name_of_lesson_b3_d1_10.get()
    tenth_Bell4_d1_10 = name_of_lesson_b4_d1_10.get()

    tenth_Bell1_d2_10 = name_of_lesson_b1_d2_10.get()
    tenth_Bell2_d2_10 = name_of_lesson_b2_d2_10.get()
    tenth_Bell3_d2_10 = name_of_lesson_b3_d2_10.get()
    tenth_Bell4_d2_10 = name_of_lesson_b4_d2_10.get()


    tenth_Bell1_d3_10 = name_of_lesson_b1_d3_10.get()
    tenth_Bell2_d3_10 = name_of_lesson_b2_d3_10.get()
    tenth_Bell3_d3_10 = name_of_lesson_b3_d3_10.get()
    tenth_Bell4_d3_10 = name_of_lesson_b4_d3_10.get()


    tenth_Bell1_d4_10 = name_of_lesson_b1_d4_10.get()
    tenth_Bell2_d4_10 = name_of_lesson_b2_d4_10.get()
    tenth_Bell3_d4_10 = name_of_lesson_b3_d4_10.get()
    tenth_Bell4_d4_10 = name_of_lesson_b4_d4_10.get()


    tenth_Bell1_d5_10 = name_of_lesson_b1_d5_10.get()
    tenth_Bell2_d5_10 = name_of_lesson_b2_d5_10.get()
    tenth_Bell3_d5_10 = name_of_lesson_b3_d5_10.get()
    tenth_Bell4_d5_10 = name_of_lesson_b4_d5_10.get()



    tenth_Bell1_d6_10 = name_of_lesson_b1_d6_10.get()
    tenth_Bell2_d6_10 = name_of_lesson_b2_d6_10.get()
    tenth_Bell3_d6_10 = name_of_lesson_b3_d6_10.get()
    tenth_Bell4_d6_10 = name_of_lesson_b4_d6_10.get()

#----------------------------------------------------
    tenth_Bell1_d1_10_teacher = name_of_teacher_1_d1_10.get()
    tenth_Bell2_d1_10_teacher = name_of_teacher_2_d1_10.get()
    tenth_Bell3_d1_10_teacher = name_of_teacher_3_d1_10.get()
    tenth_Bell4_d1_10_teacher = name_of_teacher_4_d1_10.get()

    tenth_Bell1_d2_10_teacher = name_of_teacher_1_d2_10.get()
    tenth_Bell2_d2_10_teacher = name_of_teacher_2_d2_10.get()
    tenth_Bell3_d2_10_teacher = name_of_teacher_3_d2_10.get()
    tenth_Bell4_d2_10_teacher = name_of_teacher_4_d2_10.get()


    tenth_Bell1_d3_10_teacher = name_of_teacher_1_d3_10.get()
    tenth_Bell2_d3_10_teacher = name_of_teacher_2_d3_10.get()
    tenth_Bell3_d3_10_teacher = name_of_teacher_3_d3_10.get()
    tenth_Bell4_d3_10_teacher = name_of_teacher_4_d3_10.get()


    tenth_Bell1_d4_10_teacher = name_of_teacher_1_d4_10.get()
    tenth_Bell2_d4_10_teacher = name_of_teacher_2_d4_10.get()
    tenth_Bell3_d4_10_teacher = name_of_teacher_3_d4_10.get()
    tenth_Bell4_d4_10_teacher = name_of_teacher_4_d4_10.get()


    tenth_Bell1_d5_10_teacher = name_of_teacher_1_d5_10.get()
    tenth_Bell2_d5_10_teacher = name_of_teacher_2_d5_10.get()
    tenth_Bell3_d5_10_teacher = name_of_teacher_3_d5_10.get()
    tenth_Bell4_d5_10_teacher = name_of_teacher_4_d5_10.get()


    tenth_Bell1_d6_10_teacher = name_of_teacher_1_d6_10.get()
    tenth_Bell2_d6_10_teacher = name_of_teacher_2_d6_10.get()
    tenth_Bell3_d6_10_teacher = name_of_teacher_3_d6_10.get()
    tenth_Bell4_d6_10_teacher = name_of_teacher_4_d6_10.get()

  

    manager_lesson_teacher = {tenth_Bell1_d1_10:tenth_Bell1_d1_10_teacher,tenth_Bell2_d1_10:tenth_Bell2_d1_10_teacher,tenth_Bell3_d1_10:tenth_Bell3_d1_10_teacher,tenth_Bell4_d1_10:tenth_Bell4_d1_10_teacher,tenth_Bell1_d2_10:tenth_Bell1_d2_10_teacher,tenth_Bell2_d2_10:tenth_Bell2_d2_10_teacher,tenth_Bell3_d2_10:tenth_Bell3_d2_10_teacher,tenth_Bell4_d2_10:tenth_Bell4_d2_10_teacher,tenth_Bell1_d3_10:tenth_Bell1_d3_10_teacher,tenth_Bell2_d3_10:tenth_Bell2_d3_10_teacher,tenth_Bell3_d3_10:tenth_Bell3_d3_10_teacher,tenth_Bell4_d3_10:tenth_Bell4_d3_10_teacher,tenth_Bell1_d4_10:tenth_Bell1_d4_10_teacher,tenth_Bell2_d4_10:tenth_Bell2_d4_10_teacher,tenth_Bell3_d4_10:tenth_Bell3_d4_10_teacher,tenth_Bell4_d4_10:tenth_Bell4_d4_10_teacher,tenth_Bell1_d5_10:tenth_Bell1_d5_10_teacher,tenth_Bell2_d5_10:tenth_Bell2_d5_10_teacher,tenth_Bell3_d5_10:tenth_Bell3_d5_10_teacher,tenth_Bell4_d5_10:tenth_Bell4_d5_10_teacher,tenth_Bell1_d6_10:tenth_Bell1_d6_10_teacher,tenth_Bell2_d6_10:tenth_Bell2_d6_10_teacher,tenth_Bell3_d6_10:tenth_Bell3_d6_10_teacher,tenth_Bell4_d6_10:tenth_Bell4_d6_10_teacher}

    lst_errors_2 = []

    for lesson_2,teacher in manager_lesson_teacher.items():
        valid_teachers = valid_lesson_teacher.get(lesson_2)
        if teacher not in valid_teachers:
            message_2 = f'{teacher}is Not compatible with {lesson_2}'
            lst_errors_2.append(message_2)
    
       
    
    if lst_errors_2:
        for error_2 in lst_errors_2:
            messagebox.showerror(title='Teacher Error!',message=error_2)
    else:
        messagebox.showinfo(title='Result',message="You've set all of the teachers correctly. Go for others.")

button_image_2 = ImageTk.PhotoImage(Image.open(r'f:\python\pictures\New folder\Button24.png'))
button_label_2 = Label(frame_tenth,
                     image=button_image_2,
                     bg='#F8F8FF')
button_label_2.place(relx=0.2,rely=0.85)

teacher_validator_button = Button(frame_tenth,
                        image=button_image_2,
                        command=teacher_validator_tenth,
                        borderwidth=0,
                        bg='#F8F8FF')
teacher_validator_button.place(relx=0.2,rely=0.85)

这是错误: 'NoneType' 类型的参数不可迭代” 关于我写的地方“如果老师不在valid_teachers:”

实际上,我希望它检查用户将在程序中输入的教师是否与课程兼容,因此我得到了该条目,然后我编写了以下代码:

for lesson_2,teacher in manager_lesson_teacher.items():
        valid_teachers = valid_lesson_teacher.get(lesson_2)
        if teacher not in valid_teachers:
            message_2 = f'{teacher}is Not compatible with {lesson_2}'
            lst_errors_2.append(message_2)

但是我遇到了我之前提到的错误。

python nonetype 可迭代

评论

0赞 Gino Mempin 11/2/2023
在 中,检查 的值。因为不管它是什么,它都不在 ,所以回报.valid_teachers = valid_lesson_teacher.get(lesson_2)lesson_2valid_lesson_teacher.getNone
0赞 z.m 11/2/2023
谢谢,但我想我把它放在valid_lesson_teacher,因为我认为它们是数学和物理等。
0赞 gimix 11/2/2023
哪一行给出了错误?
1赞 Barmar 11/3/2023
使用 时,如果不能使用 ,则应指定一个有用的默认值。如果不应该有默认值,请改用,如果无效,则会出现错误。最好尽早发现错误。.get()Nonevalid_lesson_teacher[lesson_2]lesson_2
2赞 Barmar 11/3/2023
顺便说一句,所有这些不同的变量看起来都像是一个设计问题。您应该使用列表和字典,而不是所有这些以数字命名的变量,并使用循环来填充它。tenth_Bell1_d1_10

答: 暂无答案