<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 <img src="images/logo.jpg" style="display
Step1:  <p style="text-align
Step2:  <div class="align-center" style="display
Step3:  <p style="text-align
Step4:  <p style="text-align
Step5:  <p style="text-align
Step6:  <p style="text-align
Step7:  <p style="text-align
Step8:  <p style="text-align
Step9:  <div class="align-center" style="display
Step10:  <p style="text-align
Step11:  <p style="text-align
<ASSISTANT_TASK:>
Python Code:
import random
Explanation: <img src="images/logo.jpg" style="display: block; margin-left: auto; margin-right: auto;" alt="לוגו של מיזם לימוד הפייתון. נחש מצויר בצבעי צהוב וכחול, הנע בין האותיות של שם הקורס: לומדים פייתון. הסלוגן המופיע מעל לשם הקורס הוא מיזם חינמי ללימוד תכנות בעברית.">
<span style="text-align: right; direction: rtl; float: right;">מודולים</span>
<span style="text-align: right; direction: rtl; float: right; clear: both;">הקדמה</span>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    מתכנתים העוסקים בקביעות במלאכתם, יזכו לעיתים תכופות להיתקל באתגרים בתחומים שונים.<br>
</p>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    דוגמה טובה לאתגר נפוץ שכזה היא יצירת מידע אקראי:
</p>
<ul style="text-align: right; direction: rtl; float: right; clear: both;">
    <li>מתכנת שיוצר משחק קלפים יצטרך לכתוב קוד לשליפת קלף אקראי מחפיסת הקלפים.</li>
    <li>מתכנת שמתקשה להחליט אם הוא רוצה להיות בפריז, ברומא או בקוטב הצפוני, יכתוב תוכנית שתבחר עבורו את היעד באקראיות.</li>
    <li>מתכנת שרוצה לבנות סימולציות למצבים מהחיים האמיתיים, יצטרך פעמים רבות להשתמש במידע אקראי.</li>
</ul>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    דוגמה טובה נוספת היא עבודה עם תאריכים:
</p>
<ul style="text-align: right; direction: rtl; float: right; clear: both;">
    <li>מתכנת שרוצה לדעת בעוד כמה זמן מגיע תאריך מסוים (יום הולדת, לדוגמה).</li>
    <li>מתכנת שרוצה לבדוק מה יהיה התאריך בעוד 100,000,000 שניות.</li>
    <li>מתכנת שקיבל מסמך עם תאריכי הלידה של כל אוכלוסיית ישראל, ורוצה לדעת מהו החודש שבו נולדים הכי הרבה תינוקות בישראל.</li>
</ul>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    פתירת האתגרים הללו עשויה להיות משימה מורכבת, ולטמון בחובה בעיות ומקרי קצה רבים.<br>
    תארו לעצמכם כמה זמן היה נחסך לו היה מישהו פותר את הבעיות הנפוצות הללו עבור כל המתכנתים!<br>
</p>
<span style="text-align: right; direction: rtl; float: right; clear: both;">הגדרה</span>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    כרעיון, <dfn>מודול</dfn> הוא פיסת תוכנה עצמאית המשרתת מטרה מוגדרת.<br>
    המטרה יכולה להיות, לדוגמה, טיפול בתאריכים, יצירת נתונים אקראיים או תקשורת עם אתרי אינטרנט.<br>
    בפייתון, מודול הוא קובץ המאגד הגדרות ופקודות, שיחדיו יוצרות אוסף כלים בתחום מסוים.<br>
</p>
<span style="text-align: right; direction: rtl; float: right; clear: both;">שימוש</span>
<span style="text-align: right; direction: rtl; float: right; clear: both;">יבוא<span>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    ניקח כדוגמה את המודול <code>random</code>, שמטרתו לעזור לנו ליצור מידע אקראי.<br>
    לפני שנוכל להשתמש ביכולותיו של המודול, נצטרך לבקש מפייתון לטעון אותו בעזרת מילת המפתח <code>import</code>:
