תמונת אווירה

מדריך פייתון – תרגילים ופתרונות

    מלאו פרטים לקבלת ייעוץ





    אני מאשר קבלת מבצעים ועדכונים מחברת RT-GROUP בכפוף לprivacy

    [honeypot Email id:email class:email]

    ראשי » שפת Python תרגילים ופתרונות
    [addthis tool="addthis_inline_share_toolbox_mkkj"]

    תרגילים ופתרונות בשפת Python

    לוגו שפת תכנות python

     
     

    צוות Real Time Colleg הכין במיוחד עבורכם מדריך תרגילים ופתרונות בשפת פייטון – בואו לראות מה הרמה שלכם בשפה הכי חמה בתעשייה!

     

    שאלה 1:

    כתבו תוכנית שקולטת מספרים מהמשתמש עד שנקלט התו q. הדפס את ממוצע המספרים.

     
    sתשובה 1
     
     

    שאלה 2:

    כתבו תכנית שמקבלת רשימה של מספרים, ומספר נוסף. הפונקציה תשנה את הרשימה עצמה (IN-PLACE) כך שהיא לא תכיל מספרים שמתחלקים במספר הנוסף.
     
    תשובה 2

     
     

    שאלה 3:

    כתבו תכנית שקולטת מחרוזת מהמשתמש ומדפיסה האם היא פלינדרום (מחרזות היא פלינדרום אם היא זהה להיפוכה. למשל level, noon ו-racecar הן מילים פלינדרומיות.
     
    תשובה 3

     
     

    שאלה 4:

    כתבו תכנית המדמה הגרלה. נקלוט מהמשתמש 3 מספרים שונים בין 0 ל-9. לאחר מכן התכנית תבחר באקראי 3 מספרים שונים מטווח זה (0-9). אם המספרים שנבחרו זהים לאלו שהמשתמש ניחש נדפיס "You Win" אחרת נדפיס "You Lose". 
    תשובה 4

     
     

    שאלה 5:

    כתבו תכנית המקבלת כארגומנט ראשון שם של קובץ. הנח כי הקובץ הוא קובץ טקסט שמורכב משורות של מספרים. סכום מספרים אלו וכתוב לסוף הקובץ את הסכום שהתקבל. 
    תשובה 5

     
     

    שאלה 6:

    כתבו פונקציה שמקבלת רשימה של מספרים מ-0 עד 9 ותחזיר רשימה חדשה שסופרת סכום נפרד עבור כל ספרה. למשל אם ברשימה שהתקבלה המספר 2 מופיע 7 פעמים אז ברשימה המוחזרת במקום ה-2 יהיה שמור הערך 7
     
    תשובה 6

     
     

    שאלה 7:

    כתבו פונקציה שמקבלת רשימה. יש לבדוק שכל איברי הרשימה הם מספרים שלמים חיוביים אחרת יש לזרוק שגיאות מסוג ValueError עם הערות בהתאם לסוג השגיאה (טיפוס לא מתאים או טווח לא מתאים)

     
    תשובה 7

     
     

    שאלה 8:

    מה ההבדל בין y לבין z בתכנית הבאה? כתבו תכנית שמדגימה את ההבדל:
     
    תשובה 8

     

     

    שאלה 9:

    הסבירו למה משמשת המילה with? מהי חשיבותה של המילה זו (מדוע היא התווספה לשפה)?
     
    תשובה 9

     

     

    שאלה 10:

    נתון לנו קובץ בינרי שמכיל 8 בתים בשם "data.bin". ידוע שהמידע מייצג שני מספרים שלמים בגודל 4 בתים בשיטת big-endian. כתבו קוד שמדפיס את סכום המספרים הללו:
     
    תשובה 10

     

     

    להלן פתרונות תרגילי Python

     

    1
    
    
    s = 0 # sum of the numbers
    c = 0 # count of the numbers
    
    
    while 1:
        n = input("enter a number:")
    
        if n == 'q':   # if the input was 'q' -> quit the loop
                break
    
        try:
            n = int(n)
    
        except ValueError:
            print("please enter an integer or 'q'.")
    
        else:
            s += n
            c += 1
    
    print("average:{}".format(s/c))
    
    

    חזרה למעלה

     

    תשובה לתרגיל 2

    לשאלה זו מספר דרכי פתרון שכדאי לבחון

     
     
    דרך פתרון 1
    יש לשים לב ששימוש בלולאת for יכול להיות בעייתי אם מסירים איברים מהרשימה עליה הלולאה מטיילת. פיתרון אפשרי הוא לטייל בצורה "קלאסית" באמצעות לולאת while על האינדקסים ולדאוג לקדם את האינדקס רק כאשר לא מצאנו איבר למחיקה.

    
    def remove_multiples(number_list,  divnum):
        i=0
        while i < len(number_list):
            if number_list[i] % divnum == 0:
                number_list.pop(i)
            else:
                i+=1
    


    דרך פתרון 2
    פיתרון חלופי הוא לבנות רשימה חדשה שמכילה רק את האיברים הנחוצים ואז לדרוס את הרשימה הישנה:

    
    
    def remove_multiples(number_list,  divnum):
        new_list = []
        for num in number_list:
            if num % divnum != 0:
                new_list.append(num)
    
        #[:] is required to change the objet itself, and not the reference
        number_list[:] = new_list
    


    דרך פתרון 3

    
    
    ננצל את הפונקציה המובנית filter, המקבלת פונקציה שבאמצעותה היא מחליטה מה להשאיר, וכמו בפיתרון ב נדרוס את הרישמה הישנה. לfilter יש לספק פונקציה שיכולה לקבל איבר מתוך הרשימה ולהחזיר True או False עבור איבר זה. True משמעותו שיש להשאיר את האיבר ו-False משמעותו שיש להסירו:
    
    def remove_multiples(number_list,  divnum):
        number_list[:] = filter(lambda num: (num % divnum)!=0,  new_list)
    
    


    דרך פתרון 4
    כמו פיתרון ג, אך נשתמש ב-list comprehension כדי לסנן

    
    def remove_multiples(number_list,  divnum):
        number_list[:] = (n for n in number_list if (n % divnum)!= 0)
    
    

    חזרה למעלה

     

    תשובה לתרגיל 3

    
    
    
    text = input("enter a word:").lower()
    
    if text == text[::-1]:
        print(text, "is a palindrome")
    else:
        print(text, "is not a palindrome")
    
    
    

    חזרה למעלה

     

    תשובה 4

    
    
    
    import random
    
    numbers = list(range(1,10))
    
    # we will read the line containing the numbers
    guess = input("enter 6 different numbers from 1-37:")
    # split it into a list of strings of these numbers
    guess = guess.split()
    # convert the string into integers
    guess = [int(n) for n in guess]
    # for the sake of bervity we didn't test the list for errors (not numbers, repeasting numbers not 6 exactly)
    guess.sort()
    
    result = random.sample(numbers, 3)
    result.sort()
    
    print("result:", result)
    
    if result == guess:
        print("You Win")
    else:
        print("You Lose")
    
    
    

    חזרה למעלה

     

    תשובה לתרגיל 5

    
    
    
    import sys #argv
    
    #using update mode "r+" we can read the file until its end
    #and then follow it with a write to the end of the file
    f = open(sys.argv[1], "r+")
    s = 0
    
    for line in f:
        s += int(line)
    
    f.write("{}n".format(s))
    
    
    
    

    חזרה למעלה

     

    תשובה 6

    
    
    
    def sumlist(numbers):
        result = [0] * 10
        for n in numbers:
            result[n]+=1
    
        return result
    
    
    
    

    חזרה למעלה

     

    תשובה 7

    הקוד מייצר "שאריות" של תתי מחרוזות שה-Collector Garbage צריך לנקות. כדי למנוע זאת נוכל להשתמש ב-
    StringBuilder שמצמצם ייצור של "שאריות":

    
    
    def check_list(x):
        for element in x:
            if not isinstance(element, int):
                raise ValueError(
                    "all elements of the list must be of type int")
    
            elif not 1 <= int(element) <= 100:
                raise ValueError(
                    "all elements of the list must be between 1-100")
    
    
    
    

    חזרה למעלה

     

    תשובה לתרגיל 8

    
    
    
    x[0]=9
    print(y)
    print(z)
    print(x is y)
    print(x is z)
    
    
    
    
    

    חזרה למעלה

     

    תשובה לתרגיל 9

    
    
    כותרת with משמשת עבור מקרים בהם יש לנו צורך לבצע פעולות של "לקיחה" ו"שחרור" של משאבים. השפה יודעת לשחרר את המשאב באופן אוטומטי כאשר יוצאים מה-scope של הכותרת. כך למשל נוכל לפתוח קבצי טקסט ומסדי נתונים מבלי לכתוב במפורש קוד לסגירה שלהם ואפילו לבצע acquire ו-release אוטומטי על mutex. השחרור של המשאבים מתבצע אפילו כאשר נזרקת שגיאה לא מטופלת (uncaught exception). המילה with מאפשרת לנו לכתוב קוד יותר מתומצת  ויותר מוגן.
    
    
    
    
    

    חזרה למעלה

     

    תשובה לתרגיל 10

    
    
    
    f = open("data.bin", "rb")
    
    data = f.read(4)
    num1 = int.from_bytes(data, 'big')
    
    data = f.read(4)
    num2 = int.from_bytes(data, 'big')
    
    print(num1 + num2)
    
    
    

     
    מעוניינים לשפר את הידע בתכנות בשפת Python ולפתוח המון אפשרויות פיתוח חדשות בעולם ההייטק?
    בוא ללמוד Python עם צוות Real Time College
    לפרטים נוספים > קורס Python
     

    אולי יעניין אותך גם: