# הכנה לבחינה: חלק הפייתון בשאלון 735911
> **השאלון:** "מבוא לשפות תכנות (פייתון) ובסיסי נתונים", 735911. חלק א׳ הוא **פייתון**, וחלק ב׳ הוא בסיסי נתונים.
> הדף הזה בנוי לפי **מסמך ההנחיות והדגשים של משרד החינוך לתשפ"ז (2027)**. **מבנה השאלון נשאר כמו בשנה שעברה.** משרד החינוך מבקש ללמוד את כל התכנים שבתכנית הלימודים, לתרגל בחינות משנים קודמות, ולשים דגש מיוחד על הנושאים שבטבלה.
>
> 📘 **[12 דוגמאות פתורות, צעד אחרי צעד](/python-course-hebrew/exam-prep/examples.html)** · 🎯 **[46 תרגילים לפי ההנחיות](/python-course-hebrew/exam-prep/exercises.html)** · ✅ **[פתרונות, עם הפלט האמיתי של כל פתרון](/python-course-hebrew/exam-prep/solutions.html)**
>
> **רמות הקושי:** 🟢 בסיסי · 🟡 בינוני · 🔴 מתקדם. בכל נושא: קודם הדוגמאות הפתורות, אחר כך התרגילים מהקל לקשה.
---
## 1. הנושאים שמשרד החינוך ביקש להדגיש
| # | הנושא | מה צריך לדעת | איפה בקורס | דוגמאות ותרגילים |
|:-:|---|---|:-:|:-:|
| 1 | **פירוק מספר שלם לספרות** | `num % 10` היא הספרה האחרונה, ו‑`num // 10` הוא המספר בלי הספרה האחרונה. חוזרים על זה ב‑`while num > 0` | יחידה 3 (אופרטורים), יחידה 7 (לולאות) | [נושא 1](/python-course-hebrew/exam-prep/examples.html#topic-1) |
| 2 | **חזקה `**` עם בסיס 10** | `num // 10 ** k` מוריד k ספרות, `num % 10 ** k` משאיר k ספרות, ו‑`digit * 10 ** k` שם ספרה במקום k | יחידה 3, יחידה 7 | [נושא 1](/python-course-hebrew/exam-prep/examples.html#topic-1) |
| 3 | **לולאות** `while` ו‑`for`, **לולאות מקוננות**, **זקיף** | זקיף הוא ערך מיוחד שמסיים את הקלט (למשל -1). קוראים אותו פעם אחת **לפני** הלולאה ופעם אחת **בסוף** כל סיבוב, והוא **לא** נכנס לחישוב | יחידה 7 | [נושא 2](/python-course-hebrew/exam-prep/examples.html#topic-2) |
| 4 | **בדיקת רצפים** (איברים סמוכים) ברשימה | משווים `lst[i]` ל‑`lst[i + 1]`, בלולאה עד `range(len(lst) - 1)` | יחידה 9 (רשימות) | [נושא 3](/python-course-hebrew/exam-prep/examples.html#topic-3) |
| 5 | **רשימת מונים**, ו**מיקום** האיבר מול **ערך** האיבר | `counts = [0] * 10`, ובלולאה `counts[value] += 1`: הערך הופך לאינדקס | יחידה 9 | [נושא 3](/python-course-hebrew/exam-prep/examples.html#topic-3) |
| 6 | **מילון** (`dict`) | מילון ריק `{}`, מעבר עם `keys()` ועם `items()`, גישה לפי מפתח `d[key]`, הכנסה `d[key] = value` | יחידה 13 (מילונים) | [נושא 4](/python-course-hebrew/exam-prep/examples.html#topic-4) |
| 7 | **קבצים**: קובצי **txt בלבד** | קריאה ו**כתיבה**, מעבר על כל שורה בלולאה, ופירוק שורה לחלקים עם `split` ומפריד ידוע מראש | יחידות 14–15 (קבצים) | [נושא 5](/python-course-hebrew/exam-prep/examples.html#topic-5) |
| 8 | **פעולות על מחרוזות** | `len`, `split`, `strip`, `lower`/`upper`, `replace`, `find`, אינדקס וחיתוך | יחידה 5 (מחרוזות) | [נושא 6](/python-course-hebrew/exam-prep/examples.html#topic-6) |
---
## 2. דף עזר: קבצים
עבודה עם קובץ היא תמיד **שלושה שלבים**: פתיחה ← פעולה (קריאה או כתיבה) ← סגירה.
| הפקודה | מה היא עושה |
|---|---|
| `file = open("data.txt", "r")` | פתיחה **לקריאה**. אם הקובץ לא קיים, יש שגיאה |
| `file = open("data.txt", "w")` | פתיחה **לכתיבה**. **מוחק** את מה שהיה בקובץ, או יוצר קובץ חדש |
| `file = open("data.txt", "a")` | פתיחה **להוספה**. כותב בסוף הקובץ, בלי למחוק |
| `file.close()` | סגירה. **חובה** בסוף, כדי שהשינויים יישמרו |
| `file.read()` | כל הקובץ כ**מחרוזת אחת** ארוכה |
| `file.readline()` | **שורה אחת**. כל קריאה נוספת מחזירה את השורה הבאה |
| `file.readlines()` או `list(file)` | **רשימה** של כל השורות. כל שורה עם `\n` בסופה |
| `for line in file:` | מעבר על השורות אחת אחרי השנייה |
| `file.write(text)` | כותב **מחרוזת** (רק במצב `"w"` או `"a"`). לא מוסיף ירידת שורה לבד: כותבים `"\n"` |
> ⚠️ **כל מה שנקרא מקובץ הוא מחרוזת.** כדי להשוות מספר או לחשב איתו צריך `int()` (או `float()`). בלי זה `data[2] < 56` נכשל בשגיאה.
## 3. דף עזר: מחרוזות
| הפקודה | מה היא עושה | דוגמה (`text = "apple-banana-orange"`) |
|---|---|---|
| `len(text)` | האורך, כולל רווחים | `19` |
| `text.split("-")` | מפרקת לפי המפריד ומחזירה **רשימה**. בלי מפריד, מפרקת לפי רווחים | `['apple', 'banana', 'orange']` |
| `text.strip()` | מורידה רווחים ו‑`\n` **מההתחלה ומהסוף**. חשובה מאוד בקריאה מקובץ | `" hi\n".strip()` ← `"hi"` |
| `text.upper()` / `text.lower()` | אותיות גדולות / קטנות (באנגלית) | `"APPLE-BANANA-ORANGE"` |
| `text.replace(old, new)` | מחליפה כל `old` ב‑`new` | `text.replace("-", " ")` |
| `text.find(sub)` | המקום שבו `sub` **מתחיל**, או **-1** אם הוא לא נמצא | `text.find("banana")` ← `6` |
| `text[0]` / `text[-1]` | התו הראשון / האחרון | `"a"` / `"e"` |
| `text[1:4]` | חיתוך: מהמקום 1 עד המקום 4, **לא כולל** 4 | `"ppl"` |
---
## 4. הדוגמה שבהנחיות, צעד אחרי צעד
**המשימה:** בקובץ `grades.txt` כל שורה היא `שם#מקצוע#ציון`:
דני#מתמטיקה#95
דנה#אנגלית#82
רון#מתמטיקה#45
שירה#היסטוריה#88
הדפיסו רק את השמות של מי שנכשל **במתמטיקה**.
# 1. open the file for reading
file = open("grades.txt", "r")
# 2. all the lines of the file, as a list
lines = list(file)
# 3. go over the lines one by one
for line in lines:
# split the line by "#" into a list of 3 items
data = line.split("#")
name = data[0] # index 0: the name
subject = data[1] # index 1: the subject
grade = int(data[2]) # index 2: the grade, as an int, so it can be compared
# 4. the subject is math and the grade is a fail
if subject == "מתמטיקה" and grade < 55:
print(name)
# 5. close the file
file.close()
**שלוש נקודות שהבחינה בודקת:**
1. **מצב הפתיחה:** קריאה היא `"r"`, ובסוף תמיד `close()`.
2. **`split("#")`** יוצר בכל סיבוב רשימה `data`: במקום 0 השם, במקום 1 המקצוע, ובמקום 2 הציון.
3. **המרת טיפוס:** הציון מגיע מהקובץ כטקסט, ולכן `int(data[2])`. (`int` מתעלם מה‑`\n` שבסוף השורה. אם השדה **האחרון** היה טקסט, היה צריך `line.strip()` לפני ה‑`split`.)
> 📝 **הערה למורים:** במסמך ההנחיות המשימה אומרת "ציון נמוך מ‑56", אבל בקוד הפתרון שם כתוב `grade < 55`. ציון עובר הוא 55, ולכן כאן כתבנו `grade < 55`. כדאי לשים לב לניסוח המדויק של כל שאלה בבחינה.
---
## 5. איך לתרגל
1. **בחינות משנים קודמות:** [אתר מגמת תקשוב, בחינות י"ג–י"ד](https://tikshuv.israschool.org.il/טכנאים-הנדסאים/בחינות-יג-יד-תשפג). משרד החינוך ממליץ במפורש לתרגל עליהן.
2. **[התרגילים כאן](/python-course-hebrew/exam-prep/exercises.html):** לכל נושא מהטבלה יש כמה תרגילים. פתרו אותם קודם **על הנייר**, ורק אחר כך הריצו.
3. **שאלות מעקב** ("מה ידפיס הקוד?"): בונים **טבלת מעקב**, עמודה לכל משתנה ושורה לכל סיבוב. זו הדרך הבטוחה ביותר לא לטעות.