1. Вкажіть, які з наведених заголовків циклу for записані синтаксично правильно і роблять рівно 5 ітерацій?
------------------------------------------------------------------------------------------------------------------
2. Скільки всього кроків пройде Робот, виконавши наступний цикл?
for x in range (4):
r.right (1)
for y in range (4):
r.right (2)
r.right (3)
Зауважимо, що r.right (3) - це команда зсуву Робота на 3 кроки вправо.
------------------------------------------------------------------------------------------------------------------
3. Що виведе даний код ?
print (1,2,3. sep = ":")
------------------------------------------------------------------------------------------------------------------
4. Яке число буде виведено на екран? Спробуйте виконати це завдання, не запускаючи програму на Python.
N = 987654321
print(N % 10 ** 5 // 10 ** 2)
------------------------------------------------------------------------------------------------------------------
Якщо результат - рядок, то відповідь треба писати в лапках.
------------------------------------------------------------------------------------------------------------------
6. Яка з операцій змінює рядок s?
Будь ласка, дайте відповідь без використання інтерпретатора Python.
------------------------------------------------------------------------------------------------------------------
7. Знайдіть значення члена арифметичної прогресії з індексом тисячі п'ятсот сорок три(1543), якщо її нульовий член дорівнює 179, а крок дорівнює 2007.
Підказка. Другий параметр range можна просто покласти досить великим числом.
Для об'єкта range використовуйте операцію взяття елемента за індексом (номером): range (...) [...]
range(start, stop, step) [index]
------------------------------------------------------------------------------------------------------------------
8. За допомогою програми з циклом for обчисліть суму арифметичної прогресії:
1 + 3 + 5 + ... + 123456789.
Відповідь:
s = 0
for k in range(1, 123456790, 2):
s = s + k
print(s)
------------------------------------------------------------------------------------------------------------------
Відповідь:
n = 10 ** 9 + 13
d = 2
while n % d != 0:
d += 1
print(d)
------------------------------------------------------------------------------------------------------------------
10. Обчисліть за допомогою мови Пітон факторіал числа 50 - добуток всіх натуральних чисел від 1 до 50.
------------------------------------------------------------------------------------------------------------------
11.Послідовність чисел генерується лямбда-функцією:
def generate_number ():
return lambda random_seed: (random_seed * 693 + 5)% 100
number = generate_number ()
Член послідовності під номером i дорівнює number (i). Послідовність починається з першого елемента, ознака кінця послідовності - значення 0 (не входить в саму послідовність).
Знайти кількість чисел, кратних 7.
def generate_number():
return lambda random_seed: (random_seed*693 + 5)%100
n = generate_number()
k = 0
i = 1
while n(i) != 0:
if n(i)%7 == 0:
k += 1
i += 1
print(k)
Відповідь:
my_list = [(lambda x:(x*87+12)%100)(i) for i in range(20)]
summa = 0
summa2 = 0
k = 0
while len(my_list) > 0:
x = my_list.pop()
summa += x
summa2 += x*x
k += 1
sered = summa/k
sered2 = summa2/k
vidchil = (sered2 - sered**2)**0.5
print(vidchil)
------------------------------------------------------------------------------------------------------------------
2. Скільки всього кроків пройде Робот, виконавши наступний цикл?
for x in range (4):
r.right (1)
for y in range (4):
r.right (2)
r.right (3)
Зауважимо, що r.right (3) - це команда зсуву Робота на 3 кроки вправо.
------------------------------------------------------------------------------------------------------------------
3. Що виведе даний код ?
print (1,2,3. sep = ":")
------------------------------------------------------------------------------------------------------------------
4. Яке число буде виведено на екран? Спробуйте виконати це завдання, не запускаючи програму на Python.
N = 987654321
print(N % 10 ** 5 // 10 ** 2)
------------------------------------------------------------------------------------------------------------------
5. Що буде результатом операції
str ("1" + '2') * int (1 + 2)?
Будь ласка, дайте відповідь без використання інтерпретатора Python.Якщо результат - рядок, то відповідь треба писати в лапках.
------------------------------------------------------------------------------------------------------------------
6. Яка з операцій змінює рядок s?
Будь ласка, дайте відповідь без використання інтерпретатора Python.
------------------------------------------------------------------------------------------------------------------
7. Знайдіть значення члена арифметичної прогресії з індексом тисячі п'ятсот сорок три(1543), якщо її нульовий член дорівнює 179, а крок дорівнює 2007.
Підказка. Другий параметр range можна просто покласти досить великим числом.
Для об'єкта range використовуйте операцію взяття елемента за індексом (номером): range (...) [...]
range(start, stop, step) [index]
------------------------------------------------------------------------------------------------------------------
8. За допомогою програми з циклом for обчисліть суму арифметичної прогресії:
1 + 3 + 5 + ... + 123456789.
Відповідь:
s = 0
for k in range(1, 123456790, 2):
s = s + k
print(s)
------------------------------------------------------------------------------------------------------------------
9.
Відповідь:
n = 10 ** 9 + 13
d = 2
while n % d != 0:
d += 1
print(d)
------------------------------------------------------------------------------------------------------------------
10. Обчисліть за допомогою мови Пітон факторіал числа 50 - добуток всіх натуральних чисел від 1 до 50.
------------------------------------------------------------------------------------------------------------------
11.Послідовність чисел генерується лямбда-функцією:
def generate_number ():
return lambda random_seed: (random_seed * 693 + 5)% 100
number = generate_number ()
Член послідовності під номером i дорівнює number (i). Послідовність починається з першого елемента, ознака кінця послідовності - значення 0 (не входить в саму послідовність).
Знайти кількість чисел, кратних 7.
Відповідь:
def generate_number():
return lambda random_seed: (random_seed*693 + 5)%100
n = generate_number()
k = 0
i = 1
while n(i) != 0:
if n(i)%7 == 0:
k += 1
i += 1
print(k)
------------------------------------------------------------------------------------------------------------------
12.Послідовність чисел генерується лямбда-функцією:
def generate_number ():
return lambda random_seed: (random_seed * 693 + 5)% 100
number = generate_number ()
Член послідовності під номером i дорівнює number (i). Послідовність починається з першого елемента, ознака кінця послідовності - значення 0 (не входить в саму послідовність).
Знайти суму чисел, кратних 7.
Відповідь:
def generate_number():
return lambda random_seed: (random_seed*693 + 5)%100
n = generate_number()
s = 0
i = 1
while n(i) != 0:
if n(i)%7 == 0:
s += n(i)
i += 1
print(s)
------------------------------------------------------------------------------------------------------------------
13. Послідовність чисел генерується функцією:
def number (random_seed):
return (random_seed * 693 + 5)% 100
Член послідовності під номером i дорівнює number (i). Зверніть увагу на круглі дужки!
Послідовність починається з першого елемента, ознака кінця послідовності - значення 0 (не входить в саму послідовність).
Знайти середнє арифметичне чисел, кратних 4.
def generate_number ():
return lambda random_seed: (random_seed * 693 + 5)% 100
number = generate_number ()
Член послідовності під номером i дорівнює number (i). Послідовність починається з першого елемента, ознака кінця послідовності - значення 0 (не входить в саму послідовність).
Знайти суму чисел, кратних 7.
Відповідь:
def generate_number():
return lambda random_seed: (random_seed*693 + 5)%100
n = generate_number()
s = 0
i = 1
while n(i) != 0:
if n(i)%7 == 0:
s += n(i)
i += 1
print(s)
------------------------------------------------------------------------------------------------------------------
13. Послідовність чисел генерується функцією:
def number (random_seed):
return (random_seed * 693 + 5)% 100
Член послідовності під номером i дорівнює number (i). Зверніть увагу на круглі дужки!
Послідовність починається з першого елемента, ознака кінця послідовності - значення 0 (не входить в саму послідовність).
Знайти середнє арифметичне чисел, кратних 4.
Відповідь:
def n(random_seed):
return (random_seed*693 + 5)%100
k = 0
sum = 0
i = 1
while n(i) != 0:
if n(i)%4 == 0:
k += 1
sum += n(i)
i += 1
print(sum/k)
------------------------------------------------------------------------------------------------------------------
14.Послідовність чисел генерується лямбда-функцією:
def generate_number ():
return lambda random_seed: (random_seed * 693 + 5)% 100
number = generate_number ()
Член послідовності під номером i дорівнює number (i). Послідовність починається з першого елемента, ознака кінця послідовності - значення 0 (не входить в саму послідовність).
Знайти мінімальне з чисел, кратне 3.
Відповідь:
def generate_number():
return lambda random_seed: (random_seed*693 + 5)%100
n = generate_number()
i = 1
while n(i)%3 != 0:
i += 1
minimum3 = n(i)
i += 1
while n(i) != 0:
if n(i)%3 == 0:
if n(i) < minimum3:
minimum3 = n(i)
i += 1
print(minimum3)
------------------------------------------------------------------------------------------------------------------
15. Дано список з 20 елементів, створений за допомогою
my_list = [(lambda x: (x * 87 + 12)% 16) (i) for i in range (20)]
Знайти кількість елементів, рівних мінімальному значенню, дістаючи з нього значення за допомогою операції
x = my_list.pop ()
і перевіряючи довжину, що залишилася через len (my_list)
Довідка. Повертає елемент [на зазначеній позиції], видаляючи його зі списку.
list.pop ([i])
i = None: позиція шуканого елемента в списку (ціле число). Якщо не вказана, вважається що мається на увазі останній елемент списку. Від'ємні числа підтримуються.
Відповідь:
my_list = [(lambda x:(x*87+12)%16)(i) for i in range(20)]
print(my_list)
minv = my_list.pop()
minn = 1
while len(my_list) > 0:
num = my_list.pop()
if num < minv:
minv = num
minn = 1
elif num == minv:
minn += 1
print(minn)
------------------------------------------------------------------------------------------------------------------
16. Данo список з 2000 елементів, створений за допомогою
my_list = [(lambda x: (x * 296 + 2410)% 4096) (i) for i in range (2000)]
дістаючи з нього значення за допомогою операції
x = my_list.pop ()
і перевіряючи довжину залишився списку через len (my_list),
знайти кількість елементів, рівних другому по мінімальності значенню (відмінних за значенням від першого мінімуму).
my_list = [(lambda x: (x * 296 + 2410)% 4096) (i) for i in range (2000)]
дістаючи з нього значення за допомогою операції
x = my_list.pop ()
і перевіряючи довжину залишився списку через len (my_list),
знайти кількість елементів, рівних другому по мінімальності значенню (відмінних за значенням від першого мінімуму).
Відповідь:
# Варіант1
# генерируємо список із 2000 елементов
my_list = [(lambda x:(x*296+2410)%4096)(i) for i in range(2000)]
# початкове значення для тимчасового мінімума
min1_value = min2_value = 10000
min1_number = min2_number = 0
while my_list:
x = my_list.pop()
if x < min1_value:
min2_value = min1_value
min2_number = min1_number
min1_value = x
min1_number = 1
elif x == min1_value:
min1_number += 1
elif x < min2_value:
min2_value = x
min2_number = 1
elif x == min2_value:
min2_number += 1
print(min2_number)
# Варіант1
# генерируємо список із 2000 елементов
my_list = [(lambda x:(x*296+2410)%4096)(i) for i in range(2000)]
# початкове значення для тимчасового мінімума
min1_value = min2_value = 10000
min1_number = min2_number = 0
while my_list:
x = my_list.pop()
if x < min1_value:
min2_value = min1_value
min2_number = min1_number
min1_value = x
min1_number = 1
elif x == min1_value:
min1_number += 1
elif x < min2_value:
min2_value = x
min2_number = 1
elif x == min2_value:
min2_number += 1
print(min2_number)
# Варіант 2
my_list = [(lambda x : (x*296+2410)%4096)(i) for i in range(2000)]
mine = min(my_list)
x = len(my_list)-1
while x>0:
if mine == my_list[x]:
my_list.pop(x)
x -= 1
mine = min(my_list)
res = 0
while len(my_list)>0:
if mine == my_list.pop():
res += 1
print(res)
------------------------------------------------------------------------------------------------------------------
17. Дан список з 20 елементів, створений за допомогою
my_list = [(lambda x: (x * 87 + 12)% 100) (i) for i in range (20)]
дістаючи з нього значення за допомогою операції x = my_list.pop ()
і перевіряючи довжину залишився списку через len (my_list),
знайти середньоквадратичне відхилення (середньоквадратичнепомилку середнього арифметичного) за допомогою однопрохідного алгоритму. (Будьте уважні, "середньоквадратичне відхилення" і "стандартне відхилення" відрізняються один від одного.)
Введіть відповідь з точністю до п'ятого знака після коми.
Відповідь:
my_list = [(lambda x:(x*87+12)%100)(i) for i in range(20)]
summa = 0
summa2 = 0
k = 0
while len(my_list) > 0:
x = my_list.pop()
summa += x
summa2 += x*x
k += 1
sered = summa/k
sered2 = summa2/k
vidchil = (sered2 - sered**2)**0.5
print(vidchil)
------------------------------------------------------------------------------------------------------------------
18. Дан список з 20 елементів, створений за допомогою
my_list = [(lambda x: (x * 87 + 12)% 100) (i) for i in range (20)]
дістаючи з нього значення за допомогою операції x = my_list.pop ()
і перевіряючи довжину залишився списку через len (my_list),
знайти средньоквадратичну похибку середнього арифметичного за допомогою однопрохідного алгоритму за умови, що шукається середнє арифметичне парних чисел.
Введіть відповідь з точністю до другого знака після коми. Округлення здійснюйте за правилами математики.
Відповідь:
my_list = [(lambda x:(x*87+12)%100)(i) for i in range(20)]
summa = 0
summa2 = 0
k = 0
while len(my_list) > 0:
x = my_list.pop()
if x%2 == 0:
summa += x
summa2 += x*x
k += 1
sered = summa/k
sered2 = summa2/k
vidchul = (sered2 - sered**2)**0.5
print(vidchul)
Підказка.
Для кожного числа від 0 до 999 підрахуємо, скільки разів воно зустрічається в даному списку, причому зробимо це як в сортуванні підрахунком.
count = [0] * 1000
for elem in A:
count [elem] + = 1
Для пошуку медіани не потрібно створювати відсортований масив, досить проаналізувати частоти. Виберемо таке число x, що загальна кількість появи чисел від 0 до x (включно) буде не менше, ніж 500000. Це число - відповідь на задачу.
Відповідь:
def pseudo_list():
for i in range(N):
yield (i*9876+1024)%1000
N = 10**6 + 1
A = pseudo_list()
count = [0] * 1000
for x in A:
count[x] += 1
x = 0
sum_count = count[0]
while sum_count <= N//2:
x += 1
sum_count += count[x]
print(x)
Введення всіх слів рядка пишеться одним рядком:
words = input (). split ()
Як організувати сортування рядків?
Оскільки рядків трохи, можна скористатися будь-яким найпростішим алгоритмом сортування, наприклад, сортуванням вибором.
# Варіант 1
words = input(":").split()
N = len(words)
for p in range(N-1):
for i in range(p+1, N):
if words[i] < words[p]:
words[i], words[p] = words[p], words[i]
print(words[N//2])
# Варіант2
words = input(":").split()
N = len(words)
words.sort()
print(words[N//2])
-----------------------------------------------------------------------------------------------------------
21. Обчисліть найбільший спільний дільник чисел 77164189341682084692124351766096496451364840671846455244761 і
46668734283684548617206823665104829826096872771679324943689.
Відповідь:
Скористаємось алгоритмом Евкліда:
# Варіант1
my_list = [(lambda x: (x * 87 + 12)% 100) (i) for i in range (20)]
дістаючи з нього значення за допомогою операції x = my_list.pop ()
і перевіряючи довжину залишився списку через len (my_list),
знайти средньоквадратичну похибку середнього арифметичного за допомогою однопрохідного алгоритму за умови, що шукається середнє арифметичне парних чисел.
Введіть відповідь з точністю до другого знака після коми. Округлення здійснюйте за правилами математики.
Відповідь:
my_list = [(lambda x:(x*87+12)%100)(i) for i in range(20)]
summa = 0
summa2 = 0
k = 0
while len(my_list) > 0:
x = my_list.pop()
if x%2 == 0:
summa += x
summa2 += x*x
k += 1
sered = summa/k
sered2 = summa2/k
vidchul = (sered2 - sered**2)**0.5
print(vidchul)
------------------------------------------------------------------------------------------------------------------
19. Створіть послідовність A за допомогою наступного генератора:
def pseudo_list ():
for i in range (N):
yield (i * 9876 + 1024)% 1000
N = 10 ** 6 + 1
A = pseudo_list ())
# Елементи цієї послідовності слід перебирати так:
for x in A:
pass # робота з черговим числом x
Знайдіть «медіану» даного псевдосписка чисел за допомогою сортування підрахунком.
Медіана - це число, яке знаходиться рівно посередині списку, якщо список впорядкувати.
У послідовності чисел A - 10^6 + 1 число, всi числа - цілі невід'ємні від 0 до 999. Зберігати цю послідовність в список для подальшого сортування в даній задачі заборонено. Використовуйте сортування підрахунком.
Підказка.
Для кожного числа від 0 до 999 підрахуємо, скільки разів воно зустрічається в даному списку, причому зробимо це як в сортуванні підрахунком.
count = [0] * 1000
for elem in A:
count [elem] + = 1
Для пошуку медіани не потрібно створювати відсортований масив, досить проаналізувати частоти. Виберемо таке число x, що загальна кількість появи чисел від 0 до x (включно) буде не менше, ніж 500000. Це число - відповідь на задачу.
Відповідь:
def pseudo_list():
for i in range(N):
yield (i*9876+1024)%1000
N = 10**6 + 1
A = pseudo_list()
count = [0] * 1000
for x in A:
count[x] += 1
x = 0
sum_count = count[0]
while sum_count <= N//2:
x += 1
sum_count += count[x]
print(x)
---------------------------------------------------------------------------------------------------------------
20. Відсортувати слова в порядку лексикографічного зростання і як відповідь вивести слово, яке перебуває рівно посередині (медіану масиву). Кількість слів непарна.
Відповідь:Введення всіх слів рядка пишеться одним рядком:
words = input (). split ()
Як організувати сортування рядків?
Оскільки рядків трохи, можна скористатися будь-яким найпростішим алгоритмом сортування, наприклад, сортуванням вибором.
# Варіант 1
words = input(":").split()
N = len(words)
for p in range(N-1):
for i in range(p+1, N):
if words[i] < words[p]:
words[i], words[p] = words[p], words[i]
print(words[N//2])
words = input(":").split()
N = len(words)
words.sort()
print(words[N//2])
-----------------------------------------------------------------------------------------------------------
21. Обчисліть найбільший спільний дільник чисел 77164189341682084692124351766096496451364840671846455244761 і
46668734283684548617206823665104829826096872771679324943689.
Відповідь:
Скористаємось алгоритмом Евкліда:
# Варіант1
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
print(gcd(77164189341682084692124351766096496451364840671846455244761, 46668734283684548617206823665104829826096872771679324943689))
# Варіант2
while b != 0:
a, b = b, a % b
return a
print(gcd(77164189341682084692124351766096496451364840671846455244761, 46668734283684548617206823665104829826096872771679324943689))
# Варіант2
a = 77164189341682084692124351766096496451364840671846455244761
b = 46668734283684548617206823665104829826096872771679324943689
while a != b:
if a > b:
a = a - b
else:
b = b - a
print(a)
===============================================================
b = 46668734283684548617206823665104829826096872771679324943689
while a != b:
if a > b:
a = a - b
else:
b = b - a
print(a)
===============================================================