</p>
End of explanation
import random
pokemons = ['Bulbasaur', 'Squirtle', 'Charmander']
starter_pokemon = random.choice(pokemons)
print(starter_pokemon)
Explanation: <p style="text-align: right; direction: rtl; float: right; clear: both;">
    פעולה זו טוענת את המודול ומאפשרת לנו להשתמש בו בהמשך הקוד. נהוג להגיד ש<dfn>ייבאנו</dfn> את המודול <code>random</code>.<br>
    עכשיו, כשהמודול יובא, אפשר להשתמש בו בקוד התוכנית שלנו באופן שיענה על הצורך ליצירת דברים אקראיים.<br>
    כדי להבין איך להשתמש במודול ומהן יכולותיו, נוכל לקרוא מידע נוסף על אודותיו במגוון דרכים:
</p>
<ol style="text-align: right; direction: rtl; float: right; clear: both;">
    <li>בעזרת התיעוד ב<a href="https://docs.python.org/3/library/random.html">אתר פייתון</a>, שאליו אפשר להגיע אם כותבים <q>python documentation random</q> במנועי חיפוש.</li>
    <li>בעזרת הפונקציה <var>dir</var> – נוכל לכתוב <code dir="ltr">dir(random)</code>.</li>
    <li>בג'ופיטר, אם נכתוב בתא קוד <code dir="ltr">random.</code> ונלחץ <kbd dir="ltr">Tab ↹</kbd>.</li>
</ol>
<span style="text-align: right; direction: rtl; float: right; clear: both;">דוגמאות לשימוש<span>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    במשחק הפוקימון "פוקימון אדום" אפשר לבחור בתור הפוקימון ההתחלתי את בלבזאור, את סקווירטל או את צ'רמנדר.<br>
    על הפוקימון הטוב ביותר לבחירה <a href="https://www.google.com/search?q=starter+pokemon+red%2Fblue">ניטשים ויכוחים רבים</a> עוד מאז שחרורו של המשחק ב־1996.<br>
    כדי לא להיקלע לעין הסערה, נבנה תוכנה שתבחר את הפוקימון עבורנו באופן אקראי.
</p>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    <a href="https://docs.python.org/3/library/random.html">התיעוד</a> של המודול <code>random</code>, כולל פונקציה בשם <var>choice</var>, שבאמצעותה נוכל לבחור איבר אקראי מתוך iterable.<br>
    השימוש בתיעוד מומלץ במיוחד בהקשרי מודולים, שכן ההסברים שם בהירים, ופעמים רבות מובאות שם דוגמאות לשימוש בפונקציות של המודול.<br>
    נייבא את <code>random</code> ואז נשתמש ב־<var>choice</var>:
</p>
End of explanation
import math
print(math.factorial(6))  # 1 * 2 * 3 * 4 * 5 * 6
Explanation: <div class="align-center" style="display: flex; text-align: right; direction: rtl;">
    <div style="display: flex; width: 10%; float: right; ">
        <img src="images/warning.png" style="height: 50px !important;" alt="אזהרה!"> 
    </div>
    <div style="width: 90%">
        <p style="text-align: right; direction: rtl;">
            לא היינו יכולים להשתמש ב־<code>random.choice</code> לולא היינו מייבאים את <code>random</code>.<br>
            מרגע שייבאנו את המודול – נוכל להשתמש בו לאורך כל הקוד.
        </p>
    </div>
</div>
<div class="align-center" style="display: flex; text-align: right; direction: rtl; clear: both;">
    <div style="display: flex; width: 10%; float: right; clear: both;">
        <img src="images/exercise.svg" style="height: 50px !important;" alt="תרגול"> 
    </div>
    <div style="width: 70%">
        <p style="text-align: right; direction: rtl; float: right; clear: both;">
            השתמשו בפונקציה הנמצאת במודול <code>random</code> כדי לדמות הטלת קובייה בעלת 20 פאות (<a href="https://en.wikipedia.org/wiki/D20_System">D20</a>).<br>
            הגרילו מספר בין 1 ל־20, הפעם בעזרת פונקציה שהיא לא <code>choice</code>.<br>
            השתמשו במקורות המידע שצוינו כדי למצוא את הפונקציה המתאימה למשימה.
        </p>
    </div>
    <div style="display: flex; width: 20%; border-right: 0.1rem solid #A5A5A5; padding: 1rem 2rem;">
        <p style="text-align: center; direction: rtl; justify-content: center; align-items: center; clear: both;">
            <strong>חשוב!</strong><br>
            פתרו לפני שתמשיכו!
        </p>
    </div>
