从新手书中解释这个python代码

时间:2016-04-02 21:59:25

标签: python

这是我的第一篇文章! 我刚开始用这本惊人的书在我的树莓派上学习编写python: "使用Raspberry Pi学习Python"

我从基本章节开始,然后进行了夏季练习。 那里有些东西没有在上一章中介绍过,我希望你能帮助理解代码的流程。

我冒昧地将它上传到我的Dropbox: click here.
我还在这篇文章末尾输入了代码

我不明白的是:

我不理解他的定义:{
1)你能解释一下它们的流程吗? 2)什么是prev_grades?

我突然对此不知所措。

students = [["Ben", {"Maths": 67, "English": 78, "Science": 72}],
            ["Mark", {"Maths": 56, "Art": 64, "History": 39, "Geography": 55}],
            ["Paul", {"English": 66, "History": 88}]]

grades = ((0, "FAIL"),(50, "D"),(60,"C"),(70, "B"), (80,"A"), (101, "CHEAT!"))

def print_report_card(report_student = None):
    for student in students:
        if (student[0] == report_student) or (report_student == None):
            print("Report card for student ", student[0])            
            for subject, mark in student[1].items():
                for grade in grades:
                    if mark < grade[0]:
                        print(subject, " : ", prev_grade)
                        break
                    prev_grade = grade[1]


def add_student(student_name):
    global students
    for student in students:
        if student[0] == student_name:
            return "Student already in database"
    students.append([student_name, {}])
    return "Student added sucessfully"

def add_mark(student_name, subject, mark):
    global students
    for student in students:
        if student[0] == student_name:
            if subject in student[1].keys():
                print(student_name, " already has a mark for ", subject)
                user_input = input("Overwrite Y/N? ")
                if user_input == "Y" or user_input == "y":
                    student[1][subject] = mark
                    return "Student's mark updated"
                else:
                    return "Student's mark not updated"
            else:
                student[1][subject] = mark
                return "Student's mark added"
    return "Student not found"

while True:
    print("Welcome the the Raspberry Pi student database")
    print("What can I help you with?")
    print("Enter 1 to view all report cards")
    print("Enter 2 to view the report card for a student")
    print("Enter 3 to add a student")
    print("Enter 4 to add a mark to a student")
    print("Enter 5 to exit")

    try:
        user_choice = int(input("Choice: "))
    except ValueError:
        print("That's not a number I recognise")
        user_choice = 0

    if user_choice == 1:
        print_report_card()
    elif user_choice == 2:
        enter_student = input("Which student? ")
        print_report_card(enter_student)
    elif user_choice == 3:
        enter_student = input("Student name? ")
        print(add_student(enter_student))
    elif user_choice ==4:
        enter_student = input("Student name? ")
        enter_subject = input("Subject? ")
        num_error = True
        while num_error:
            num_error = False
            try:
                enter_mark = int(input("Mark? "))
            except ValueError:
                print("I don't recognise that as a number")
                num_error = True
        print(add_mark(enter_student, enter_subject, enter_mark))
    elif user_choice == 5:
        break
    else:
        print("Unknown choice")
    input("Press enter to continue")
print("Goodbye and thank you for using the Raspberry Pi Student database")

1 个答案:

答案 0 :(得分:0)

转到此链接:http://pythontutor.com/visualize.html#mode=edit粘贴您的代码并按可视化执行,我想您将了解所有内容。

enter image description here