לולאת for

להלן סדרת שאלות ותשובות. הן עוסקות בפונקציה range ובלולאת for. 

 

בקליטת קלט באמצעות הפונקציה input ההנחה היא שמוכנס קלט תקין, אלא אם כן נאמר אחרת.  

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

בהצלחה!

 

152 * 173

מה הרצף שמציב הקוד הזה במשתנה myRange?

myRange = range(4)

0, 1, 2, 3

מה הרצף שמציב הקוד הזה במשתנה myRange?

myRange = range(4, 7)

4, 5, 6

מה הרצף שמציב הקוד הזה במשתנה myRange?

myRange = range(4, 12, 3)

4, 7, 10

מה מדפיס הקוד הזה?

lst = list(range(-2, 3))

print(lst)

[-2, -1, 0, 1, 2]

מה מדפיס הקוד הזה?

s = ‘indices, not strings’

lst = list(range(0, len(s), 3))

print(lst)

[0, 3, 6, 9, 12, 15, 18]

מה מדפיס הקוד הזה? המשתנה s מכיל מחרוזת ריקה. 

s = ”

for ‘c’ in ‘cat’:

     s = s + c

print(c)

תשובה: הקוד לא ירוץ. כדי לפעול באופן תקין הוראת for נזקקת למשתנה בקרה לשים בתוכו את האיבר הבא ברצף שהיא סורקת. המשתנה אמור להופיע לפני המילה in וכאן הוא נעדר ובמקומו יש ערך, המחרוזת ‘c’. 

מה מדפיס הקוד הזה? המשתנה s מכיל מחרוזת ריקה. 

s = ”

for c in ‘cat’:

     s = s + c

print(c)

t

מה מדפיס הקוד הזה?

for i in range(5):
print(i)

הקוד אינו רץ כיוון שיש שגיאת הידור (קומפילציה): המהדיר מצפה שההוראה הבאה אחרי השורה הראשונה במבנה לולאת for תהיה מוזזת ימינה לעומת השורה הזאת. 

מה מדפיס הקוד הזה?

for i in range(5):

     print(i)

0

1

2

3

4

מה מדפיס הקוד הזה?

lst = []

for i in range(5, 10):

     lst = lst + [i]

print(lst)

[5, 6, 7, 8, 9]

מה מדפיס הקוד הזה? 

lst = []

for i in range(3, 0, -1):

     lst = lst + [i]

print(lst)

t

מה מדפיס הקוד הזה? 

print(‘begin’)

for i in range(5):

     print(‘middle’)

print(‘end’)

begin

middle

middle

middle

middle

middle

end

מה מדפיס הקוד הזה? 

import random

for i in range(1, 4):

     print(random.randint(1, i))

1

1

2

מה מדפיס הקוד הזה? 

for i in range(4):

     print(‘@’ * i)

1

1

2

מה מדפיס הקוד הזה? 

lst = [‘a’, ‘b’, ‘c’, ‘d’]

for item in lst:

     print(item, end = ‘-‘)

a-b-c-d-

מה מדפיס הקוד הזה? 

lst = [‘a’, ‘b’, ‘c’, ‘d’]

for ind in range(len(lst)):

     print(lst[ind], end = ‘-‘)

a-b-c-d-

מה מדפיס הקוד הזה? 

lst = [‘a’, ‘b’, ‘c’, ‘d’]

for ind in range(len(lst)):

     print(lst[:ind], lst[ind:])

[] [‘a’, ‘b’, ‘c’, ‘d’]

[‘a’] [‘b’, ‘c’, ‘d’]

[‘a’, ‘b’] [‘c’, ‘d’]

[‘a’, ‘b’, ‘c’] [‘d’]

מה מדפיס הקוד הזה? 

totalPayment = 0
payments = [100.0, 200.0, 300.0]
for payment in payments:
    totalPayment = totalPayment + payment
print(payment)

300.0

מה מדפיס הקוד הזה? 

factor = 1
nums = [1, 2, 3, 4, 5]
for num in nums:
    factor = factor * num
print(factor)

120

קטע קוד זה הורץ והדפיס את הערך True. תנו דוגמה לקלט שהמשתמשת הכניסה בתחילת ההרצה.

lst = [‘a’, ‘b’, ‘c’, ‘d’]

ch = input(‘Please enter a character: ‘)

found = False

while lst and not found:

     if lst[0] == ch:

           found = True

     else:

           lst = lst[1:]

