2016-04-02 3 views
-5

das ist mein erster Beitrag! Ich fing gerade an, Coding Python auf meinem Raspberry Pi mit diesem erstaunlichen Buch zu lernen: "Lernen Python mit Raspberry Pi"Erklären Sie diesen Python-Code aus einem Newbies-Buch

Ich begann mit den grundlegenden Kapiteln und dann gab es die sommerliche Übung. Es gibt Dinge, die im vorherigen Kapitel nicht behandelt wurden, und ich möchte, dass Sie den Codefluss verstehen.

nahm ich mir die Freiheit, es zu meinen Dropbox hochgeladen werden: click here.
und I-Eingang auch der Code am Ende dieses Beitrags

was ich nicht verstehe:

Ich verstehe seine Definitionen nicht : {
1) können Sie den Fluss von ihnen erklären?
2) Was ist Prev_grades?

Ich breche mir den Kopf darüber.

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

Fertig! Sie können es jetzt direkt ansehen – Gwynbleidd

+0

Und was genau verstehst du nicht? –

+0

wie ich schon sagte, ich verstehe nicht den Fluss seiner Definitionen – Gwynbleidd

Antwort

0

zu diesem Link gehen: http://pythontutor.com/visualize.html#mode=edit Ihren Code einfügen und die Visualize Execution drücken, ich glaube, Sie alles verstehen.

+0

Danke! das war das hilfreichste, da ich sicher bin, dass es für Leute schwierig ist, den Fluss von te-Code zu beschreiben. – Gwynbleidd

Verwandte Themen