סיימתם את המדריך. הקלדתם כל שורה, הרצתם כל דוגמה, ראיתם שהכל עובד. ואז אתם פותחים עורך קוד ריק כדי לבנות משהו משלכם – וכלום לא עולה לכם בראש. אף לא רעיון אחד.
כמעט כל מתחיל נתקל במלכודת המדריכים (בדרך כלל מיד אחרי קורס ה-Python הראשון שלו). אפשר לקרוא על לולאות for יום שלם, אבל ברגע שאף אחד לא אומר לכם מה להקליד, המוח פשוט קופא.
לדעת איך קוד נראה ולכתוב אותו בעצמכם אלו שני כישורים שונים לחלוטין. הדרך לעבור מהראשון לשני היא פשוט לבנות דברים. בעצמכם.
ולא, זה לא חייב להיות שימושי. אתם לא משיקים עכשיו אפליקציה מסחרית או תורמים לקוד פתוח. אתם פשוט צריכים תוכניות קטנות ושטותיות שעובדות – אחת אחרי השנייה – עד שהמוח שלכם יפסיק לקפוא.
בדיוק בשביל זה כתבתי את הפוסט הזה. לפניכם 13 פרויקטים פשוטים בפייתון, שאת כל אחד מהם אפשר לסיים תוך 10 דקות עד שעה. כל פרויקט מלמד דבר אחד או שניים, לא יותר. וכל אחד מהם מסתיים בקובץ שרץ על המחשב שלכם, ונכתב על ידיכם*.
עדיין לא מרגישים מוכנים לבנות? אין שום בעיה! כל מסע גדול מתחיל ביסודות. למדו את יסודות המחשב ובנו בסיס חזק ויציב לפני שאתם עושים את הצעד הבא.
למה לבנות במקום לצפות במדריכים?
כי מדריכים נותנים תחושה של למידה, אבל הם עושים את החשיבה במקומכם. כשאתם בונים, אתם אלה שמחליטים. אתם צריכים לתת שם למשתנה, לבחור את הלולאה הנכונה, ולהבין למה הקוד שלכם הדפיס None במקום המספר שרציתם.
פרויקטים קטנים גם פותרים את בעיית המוטיבציה. פרויקט של שבועיים נשמע מרשים, עד שאתם נתקעים ונוטשים אותו לנצח. פרויקט של 30 דקות מסתיים היום. אתם מקבלים קובץ עובד וניצחון קטן, והניצחון הזה הוא מה שיגרום לכם לפתוח את עורך הקוד שוב מחר.