print(found)

a

נתון קטע קוד חסר של תכנית. בקוד חסרה שורה אחת

lst = [‘a’, ‘b’, ‘c’, ‘d’]

ch = input(‘Please enter a character: ‘)

while lst:

     if lst[0] == ch:

           ?

     else:

           print(lst)

           lst = lst[1:]

print(lst)

הקוד הורץ. המשתמשת הכניסה את המחרוזת ‘b’ והקוד הדפיס:

[‘b’, ‘c’, ‘d’]

השלימו את השורה חסרה בקוד.

lst = [‘a’, ‘b’, ‘c’, ‘d’]
ch = input(‘Please enter a character: ‘)
while lst:
    if lst[0] == ch:
        break
    else:
        lst = lst[1:]
print(lst)

מה מדפיס הקוד הזה?

s = ‘feqodfuzcnewd23 dfightvb!df’

for i in range(0, len(s), 3):

     print(s[i], end = ”)

found it!

מה מדפיס הקוד הזה?

s = ‘feqodfuzcnewd23 dfightvb!df’

for c in s[::3]:

     print(c, end = ”)

found it!

מה מדפיס הקוד הזה?

lst = [5, 7, 3, 8]

for item in lst:

     item = item + 5

print(lst)

[5, 7, 3, 8]

מה מדפיס הקוד הזה?

lst = [‘a’, 1, True, ‘b’, 2, False]

vals = [2, ‘b’, 3]

itemsFound = 0

for val in vals:

     if val in lst:

           itemsFound = itemsFound + 1

print(itemsFound)

2

מה מדפיס הקוד הזה?

lst = [‘a’, 1, True, ‘b’, 2, False]

vals = [2, 3, ‘b’]

itemsFound = 0

for val in vals:

     if val in lst:

           itemsFound = itemsFound + 1

     else:

           break

print(itemsFound)

1

תנו דוגמה לערך שיכול להיות במשתנה s1 כדי שהקוד ידפיס את המחרוזת ‘at’. ערך האתחול של המשתנה common הוא מחרוזת ריקה.

s1 = ?
s2 = ‘cat’
common = ”
for c in s2:
    if c in s1:
        common = common + c
print(common)

bat

מה מדפיס הקוד הזה?

puncs = ‘.,;’

s = ‘Go, now; otherwise, stay.’

chars = []

for c in s:

     if c not in puncs:

           chars.append([c])

     else:

           chars.append([‘ ‘])

print(chars)

[[‘G’], [‘o’], [‘ ‘], [‘ ‘], [‘n’], [‘o’], [‘w’], [‘ ‘], [‘ ‘], [‘o’], [‘t’], [‘h’], [‘e’], [‘r’], [‘w’], [‘i’], [‘s’], [‘e’], [‘ ‘], [‘ ‘], [‘s’], [‘t’], [‘a’], [‘y’], [‘ ‘]]

מה מדפיס הקוד הזה?

positiveNums = [5, 4, 2, 1, 6, 5, 8]

maxNum = -1

for num in positiveNums:

     if num > maxNum:

           maxNum = num

print(maxNum)

8

קוד זה מבצע לולאה באמצעות מבנה while. שכתבו אותו באופן שישתמש במבנה for.

i = 0

while i < 10;

     print(i)

     i = i + 1

for i in range(10):

     print(i)

קוד זה מבצע לולאה באמצעות מבנה while. שכתבו אותו באופן שישתמש במבנה for.

i = 2

while i < 10;

     print(i)

     i = i + 1

for i in range(2, 10):

     print(i)

קוד זה מבצע לולאה באמצעות מבנה while. שכתבו אותו באופן שישתמש במבנה for.

i = 2

while i < 10;

     print(i)

     i = i + 3

for i in range(2, 10, 3):

     print(i)

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

lst = [8, 3, 2, 5, 6, 1, 0]

i  = int(len(lst) / 2)

if (len(lst) % 2 == 1):

    i = i + 1

while i <= len(lst):

    print(lst[i])

    i = i + 1

בשל השימוש בסימן <= הסריקה חורגת מגבול הרשימה. יש להשתמש בסימן < .

lst = [8, 3, 2, 5, 6, 1, 0]

i  = int(len(lst) / 2)

if (len(lst) % 2 == 1):

    i = i + 1

while i <= len(lst):

    print(lst[i])

    i = i + 1