2016-04-02 45 views
-5

這是我的第一篇文章! 我剛開始學習在我的覆盆子PI編碼蟒蛇這個驚人的書: 「學習Python和樹莓派」從一個新手書中解釋這個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") 
+0

完成!你可以直接看看它 – Gwynbleidd

+0

你究竟有什麼不明白的? –

+0

就像我說的,我不明白他的定義流程 – Gwynbleidd

回答