Content is user-generated and unverified.

שלושה מבחנים נוספים - יסודות התכנות בפייתון

קורס 20605 - האוניברסיטה הפתוחה


מבחן מס' 4

שאלה 1

רשימה דו-ממדית של מספרים שלמים נקראת "רשימה ספירלית" אם מתקיימים התנאים הבאים:

  • הרשימה היא ריבועית (מספר השורות = מספר העמודות)
  • הערכים בה הם מספרים עוקבים החל מ-1
  • הערכים מסודרים בתבנית ספירלה עם כיוון השעון, החל מהפינה השמאלית העליונה

דוגמה לרשימה ספירלית בגודל 4×4:

1  2  3  4
12 13 14 5
11 16 15 6
10 9  8  7

כתבו פונקציה בוליאנית בשם is_spiral המקבלת כפרמטר רשימה דו-ממדית matrix ומחזירה True אם הרשימה היא "רשימה ספירלית" ו-False אחרת.

שאלה 2

א. כתבו פונקציה רקורסיבית בשם count_digits המקבלת מספר שלם חיובי num וספרה digit. הפונקציה תחזיר את מספר הפעמים שהספרה digit מופיעה במספר num. אסור להשתמש בפונקציות מובנות או העמסת פרמטרים.

ב. כתבו פונקציה רקורסיבית בשם has_ascending_digits המקבלת מספר שלם חיובי num. הפונקציה תחזיר True אם הספרות במספר מסודרות בסדר עולה (מימין לשמאל). אחרת, תחזיר False. אסור להשתמש בפונקציות מובנות או העמסת פרמטרים.

דוגמאות:

  • has_ascending_digits(123)True
  • has_ascending_digits(1321)False

שאלה 3

כתבו פונקציה בשם word_value המקבלת כפרמטר מחרוזת word המכילה אותיות באנגלית בלבד. הפונקציה תחזיר את הערך המספרי של המילה, כאשר:

  • כל אות קטנה שווה למיקומה באלפבית (a=1, b=2, ... z=26)
  • כל אות גדולה שווה פי 2 ממיקומה באלפבית (A=2, B=4, ... Z=52)

דוגמה: עבור המילה "Hello", הערך יחושב כך:

  • H = 8 × 2 = 16
  • e = 5
  • l = 12
  • l = 12
  • o = 15
  • סה"כ: 16 + 5 + 12 + 12 + 15 = 60

שאלה 4

במחלקה Game מיוצג משחק באמצעות שלוש תכונות:

  • _name (שם המשחק)
  • _genre (סוג המשחק)
  • _rating (דירוג בין 1-10)

במחלקה GameStore מיוצג חנות משחקים באמצעות רשימת המשחקים _games.

א. כתבו במחלקה Game בנאי המקבל שם, סוג ודירוג. במידה והדירוג לא בטווח 1-10, יש לקבוע דירוג ברירת מחדל של 5.

ב. כתבו במחלקה Game את הפונקציה __lt__ שמשווה משחקים לפי דירוג.

ג. כתבו במחלקה GameStore שיטה בשם add_game המקבלת משחק ומוסיפה אותו לחנות (רק אם אין כבר משחק עם אותו שם).

ד. כתבו במחלקה GameStore שיטה בשם top_rated_games המקבלת מספר n ומחזירה רשימה של n המשחקים בעלי הדירוג הגבוה ביותר, ממוינים בסדר יורד.

ה. כתבו במחלקה GameStore שיטה בשם games_by_genre המקבלת סוג משחק genre ומחזירה רשימה של כל המשחקים מסוג זה, ממוינים לפי שם.


מבחן מס' 5

שאלה 1

רשימה חד-ממדית של מספרים נקראת "רשימת הרים" אם מתקיימים התנאים הבאים:

  • הרשימה מכילה לפחות 3 איברים
  • יש ברשימה לפחות "פסגה" אחת - מיקום שבו הערך גדול משני השכנים שלו
  • אין ברשימה שני ערכים זהים הסמוכים זה לזה

דוגמה: הרשימה [1, 3, 7, 2, 5, 1, 4] היא רשימת הרים כי יש בה פסגות במיקומים 2 ו-4.

כתבו פונקציה בוליאנית בשם is_mountain_list המקבלת רשימה numbers ומחזירה True אם הרשימה היא "רשימת הרים" ו-False אחרת.

שאלה 2

א. כתבו פונקציה רקורסיבית בשם reverse_number המקבלת מספר שלם חיובי num ומחזירה את המספר כשסדר הספרות שלו הפוך. אסור להשתמש בפונקציות מובנות או העמסת פרמטרים.

דוגמה: reverse_number(1234)4321

ב. כתבו פונקציה רקורסיבית בשם is_mirror_numbers המקבלת שני מספרים שלמים חיוביים num1 ו-num2. הפונקציה תחזיר True אם המספרים הם ראי זה של זה (אחד הוא היפוך של השני). מומלץ להשתמש בפונקציה מסעיף א'.

שאלה 3

כתבו פונקציה בשם matrix_sum_diagonals המקבלת מטריצה ריבועית (רשימה דו-ממדית) matrix. הפונקציה תחזיר טאפל (tuple) המכיל:

  1. סכום האלכסון הראשי (מלמעלה משמאל למטה מימין)
  2. סכום האלכסון המשני (מלמעלה מימין למטה משמאל)
  3. הפרש בין השניים (ערך מוחלט)