</div>
<span style="text-align: right; direction: rtl; float: right; clear: both;">יתרונות<span>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    אלו, בין היתר, היתרונות של שימוש במודולים הקיימים בפייתון:
</p>
<ol style="text-align: right; direction: rtl; float: right; clear: both;">
    <li>
        <strong>פישוט</strong>: מודול לרוב יפתור לנו בעיה אחת, קטנה ומוגדרת היטב.
    </li>
    <li>
        <strong>הפרדה</strong>: המודול מופרד מהקוד שלנו, ישאיר את הקוד שלנו נקי ויעזור לנו להתמקד בבעיה שאנחנו מעוניינים לפתור. 
    </li>
    <li>
        <strong>מִחזוּר</strong>: מודול מאפשר לנו להשתמש בקוד שכתבנו בפרויקטים רבים, מבלי לכתוב את הקוד מחדש בכל פרויקט. 
    </li>
    <li>
        <strong>רמת גימור</strong>: המודולים הרשמיים של פייתון מתוחזקים ברמה גבוהה, יש בהם מעט באגים והם מכסים מקרי קצה רבים. 
    </li>
</ol>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    רוב התוכנות שבהן אתם משתמשים נעזרות במספר לא מועט של מודולים.<br>
    כרגע נתמקד בשימוש במודולים שמגיעים עם פייתון, אך בעתיד נשתמש במודולים שיצרו מתכנתים אחרים, ואף ניצור מודולים בעצמנו.
</p>
<span style="text-align: right; direction: rtl; float: right; clear: both;">תרגיל ביניים: יצירת סיסמה<span>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    איש דג החרב מגדיר "מחולל סיסמאות חזקות" כך:
</p>
<ol style="text-align: right; direction: rtl; float: right; clear: both;">
    <li>בקריאה לפונקציית המחולל, המחולל יחזיר סיסמה חזקה.</li>
    <li>אורכה של סיסמה חזקה הוא בין 12 ל־20 תווים.</li>
    <li>לפחות בחלק מהסיסמאות שמייצר המחולל יהיו גם אותיות גדולות, גם אותיות קטנות וגם מספרים.</li>
</ol>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    כתבו מחולל סיסמאות חזקות.
</p>
<div class="align-center" style="display: flex; text-align: right; direction: rtl;">
    <div style="display: flex; width: 10%; float: right; ">
        <img src="images/warning.png" style="height: 50px !important;" alt="אזהרה!"> 
    </div>
    <div style="width: 90%">
        <p style="text-align: right; direction: rtl;">
            על אף שזהו תרגיל נחמד, לעולם לא נשתמש ב־<code>random</code> לצורכי אבטחת מידע.<br>
            להרחבה, קראו על יתרונותיו של המודול <code><a href="https://docs.python.org/3/library/secrets.html#module-secrets">secrets</a></code>.
        </p>
    </div>
</div>
<span style="text-align: right; direction: rtl; float: right; clear: both;">יבוא מתוך מודול<span>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    עצרת של המספר $n$ (המסומנת כ־$n!$) היא מכפלת כל המספרים השלמים החיוביים עד $n$, כולל.<br>
    נחשב את העצרת של 6 באמצעות המודול <code>math</code>:
</p>
End of explanation
from math import factorial
print(factorial(6))
Explanation: <p style="text-align: right; direction: rtl; float: right; clear: both;">
    במקרה שהצגנו, אין לנו באמת צורך בכל הפונקציות הנמצאות במודול <code>math</code>, אלא רק בפונקציה <var>factorial</var>.<br>
    תעלול נחמד שאפשר לעשות הוא לייבא רק את factorial באמצעות מילת המפתח <code>from</code>:<br>
