פייתון

נושא

לכתוב טוב

מה שהקורס מבקש מעבר לקוד שרץ. PEP 8, תיעוד, ו-main.

מגיע מיחידות: 2, 3, 4, 5

בעמוד הזהשמותרווחים והזחהביטוי לוגי ארוךelif במקום קינוןפונקציותמבנה התוכניתטיפוס קבוע למשתנהבדיקה עצמית

הקוד ירוץ גם בלי רוב הכללים האלה. פייתון לא אוכפת אותם. הם קיימים בשביל מי שיקרא את הקוד, כולל אתם בעוד חודש. המסמך שמרכז אותם הוא PEP 8. היוצא מן הכלל הוא ההזחה: שם הכלל הוא חלק מהשפה.

שמות

כלל נכון לא
אותיות קטנות character Character
מילים מופרדות בקו תחתון nose_length noselength, noseLength
קבוע באותיות גדולות PI = 3.14 pi = 3.14
שם שאומר מה יש בו fairy_tale_file_with_extension file
פונקציה: מה היא עושה num_of_bottles f, calc
לא אותו שם בפנים ובחוץ land_animal, sea_animal animal פעמיים

קבוע הוא הבטחה, לא נעילה. פייתון תאפשר לשנות את PI.

רווחים והזחה

כלל נכון לא
משני צדי אופרטור x = a + 1 x=a+1
אחרי פסיק f(a, b, c) f(a,b,c)
פרמטר אחד f(a) f( a )
הזחה של בלוק ארבעה רווחים טאב, או ערבוב של שניהם
בין פונקציות שתי שורות ריקות שום רווח

ביטוי לוגי ארוך

כל תנאי בסוגריים, ורווחים סביב האופרטורים:

(((sandwiches >= 1) and (sandwiches < 4))
 or (bowls_of_soup == 2))

elif במקום קינון

שלוש אפשרויות כתובות כ-if, elif, elif, else באותה רמה, ולא if בתוך else בתוך else.

פונקציות

  1. מטרה אחת לכל פונקציה
  2. docstring מיד אחרי ה-def: מה היא עושה, :param:, :type:, :return:, :rtype:
  3. קלט ופלט ברורים. ערך נכנס כארגומנט ויוצא ב-return
  4. לא לגעת במשתנים גלובליים מתוך פונקציה, אלא אם הם קבועים. ובטח לא לשנות אותם עם global
def num_of_bottles(total_liters):
    """Calculates how many 1.5 liter bottles to take.

    :param total_liters: the total amount of water needed
    :type total_liters: float
    :return: the number of bottles
    :rtype: int
    """
    return math.ceil(total_liters / 1.5)

מבנה התוכנית

def main():
    # the program starts here
    pass


if __name__ == "__main__":
    main()

הקורס מבקש את המבנה הזה בכל תוכנית מיחידה 5 והלאה.

טיפוס קבוע למשתנה

משתנה שהתחיל כמספר נשאר מספר. לעבור ממנו למחרוזת זה אפשרי, וbad practice.

בדיקה עצמית

מה לא בסדר, לפי מה שהקורס מבקש?

  1. NumberOfStudents=30
  2. MAX_SCORE = 100, כשהערך משתנה בהמשך התוכנית
  3. print(a,b)
  4. פונקציה בשם do_stuff בלי docstring, שמדפיסה את התוצאה במקום להחזיר אותה
  5. שתי פונקציות צמודות, בלי שורה ריקה ביניהן

תשובות. 1: אותיות גדולות וחסרים רווחים, צריך number_of_students = 30. 2: אותיות גדולות שמורות לקבוע. 3: חסר רווח אחרי הפסיק. 4: שם שלא אומר כלום, אין תיעוד, ו-print במקום return מונע שימוש בתוצאה. 5: צריך שתי שורות ריקות.