1. משחק ניחוש מספרים
הקלאסיקה בהתגלמותה. המחשב בוחר מספר בין 1 ל-100, אתם מנחשים, והוא אומר לכם "גבוה מדי" או "נמוך מדי" עד שאתם קולעים בול. התוכנית האמיתית הראשונה של רוב המתכנתים, ולא בכדי.
import random
secret = random.randint(1, 100)
guesses = 0
while True:
guess = int(input("Guess a number (1-100): "))
guesses += 1
if guess < secret:
print("Too low")
elif guess > secret:
print("Too high")
else:
print(f"Got it in {guesses} guesses")
break
מה שתלמדו מזה: לולאות while, תנאים (conditionals), מודול ה-random, והמרת קלט למספר. ברגע שזה עובד, הוסיפו מגבלת ניחושים מקסימלית כדי שהמשחק יסתיים אם לא תצליחו לנחש בזמן.
2. מחולל סיפורי "השלם את החסר" (Mad Libs)
בקשו מהמשתמש כמה מילים – שם עצם, פועל, תואר – שתלו אותן בתוך משפט משעשע, והדפיסו את התוצאה. עשר דקות, מתחילת העבודה ועד הסוף.
noun = input("Noun: ")
verb = input("Verb: ")
adjective = input("Adjective: ")
place = input("A place: ")
story = f"Yesterday I went to the {place} and saw a {adjective} {noun} that started to {verb}."
print(story)
3. מטיל קוביות
הטילו קובייה אחת. הטילו שתיים. הטילו קובייה בעלת 20 פאות לערב משחקים. שתי שורות של לוגיקה, וכל מה שתרצו לעטוף אותן בו.
import random
def roll(sides=6, count=1):
return [random.randint(1, sides) for _ in range(count)]
print(roll(6, 2)) # rolls two six-sided dice
print(roll(20)) # rolls one d20
מה שתלמדו מזה: פונקציות עם ערכי ברירת מחדל, list comprehensions, וקריאה לאותה פונקציה עם קלטים שונים. ברגע שזה עובד, הוסיפו תפריט קטן כדי שהמשתמש יוכל לבחור את מספר הפאות וכמות הקוביות בזמן ההרצה.
4. מחשבון פשוט
חיבור, חיסור, כפל, חילוק. שני מספרים, אופרטור אחד. כן, מחשבונים כבר קיימים בעולם. זה לא העניין. המטרה היא לחבר את החלקים בעצמכם ולשים לב למה ששכחתם בפעם הראשונה.
def calc(a, b, op):
if op == "+": return a + b
if op == "-": return a - b
if op == "*": return a * b
if op == "/":
if b == 0:
return "Can't divide by zero"
return a / b
a = float(input("First number: "))
op = input("Operator (+, -, *, /): ")
b = float(input("Second number: "))
print(calc(a, b, op))
מה שתלמדו מזה: כתיבת פונקציה, הסתעפות תנאים עם if, וטיפול במקרה הקצה המאתגר (חלוקה באפס). רוצים אתגר? הוסיפו אפשרות לשרשור פעולות חשבוניות.
5. אבן, נייר ומספריים
אתם בוחרים אחד, המחשב בוחר אחד, והחוקים קובעים מי מנצח. מעולה לתרגול לולאת משחק קטנה, ולהתרגלות לשימוש במילון (dictionary) כטבלת חיפוש (lookup table).
import random
options = ["rock", "paper", "scissors"]
wins_against = {"rock": "scissors", "paper": "rock", "scissors": "paper"}
you = input("Pick rock, paper, or scissors: ").lower()
cpu = random.choice(options)
print(f"Computer picked {cpu}.")
if you == cpu:
print("Tie")
elif wins_against[you] == cpu:
print("You win")
else:
print("Computer wins")
מה שתלמדו מזה: שימוש במילונים לחיפוש מהיר, random.choice, והשוואת מחרוזות. עטפו את זה בתוך לולאת while ונהלו מעקב אחר הניקוד לאורך הסיבובים – והנה, בניתם משחק קטן תוך אחר צהריים אחד.
6. מחולל סיסמאות
צרו סיסמה אקראית באורך N תווים המורכבת מאותיות, מספרים וסימנים מיוחדים. שימושי, פשוט, ומוכן תוך 15 דקות. מסוג הדברים שבאמת עשויים לשמש אתכם ביומיום.
import random
import string
def make_password(length=12):
pool = string.ascii_letters + string.digits + string.punctuation
return "".join(random.choice(pool) for _ in range(length))
print(make_password(16))
מה שתלמדו מזה: שימוש במודול string, חיבור תווים למחרוזת אחת, ושליפת תווים אקראיים מתוך מאגר. הוסיפו אפשרות לוויתור על סימנים מיוחדים, עבור מערכות שלא אוהבות סימני פיסוק – ויש יותר כאלה ממה שאתם חושבים.
7. רשימת משימות (To-Do) בטרמינל
תפריט פשוט של הוספה / הצגה / מחיקה, ישירות בתוך הטרמינל. בלי בסיס נתונים, בלי הגדרות מסובכות, רק רשימת פייתון פשוטה שקיימת עד שאתם סוגרים את התוכנית. זה די והותר כדי ללמוד ממנו.
todos = []
while True:
cmd = input("Command (add/list/remove/quit): ")
if cmd == "add":
todos.append(input("Task: "))
elif cmd == "list":
for i, t in enumerate(todos, 1):
print(f"{i}. {t}")
elif cmd == "remove":
idx = int(input("Index to remove: ")) - 1
if 0 <= idx < len(todos):
todos.pop(idx)
elif cmd == "quit":
break
מה שתלמדו מזה: תוכנית מבוססת תפריט, שינוי רשימות, שימוש ב-enumerate, והטריק הקטן להצגת מספרים שמתחילים מ-1 (במקום מ-0). בגרסה הבאה תוכלו לשמור את המשימות לקובץ טקסט כדי שהן יישמרו גם בין הרצות. שם זה כבר מתחיל להרגיש כמו אפליקציה אמיתית.
Coddy הופך את תרגול הפייתון להרגל יומי עם רצפי למידה משחקיים (streaks), נקודות ניסיון (XP) ושיעורים קצרים וממוקדים שיגרמו לכם לפתוח את האפליקציה גם כשהמוטיבציה יורדת.
8. מונה מילים ותווים
הדביקו טקסט וקבלו את מספר המילים, מספר התווים והמילה הנפוצה ביותר. שימושי מאוד כשאתם כותבים תחת מגבלת מילים קשיחה – ויש המון כאלה ברגע שמתחילים לחפש.
from collections import Counter
text = input("Paste your text: ")
words = text.split()
chars = len(text)
most_common = Counter(words).most_common(1)
print(f"Words: {len(words)}")
print(f"Characters: {chars}")
print(f"Most common word: {most_common[0][0]} ({most_common[0][1]} times)")
מה שתלמדו מזה: שימוש במודול collections, הפונקציה .split(), וקריאת ערכים מתוך מה ש-Counter מחזיר. נסו להתעלם ממילים קצרות ונפוצות (כמו "את", "של", "ה-") כדי לקבל תוצאות טובות יותר – אחרת המילה המובילה שלכם תמיד תהיה מילת קישור שלא אומרת כלום.
9. מחשבון טיפים
סכום החשבון, אחוז הטיפ, וחלוקה בין אנשים. מסוג הכלים הקטנים שבאמת תשתמשו בהם גם בעוד שנים, הרבה אחרי שתשכחו שאתם אלה שכתבתם אותם.
bill = float(input("Bill total: "))
tip_pct = float(input("Tip percentage (e.g., 18): "))
people = int(input("How many people: "))
tip = bill * (tip_pct / 100)
total = bill + tip
per_person = total / people
print(f"Tip: {tip:.2f}")
print(f"Total: {total:.2f}")
print(f"Per person: {per_person:.2f}")
מה שתלמדו מזה: אופרטורים מתמטיים, המרת קלט למספרים, ועיגול לשתי ספרות אחרי הנקודה באמצעות :.2f. הרחיבו את הפרויקט על ידי עיגול הסכום לאדם כלפי מעלה, כדי שאף אחד בשולחן לא ירגיש מקופח.
10. טיימר ספירה לאחור
אתם מקלידים את מספר השניות, והתוכנית סופרת לאחור עד לאפס. קטן, מספק, ובאמת שימושי כטיימר להפסקות או לשיטת פומודורו ברגע שהוא מוכן.
import time
seconds = int(input("Seconds: "))
while seconds >= 0:
mins, secs = divmod(seconds, 60)
print(f"{mins:02d}:{secs:02d}", end="\r")
time.sleep(1)
seconds -= 1
print("Time's up ")
מה שתלמדו מזה: שימוש במודול time, הפונקציה divmod לפיצול מספרים לדקות ושניות, והטריק של \r לעדכון שורת הפלט הנוכחית במקום. ה-end="\r" הזה הוא מה שגורם לטיימר להרגיש אמיתי, במקום להציף את הטרמינל שלכם בחומת טקסט אינסופית.
11. מחולל ציטוטים אקראיים
רשימה של ציטוטים – מעוררי השראה, מצחיקים, קשורים לתכנות, מה שתרצו – והתוכנית מדפיסה אחד מהם באקראי בכל הרצה. כמעט קל מדי. תעשו את זה בכל זאת.
import random
quotes = [
"The only way to learn a new programming language is by writing programs in it.",
"Programs must be written for people to read, and only incidentally for machines to execute.",
"Premature optimization is the root of all evil.",
"Simplicity is the soul of efficiency.",
"Code is like humor. When you have to explain it, it's bad.",
]
print(random.choice(quotes))
מה שתלמדו מזה: יסודות העבודה עם רשימות, random.choice, והתוכנית השימושית הקטנה ביותר בשפה כולה. חברו אותה להפעלת הטרמינל שלכם כדי לקבל ציטוט חדש בכל פעם שאתם פותחים חלון פקודה – מסוג הדברים הקטנים והשטותיים שהופכים את התכנות להרבה יותר מהנה.
12. איש תלוי (מפושט)
בחרו מילה סודית, הציגו קווים תחתונים, תנו למשתמש לנחש אותיות, וסיימו את המשחק אחרי שישה ניחושים שגויים. פרויקט קצת יותר מורכב מהאחרים כאן, אבל עדיין בר ביצוע תוך כשעה אם שומרים על פשטות.
import random
words = ["python", "syntax", "variable", "function", "module"]
secret = random.choice(words)
guessed = set()
wrong = 0
while wrong < 6:
display = "".join(c if c in guessed else "_" for c in secret)
print(display)
if "_" not in display:
print("You won")
break
letter = input("Guess a letter: ").lower()
if letter in secret:
guessed.add(letter)
else:
wrong += 1
print(f"Wrong. {6 - wrong} tries left.")
else:
print(f"You lost. The word was {secret}.")
מה שתלמדו מזה: שימוש בקבוצות (sets), בניית מחרוזת עם תנאי פנימי, ומבנה ה-while-else הפחות מוכר – בלוק ה-else רץ רק כאשר הלולאה מסתיימת ללא break. נמאס לכם מאותן חמש מילים קבועות? קראו אותן מתוך קובץ במקום זאת. (וזה יימאס עליכם. מהר מאוד.)
13. ממיר יחידות
המירו בין יחידות מידה נפוצות: צלזיוס לפרנהייט, קילומטרים למייל, קילוגרמים לפאונד. פרקטי, מהיר לביצוע, ומסוג הדברים שתמצאו את עצמכם משתמשים בהם בהמשך.
def c_to_f(c):
return c * 9/5 + 32
def km_to_mi(km):
return km * 0.621371
def kg_to_lb(kg):
return kg * 2.20462
print("1. Celsius to Fahrenheit")
print("2. Kilometers to miles")
print("3. Kilograms to pounds")
choice = input("Pick a converter: ")
value = float(input("Value: "))
if choice == "1":
print(c_to_f(value))
elif choice == "2":
print(km_to_mi(value))
elif choice == "3":
print(kg_to_lb(value))
מה שתלמדו מזה: כתיבת מספר פונקציות קטנות בקובץ אחד, תפריט בסיסי, והסתעפות תנאים לפי מה שהמשתמש מקליד. ברגע שההמרות הישירות עובדות, הוסיפו את ההמרות ההפוכות (פרנהייט לצלזיוס, מייל לקילומטר). אותו רעיון, חצי מהמאמץ, כפול תרגול.
איך לגרום לפרויקטים האלה באמת להיקלט?
לבנות פרויקט אחד זה נחמד לרגע. לבנות פרויקט אחד ביום במשך שבועיים זה כבר הרגל. וההבדל בין אנשים שעוברים את שלב המתחילים בפייתון לבין אלה שלא, הוא לא כישרון או זמן פנוי. הוא פשוט ההתמדה בתרגול.
הנה כמה דברים שיעזרו לכם, לפי סדר החשיבות:
-
הקלידו את הקוד, אל תעתיקו ותדביקו! משעמם ורפטטיבי, נכון. אבל זו גם הדרך היחידה שבה התבניות ייכנסו לכם לאצבעות ולא רק לעיניים. בפעם הראשונה שתקלידו
import randomמהזיכרון, משהו פתאום יתחבר. -
שברו את הקוד בכוונה. ברגע שהקוד עובד, מחקו שורה, שימו פונקציה בהערה, או שנו שם של משתנה, ותראו מה קורה. התיקון של השגיאה ילמד אתכם הרבה יותר מאשר עצם הבנייה של הפרויקט. (זה לא נשמע הגיוני עד שמנסים את זה בעצמכם).
-
בנו את אותו פרויקט פעמיים. שבוע לאחר מכן, נסו לבנות את משחק ניחוש המספרים שוב מאפס. הפעם השנייה תראה לכם מה באמת נשאר לכם בראש, וזה עלול להיות פחות ממה שקיוויתם. וזה בסדר גמור!
-
הוסיפו תכונה אחת נוספת. קחו כל פרויקט מהרשימה למעלה והוסיפו לו שדרוג קטן משלכם. שמרו את רשימת המשימות לקובץ. גרמו למטיל הקוביות להדפיס את התוצאות אחת אחרי השנייה. התוספת הקטנה הזו היא המקום שבו הלמידה האמיתית מתרחשת, כי אף אחד לא כתב מדריך מדויק לאיך לעשות את הגרסה הספציפית שלכם.
אם תרגול יומי הוא החלק שבו אתם תמיד הולכים לאיבוד, זו בדיוק הסיבה ש-Coddy קיים. שיעורי פייתון קצרים של חמש דקות, מערכת רצפים (streaks) שמחזירה אתכם למסלול כשהמוטיבציה יורדת, ורמזים מבוססי בינה מלאכותית מבאגסי (Bugsy) ישירות בתוך השיעור כשאתם נתקעים.
כל קורס פתוח להתחלה בחינם, כולל פייתון. בנינו אותו בדיוק עבור השלב שבו אתם נמצאים כרגע: סיימתם עם המדריכים הפסיביים, אתם עדיין לא מספיק בטוחים בעצמכם, ומחפשים תרגול מעשי שלא ישתה לכם את כל הערב.
מה כדאי לבנות הלאה?
כשהפרויקטים שלמעלה יתחילו להרגיש לכם קלים מדי, דעו שכבר חציתם את הגבול שניסיתם לחצות. עבודה מעולה! התחנה הבאה היא פרויקטים ברמת ביניים – כאלה שמשלבים ספרייה או שתיים וקצת קלט/פלט של קבצים או רשת. הנה כמה רעיונות שיעלו אתכם שלב:
- אפליקציית מזג אוויר המשתמשת בספריית
requestsוב-API חינמי למזג אוויר - סורק אתרים (web scraper) עם
BeautifulSoupשאוסף כותרות מאתר חדשות שאתם קוראים - משחק הרפתקאות מבוסס טקסט עם כמה חדרים ורשימת ציוד (inventory)
- טיימר פומודורו שמתעד את סבבי העבודה שלכם לקובץ CSV
- אפליקציית Flask פשוטה שמציגה דף אינטרנט יחיד עם בדיחה אקראית
אף אחד מאלה אינו פרויקט מתקדם מדי. הם פשוט משלבים שניים או שלושה דברים שאתם כבר יודעים, בתוספת מודול חדש אחד. בחרו את מה שנשמע לכם הכי כיף, כי זה הפרויקט שבאמת תסיימו.
מדריכים קורסים ברגע שהם משחררים לכם את היד ומבקשים מכם לחשוב בעצמכם. פרויקטים, אפילו השטותיים ביותר, מאלצים אתכם לחשוב. תעשו מספיק כאלה, ומלכודת המדריכים תפסיק להיות מלכודת.
Coddy מוציא אתכם מצפייה פסיבית ומעביר אתכם לכתיבת קוד אמיתית עם שיעורי פייתון של חמש דקות, רצפים יומיים, ובאגסי – עוזר ה-AI שנותן לכם רמזים במקום לגלות לכם את התשובה.
Share this article
About the Author
Coddy Team
Editorial Team
Frequently Asked Questions
מהו פרויקט ה-Python הקל ביותר למתחילים?
משחק ניחוש המספרים הוא התשובה הסטנדרטית. הוא קצר, משתמש בקלטים, לולאות ותנאים בתוכנית אחת, ומרגיש כמו משחק אמיתי כשמריצים אותו. רוב האנשים יכולים לסיים אותו ב-20 דקות, אפילו אם הם רק למדו עכשיו מה לולאת while עושה.
כמה זמן אמורים לקחת פרויקטי Python קלים?
בין עשר דקות לשעה. אם אתם מבלים שלוש שעות על פרויקט אחד, הוא כנראה קשה מדי לרמה הנוכחית שלכם, או שנפלתם למחילת ארנב של debugging שכדאי לצאת ממנה. בחרו פרויקט קטן יותר, סיימו אותו, ואז תחזרו.
האם אני צריך להתקין משהו כדי לעשות את הפרויקטים האלה?
כן אם אתם רוצים להריץ אותם מקומית, לא אם לא. התקנת Python מ-python.org לוקחת בערך חמש דקות. או שתדלגו על ההתקנה לחלוטין ותריצו אותם ב-playground בדפדפן כמו זה שבתוך Coddy, שזו האפשרות ללא צורך בהגדרות מוקדמות.
האם פרויקטי Python אלו טובים לקורות חיים?
לא בפני עצמם, לא. פרויקט לקורות חיים בדרך כלל צריך יותר עומק, כמו web app קטנה, סקריפט שהשתמשתם בו כדי לאוטומט משהו אמיתי בעבודה, או תרומה לפרויקט open-source. ה-13 שכאן הם אבני דרך לבניית ביטחון עצמי, לא פרויקטים לתיק עבודות. הם מכינים אתכם לבנות את הדברים הראויים לקורות חיים בהמשך.
אילו מושגי Python אלמד מהפרויקטים האלה?
לאורך ה-13, תיגעו במשתנים, קלט ופלט, תנאים, לולאות, פונקציות, רשימות, מילונים, קבוצות, המודול random, המודול time, f-strings, list comprehensions, וכמה מודולים מהספרייה הסטנדרטית כמו collections ו-string. זהו בסיס עבודה מוצק של השפה.
מה אם הקוד שלי לא עובד?
קראו את הודעת השגיאה. רוב שגיאות המתחילים אומרות כמעט בדיוק מה השתבש, בדרך כלל בשורה ממש מעל המקום שבו התחלתם להיכנס לפאניקה. חפשו בגוגל את הודעת השגיאה, בקשו מעוזר AI כמו Bugsy להסביר אותה, או הדביקו אותה בפורום. Debugging הוא מיומנות שנבנית באותו אופן שבו כתיבת קוד נבנית, דרך תרגול.
האם אני יכול לעשות את הפרויקטים האלה בטלפון?
כן. Python רצה בסביבות פיתוח לנייד, כולל האפליקציה של Coddy, שיש בה playground מובנה לקוד. לא תכתבו תוכנת enterprise על מסך בגודל של כף היד שלכם, אבל פרויקטי תרגול קטנים עובדים מצוין בצורה הזו, והרבה אנשים מתרגלים יותר בטלפון מאשר אי פעם היו מתרגלים בלפטופ.
מה השלב הבא אחרי פרויקטי Python קלים?
פרויקטים ברמה בינונית המשלבים יותר מושגים: web scraper קטן, לקוח API, אפליקציית Flask או Django שמגישה דף, סקריפט שמעבד קבצים בתיקייה. כל דבר שמושך ספרייה חדשה ומתחבר למשהו חיצוני הוא שלב הבא שימושי. בחרו אחד שפותר בעיה קטנה בחיים שלכם. זה הפרויקט שבאמת תסיימו.