</p>
End of explanation
from math import cos, pi
print(cos(pi))
Explanation: <p style="text-align: right; direction: rtl; float: right; clear: both;">
    כדאי לשים לב שלאחר שייבאנו בעזרת <code>from</code> נשתמש ישירות ב־factorial, מבלי להזכיר את השייכות שלה למודול <code>math</code>.<br>
    אפשר גם לייבא יותר משם אחד מאותו מודול, במכה אחת:
</p>
End of explanation
from math import e
# (דמיינו הרבה קוד כאן)
print(e)  # ?לרוב הוא שם משתנה שתוכנו שגיאה, האם זה המקרה גם פה e ?מאיפה זה הגיע
Explanation: <p style="text-align: right; direction: rtl; float: right; clear: both;">
    באופן כללי, העדיפו לייבא את המודול כולו ולא חלקים מתוכו.<br>
    זה יעזור לכם להימנע מיצירת מקרים מבלבלים כמו זה:<br>
</p>
End of explanation
from math import *
Explanation: <p style="text-align: right; direction: rtl; float: right; clear: both;">
    אם ממשיכים בכיוון, פייתון מאפשרת לנו לעשות את הדבר המזעזע הבא:
</p>
End of explanation
print(f"floor(5.5) --> {floor(5.5)}")
print(f"ceil(5.5)  --> {ceil(5.5)}")
print(f"pow(9, 2)  --> {pow(9, 2)}")
print(f"e          --> {e}")
Explanation: <p style="text-align: right; direction: rtl; float: right; clear: both;">
    יבוא בעזרת כוכבית יגרום לכך שכל מה שמוגדר במודול "יישפך" לתוך התוכנית שלנו.<br>
    זה יאפשר לנו להשתמש בכל התוכן של <code>math</code> בלי להזכיר את שם המודול:
</p>
End of explanation
import turtle
turtle.speed(10)
for i in range(400):
    turtle.forward(50 + i)
    turtle.right(91)
turtle.done()
Explanation: <p style="text-align: right; direction: rtl; float: right; clear: both;">
    פרקטיקה זו נחשבת מאוד לא מנומסת, ואתם מתבקשים לא להשתמש בה, אלא אם כן אלו ההוראות הכתובות בתיעוד של המודול.<br>
    ישנן לא מעט סיבות הגיוניות מאחורי איסור זה:
</p>
<ul style="text-align: right; direction: rtl; float: right; clear: both;">
    <li>זה מקשה על מתכנת שקורא את הקוד להבין איפה הוגדרו <var>ceil</var>, <var>floor</var>, <var>e</var> ו־<var>pow</var>.</li>
    <li>אנחנו "מזהמים" את הסביבה שלנו בהגדרות רבות שלעולם לא נשתמש בהן.</li>
    <li>חלק מהכלים שבהם תשתמשו בעתיד לא ידעו לזהות את השמות הללו, כיוון שלא ייבאתם אותם מפורשות.</li>
</ul>
<span style="text-align: right; direction: rtl; float: right; clear: both;">שינוי שם ביבוא<span>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    המודול <code>turtle</code> הוא דרך פופולרית ללמד ילדים תכנות באמצעים גרפיים.<br>
    תכנות ב־turtle הוא מעין משחק: ישנו צב שהולך במרחב, ומשאיר צבע בכל מקום שאליו הוא מגיע.<br>
    אפשר להורות לצב בכמה מעלות להסתובב לכל כיוון, ולאיזה מרחק ללכת בכיוון שאליו הוא מופנה.<br>
    כך, בסוף מסלול הטיול של הצב, מתקבל ציור מלא חן.<br>
    הרעיון נוצר כחלק משפת התכנות <em>Logo</em> בשנת 1967.
</p>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    נראה דוגמה לתוצר של ריצת תוכנית שכזו, שבה אנחנו משרטטים 100 ריבועים בהיסט של מעלה אחת בכל פעם.<br>
    אנחנו ממליצים לשחק עם המודול קצת (זה כיף!) ולראות אם אתם מצליחים לצייר כוכב, לדוגמה :)