דוגמה: עבור המטריצה:

1 2 3
4 5 6  
7 8 9
  • אלכסון ראשי: 1+5+9 = 15
  • אלכסון משני: 3+5+7 = 15
  • הפרש: |15-15| = 0
  • החזרה: (15, 15, 0)

שאלה 4

במערכת ניהול עובדים יש שתי מחלקות: Employee ו-Department.

מחלקה Employee מכילה:

  • _name (שם העובד)
  • _salary (משכורת)
  • _years_experience (שנות ניסיון)

מחלקה Department מכילה:

  • _department_name (שם המחלקה)
  • _employees (רשימת עובדים)

א. כתבו במחלקה Employee בנאי המקבל שם, משכורת ושנות ניסיון. במידה ושנות הניסיון שליליות, יש לקבוע 0.

ב. כתבו במחלקה Employee את הפונקציה __gt__ שמשווה עובדים לפי משכורת.

ג. כתבו במחלקה Department שיטה בשם add_employee המוסיפה עובד למחלקה.

ד. כתבו במחלקה Department שיטה בשם average_salary המחזירה את הממוצע של משכורות העובדים במחלקה.

ה. כתבו במחלקה Department שיטה בשם experienced_employees המקבלת מספר שנים min_years ומחזירה רשימה של עובדים עם לפחות min_years שנות ניסיון, ממוינים לפי משכורת בסדר יורד.


מבחן מס' 6

שאלה 1

מערך דו-ממדי נקרא "מערך שח" אם מתקיימים התנאים הבאים:

  • המערך הוא ריבועי ובגודל זוגי (2×2, 4×4, 6×6, וכו')
  • המערך מכיל רק שני ערכים: 0 ו-1
  • הערכים מסודרים בתבנית לוח שחמט (כל 2×2 תת-מערך מכיל שני אפסים ושתי אחדות באלכסון)

דוגמה למערך שח 4×4:

0 1 0 1
1 0 1 0
0 1 0 1
1 0 1 0

כתבו פונקציה בוליאנית בשם is_chess_matrix המקבלת מערך דו-ממדי matrix ומחזירה True אם המערך הוא "מערך שח" ו-False אחרת.

שאלה 2

א. כתבו פונקציה רקורסיבית בשם sum_of_digits המקבלת מספר שלם חיובי num ומחזירה את סכום ספרותיו. אסור להשתמש בפונקציות מובנות או העמסת פרמטרים.

ב. כתבו פונקציה רקורסיבית בשם is_happy_number המקבלת מספר שלם חיובי num. מספר נקרא "מספר שמח" אם החלפת המספר בסכום ריבועי ספרותיו, וחזרה על התהליך, מביאה בסופו של דבר למספר 1. אם התהליך נכנס ללולאה אינסופית, המספר אינו שמח.

דוגמה:

  • 7 → 7² = 49 → 4² + 9² = 16 + 81 = 97 → 9² + 7² = 81 + 49 = 130 → 1² + 3² + 0² = 1 + 9 + 0 = 10 → 1² + 0² = 1 (מספר שמח!)

שאלה 3

כתבו פונקציה בשם find_missing_number המקבלת רשימה numbers המכילה n-1 מספרים שונים בטווח 1 עד n. הפונקציה צריכה למצוא את המספר החסר ולהחזיר אותו.

הפונקציה צריכה לעבוד ביעילות גם עבור רשימות גדולות.

דוגמה: עבור הרשימה [1, 2, 4, 5, 6] המספר החסר הוא 3.

שаلה 4

במערכת ניהול ספרייה יש שלוש מחלקות: Author, Book ו-Library.

מחלקה Author מכילה:

  • _name (שם המחבר)
  • _birth_year (שנת לידה)

מחלקה Book מכילה:

  • _title (כותרת)
  • _author (מחבר מטיפוס Author)
  • _publication_year (שנת פרסום)
  • _is_available (זמינות - ברירת מחדל True)

מחלקה Library מכילה:

  • _books (רשימת ספרים)
  • _borrowed_books (רשימת ספרים מושאלים)

א. כתבו במחלקה Author בנאי המקבל שם ושנת לידה.

ב. כתבו במחלקה Book בנאי המקבל כותרת, מחבר ושנת פרסום.

ג. כתבו במחלקה Book שיטה בשם borrow שמשנה את הזמינות ל-False אם הספר זמין, ומחזירה True במקרה של הצלחה.

ד. כתבו במחלקה Library שיטה בשם add_book המוסיפה ספר לספרייה.

ה. כתבו במחלקה Library שיטה בשם books_by_decade המקבלת עשור (למשל 1990) ומחזירה רשימה של כל הספרים שפורסמו בעשור זה, ממוינים לפי שנת פרסום.

ו. כתבו במחלקה Library שיטה בשם author_statistics המחזירה מילון שבו המפתחות הם שמות מחברים והערכים הם מספר הספרים של כל מחבר בספרייה.

Content is user-generated and unverified.
    שלושה מבחנים נוספים - יסודות התכנות בפייתון | Claude