Код:
number = 10
print(f"Жмурилка Станіслава Шаповалова:\n")
print(f"{number}, {number-1}, {number-2}, {number-3} -")
print(f"Замовкає в небі грім.")
print(f"Линуть хмари де-не-де.")
print(f"Далі цифра {number-4} іде.")
print(f"В лузі скошена трава –")
print(f"{number-5}, {number-6}, {number-7} і {number-8}.")
print(f"Після двійки - одиниця.")
print(f"От і йди тепер жмуриться!")
Код:
for x in range(1,15,2):
print('{:^13}'.format('^' * x))
А так, як на мене, ще гарніше:
for x in range(1, 15, 2):
print(f'{"^" * x:^13}')
Код:
import random
boys = ["Коля", "Толя", "Вася", "Петя", "Саша", "Ваня"]
print("Ви подобаєтесь цим хлопцям: " + ', '.join(boys) + '.')
print("Зараз комп'ютер визначить, хто подобається Вам...")
choice = random.choice(boys)
print("Степан")
Код:
input('Купи слона! ')
while True:
input('всі так кажуть, а ти купи слона! ')
Після публікації даної версії програми, Pavlo Slavynskyy запропронував ще цікавішу:
Код:
# Версія Pavlo Slavynskyy
response = input('Купи слона! ')
while True:
response = input(f'Всі кажуть "{response}", а ти купи слона! ')
Традиційно у відкритій шкільній олімпіаді з програмування, що я проводжу кожного року, беруть участь не лише учні, а також студенти та учні інших шкіл. І кожного року є свої сюрпризи, нові імена і дух змагання. Олімпіада традиційно проходить на платформі e-olymp.com на чистих акаунтах. Під час олімпіади можна користуватися help-системою мови програмування. Через те, що навчальний рік тільки розпочався і деякі учні позабували синтаксис, можна користуватися довідниками мови Python.
Приємно, що завантажені навчанням студенти-випускники школи кожного року мотивують молодь своїми гарними результатами по принципу «Навчайтеся, і ви також все це зможете зробити». Цього року у відкритій шкільній олімпіаді взяли участь студенти-айтішники КПІ, Львівської політехніки, НАУ. А студентка медичного факультету університету ім. Богомольця журилася, що «забула увесь Пайтон» але при цьому не забула математику і вивела формулу для однієї з задач.
В даній статті хочу звернути увагу на задачу «Байтик і шахи» (https://www.e-olymp.com/uk/problems/8659).
Нескладна задача, що має на e-olymp.com рейтинг складності лише 12%.
Ось умова:
Байтик та шахи
Якось, вкотре запізнившись на урок, Байтик, проходячи повз ігрову кімнату, помітив шахову дошку. Порахував усі клітинки на ній, і йому стало цікаво: скільки різних квадратів зі стороною k (1≤ k ≤ n) можна розмістити на дошці розміру n.
Вхідні дані:
Натуральне число n (n ≤ 10000) розмір шахової дошки.
Вихідні дані:
Єдине число – кількість різних квадратів, які можна розмістити на шаховій дошці.
Приклад вхідних даних: 3
Приклад вихідних даних: 14
Логічними міркуваннями, листочком і олівцем можна легко знайти кілька окремих випадків. Наприклад, при n=1 очевидно, що кількість різних квадратів – 1. При n=2, тобто дошці 2 на 2 клітинки, квадратів буде п’ять, чотири малих і один загальний, що вміщує в себе чотири малих.
При n =3 відповідь - 14. Це можна порахувати вручну або просто подивитися тестовий приклад в умові задачі.
Давайте складемо табличку:
n
|
1
|
2
|
3
|
4
|
результат
|
1
|
5
|
14
|
|
Тут можна побачити класичну задачу з розділу динамічного програмування. Кожне наступне число-відповідь, це n в квадраті плюс відповідь від попереднього n. Відповідно, для n=4, відповідь буде 4*4 + 14 = 30.
На Python це буде, наприклад, так:
n = int(input())
s = 0
for x in range(1, n+1):
s += x**2
print(s)
Я попросив у учнів дозволу переглянути код їх розв’язків. І здивовано побачив такий розв’язок цієї задачі:
n = int(input())
print('{:.0f}'.format((n*(n+1)*(2*n+1))/6))
Це студентський розв’язок. КПІ, 1 курс, прикладна математика. Питаю: «звідки формула»?
Почув відповідь: «Це квадратне пірамідальне число. Нам тиждень тому пояснював це викладач матану. Це не було темою, це він відповідав на запитання під час ZOOM-лекції».
Мабуть, якщо йти вчитися, то на правильну спеціальність правильного університету. Тому що в такому місці за допомогою самоосвіти і викладачів можна системно і послідовно навчитися серйозним речам.
Де замість циклу використовують формулу. Згадують її або виводять з голови. Там, де неоптимально – це погано, і внутрішня освіта за таке сварить. Де олімпіадний принцип «здати у відведений час» - це недостатньо. Тому що і на співбесідах і на роботі — інші критерії.
Можливо, гарна вища айтішна освіта – це коли в голові не розкидані сторінки різних класних книжок, а більш-менш серйозна бібліотека?
Як Ви вважаєте?
Тридцять чотири рядки коду на Python.
Код писав я — можете скопіювати собі і запустити.
Вийшла така картина. Я назвав її «Місто». При наступному запуску буде інша картина.
Філософське запитання: як ви вважаєте, хто автор даної роботи — автор коду, той, хто запустив код на виконання чи комп'ютер?
Код:
# City. Code: ttolich (pletyvo.in.ua). Colors: flatuicolors.com
from random import randint, choice
import tkinter
size = 800
root = tkinter.Tk()
colors = (['#1abc9c', '#2ecc71', '#3498db', '#9b59b6', '#34495e',
'#16a085', '#27ae60', '#2980b9', '#8e44ad', '#2c3e50',
'#f1c40f', '#e67e22', '#e74c3c', '#ecf0f1', '#95a5a6',
'#f39c12', '#d35400', '#c0392b', '#bdc3c7', '#7f8c8d'])
canvas = tkinter.Canvas(root, width=size, height=size, bg=choice(colors))
canvas.pack()
count = 0
while count < 1000:
color = choice(colors)
x0 = randint(0, size) + randint(0, size/2)
y0 = randint(0, size)
if 600 < y0 < 800:
d1 = randint(0, size/5) + 50
d2 = randint(0, size/5) + 100
canvas.create_rectangle(x0, y0, x0 + d1, y0 + d2, fill=color)
elif 400 < y0 < 600:
d1 = randint(0, size/10) + 20
d2 = randint(0, size/10) + 50
canvas.create_rectangle(x0, y0, x0 + d1, y0 + d2, fill=color)
elif 200 < y0 < 400:
d1 = randint(0, size/20) + 5
d2 = randint(0, size/20) + 10
canvas.create_rectangle(x0, y0, x0+d1, y0 + d2, fill=color)
elif 100 < y0 < 200:
d1 = randint(0, size/40) + 2
d2 = randint(0, size/40) + 5
canvas.create_rectangle(x0, y0, x0+d1, y0 + d2, fill=color)
root.update()
count += 1
На початку вересня пройшли традиційні екзамени з логіки на гурток з програмування. Учні, що здавали екзамени для обох груп, казали що для молодшої групи (i7.juniors) екзамен був навіть складнішим, ніж для дорослих (i7). Будь хто може це перевірити. Або виділити годину часу, відкрити завдання і спробувати. І перевірити себе.
Завдання для молодшої групи (i7.juniors)
Завдання для старшої групи (i7)