</p>
End of explanation
import turtle as kipik
kipik.speed(100)  # קיפיק מהיר הרבה יותר מצב רגיל
for i in range(400):
    kipik.forward(50 + i)
    kipik.right(91)
kipik.done()
Explanation: <div class="align-center" style="display: flex; text-align: right; direction: rtl;">
    <div style="display: flex; width: 10%; float: right; ">
        <img src="images/warning.png" style="height: 50px !important;" alt="אזהרה!"> 
    </div>
    <div style="width: 90%">
        <p style="text-align: right; direction: rtl;">
            הרצת קוד של <code>turtle</code> תפתח לכם חלון חדש בו יצויר פלט התוכנית.<br>
            כדי להמשיך להריץ את התאים במחברת, סגרו את החלון.
        </p>
    </div>
</div>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    כדי לשנות את השם שבו אנחנו מתייחסים למודול, ניעזר במילת המפתח <code>as</code>.<br>
    לדוגמה:
</p>
End of explanation
import datetime
print("What is the time now?")
print(datetime.datetime.now())
Explanation: <p style="text-align: right; direction: rtl; float: right; clear: both;">
    כך אפשר לקצר את שם המודול שאנחנו מייבאים, ולהימנע מסרבול מיותר.<br>
    למרות זאת, יבוא מודול תחת שם אחר נחשב פרקטיקה לא מנומסת, שעלולה לבלבל קוראים שבקיאים בשמות המודולים הקיימים.
</p>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    ישנם שני מקרים יוצאי דופן, שבהם השימוש ב־<code>as</code> נחשב רצוי:
</p>
<ol style="text-align: right; direction: rtl; float: right; clear: both;">
    <li>כאשר מבקשים מאיתנו להשתמש ב־<code>as</code> במסמכי התיעוד של המודול.</li>
    <li>כאשר אנחנו רוצים להתנסות בדברים ולחסוך זמן, נקצר את השמות של המודולים, הפונקציות או הקבועים שאותם אנחנו מייבאים.</li>
</ol>
<span style="text-align: right; direction: rtl; float: right; clear: both;">נימוסים והליכות<span>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    לשימוש במודולים יש כללי סגנון שמוסכמים על רוב המתכנתים.<br>
    הם מופיעים במסמך בשם <a href="https://www.python.org/dev/peps/pep-0008/#imports">PEP8</a>, שמטרתו להגדיר איך נראה קוד פייתון המסוגנן כראוי.<br>
    הנה כמה כללים שראוי שתעקבו אחריהם:
</p>
<ul style="text-align: right; direction: rtl; float: right; clear: both;">
    <li>יבוא המודולים תמיד יתבצע בראש הקוד, לפני כל דבר אחר.</li>
    <li>כאשר מייבאים יותר ממודול אחד, סדר היבוא צריך להיות מילוני – לפי שם המודול שיובא.</li>
    <li>טכנית, אפשר לייבא יותר ממודול אחד בשורה, אם נפריד את שמות המודולים בפסיק. מעשית זה לא מנומס.</li>
    <li>כאשר משתמשים ב־<code>from</code> ליבוא של יותר משם אחד – השמות צריכים להיות מסודרים בסדר מילוני.</li>
    <li>יש להימנע משימוש ביבוא בעזרת כוכבית.</li>
</ul>
<span style="text-align: right; direction: rtl; float: right; clear: both;">דוגמאות נוספות<span>
<p style="text-align: right; direction: rtl; float: right; clear: both;">
    מה התאריך היום?
</p>
End of explanation
from calendar import prmonth as print_calendar  # לא מנומס, אבל דוגמה טובה
import datetime
current_date = datetime.datetime.now()
print_calendar(current_date.year, current_date.month)
Explanation: <p style="text-align: right; direction: rtl; float: right; clear: both;">
    נשתמש במודול <code>calendar</code> כדי להדפיס את לוח השנה של החודש הנוכחי:
</p>
End of explanation
<END_TASK>