Код:
for x in range(1,15,2):
print('{:^13}'.format('^' * x))
А так, як на мене, ще гарніше:
Код:
for x in range(1,15,2):
print('{:^13}'.format('^' * x))
А так, як на мене, ще гарніше:
Код:
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)
Літом 2020 року я захопився програмуванням контроллерів. І перед початком нового навчального року навіть виготовив три екземпляри для школи , в якій працюю.
Ці пристрої можуть бути корисними для роботи школи в нових умовах. Учні зможуть більш оптимально керувати своїм часом, дізнаватися шкільні новини. Батьки, які згідно нових правил будуть чекати дітей за межами шкільної будівлі, за допомогою даних пристроїв зможуть отримати актуальну інформацію про події шкільного життя, про розклад дзвінків, оперативні оголошення.
Розумні шкільні годинники вміють:
— показувати точний час, синхронізуючись з серверами точного часу в Інтернеті
— показувати дату і день тижня
— показувати три погодні блоки: погода зараз (температура, вітер, тиск, хмари, вологість) та прогнози погоди на сьогодні і на завтра
— коли триває урок, годинник показує який урок за номером, скільки хвилин залишилось до його завершення і в який час урок завершиться
— коли триває перерва, годинник показує, через скільки хвилин почнеться наступний урок, вказуючи його номер і час початку
— годинник уміє опрацьовувати нестандартні розклади уроків (робоча субота, друга зміна, скорочені уроки, зсунутий час перерв). Інформацію про нестандартні випадки всі шкільні розумні годинники самостійно скачують з сайту школи. Система централізована, достатньо розмістити на сайті школи єдиний файл з нестандартним розкладом — всі шкільні годинники скачають цей файл і розпочнуть використовувати для інформування
— годинники в початковій школі використовують розклад дзвінків для початкової школи
— годинники виводять інформаційні повідомлення. Вони скачують їх з сайту школи і виводять у вигляді рухомого рядка згідно графіку. Наприклад, у файлі інформаційних повідомлень на сайті школи вказано, що повідомлення «Мийте руки з милом» необхідно демонструвати кожну хвилину, а повідомлення «Ви можете в будь-який час безконтактно поміряти температуру у шкільної медичної сестри» — один раз на 10 хвилин. Тексти повідомлень і графік показу можна корегувати прямо на сайті, годинники скачають собі оновлені версії файлів і будуть використовувати при інформуванні. Якщо в конкретну хвилину необхідно показати кілька повідомлень, вони продемонструються послідовно
— годинники в початковій школі використовують свій набір інформаційних повідомлень і повільну швидкість переміщення рухомого рядка, дозволяючи учням прочитати тексти
— годинники, що показують інформацію на вулицю для батьків, використовують свій окремий набір інформаційних повідомлень
— розумний шкільний годинник захищений від стороннього інформаційного впливу
Технічні дані: Обладнання: Контролер NodeMCU + дві світлодіодні панелі MAX7219
Живлення: DC 5V (micro USB)
Корпус: прозорий, допитливі учні можуть побачити, що в годинниках всередині.
Собівартість запчастин для годинника: близько 500 гривень при купівлі в Китаї
Формат зовнішніх файлів розкладів та інформаційних повідомлень: JSON
Програмне забезпечення: годинники розроблені на базі проекту Івана Захарова «VZ_Clock» (github.com/IZ76/VZ_Clock), модулі синхронізації з сайтом, інформування і розкладу уроків писав сам.
Мова програмування: С/С++
Розробка: літо 2020 року
Як розумний годинник працює - у відео: