Я вчуся програмувати на python змінні і функції
попередній випуск
Я вчуся програмувати
на Python: введення

Минулого разу я розповів, чим хороша мова Python. Ті, хто з ним знайомий, напевно зі мною згодні, але є й ті, хто вчать інші мови програмування - або взагалі не знають жодної мови. Спеціально для них я присвячу найближчі пости розбору основ, які допоможуть нам не тільки з Python, але і з іншими мовами в майбутньому. Тим же, хто все це добре знає (а я впевнений, таких серед Новомосковсктелей багато). ніколи не завадить повторити основи.
Попереджаю: цей пост ні в якому разі не претендує на першу главу підручника з програмування, але, щоб він послужив гарною мотивацією, я вкажу в кінці посилання, де про ті самі речі розповідають докладніше, а головне - точніше. Крім того, врахуйте, що код наводиться для версій 3.0 і старше і, ймовірно, не буде працювати на версії 2.7.
Повернемося до двох рядках коду, якими я закінчив попередній пост, і розберемо кожну його складову в тому порядку, в якому інтерпретатор - програма, яка переводить код на машинний рівень і запускає його, - буде зчитувати код.
best_website = "Look At Me"
print ( "Hello, <>!".format (best_website))
best_website - це назва змінної. Змінна - це зайнята нами область пам'яті, в якій ми зберігаємо дані. При бажанні змінної best_website можна привласнити інше значення. Припустимо, ви вважаєте, що Look At Me - далеко не кращий сайт, і вам більше подобається «Метрополь». Тоді ви можете написати best_website = "Metropol", і у змінної best_website буде відповідне значення.
Знак «дорівнює» (=) - це оператор присвоювання в Python і багатьох інших мовах. Інакше кажучи, змінної, зазначеної зліва від нього, присвоюється якесь значення, вказане справа. Зазвичай цей оператор відокремлюють від назви змінної і присвоюється їй значення одним пропуском.
"Look At Me" - значення, що привласнюється змінною. Лапки вказують на те, що тип даних, що зберігаються - string, що містить послідовність літер та інших символів. Лапки можуть бути і одинарними - '', але якщо ви хочете використовувати лапки всередині лапок, то зовнішні доведеться робити подвійними.
Інтерпретатор визначає кінець рядка, розуміє, що наше твердження (statement), тобто вся поточна рядок, завершено, і переходить на наступний рядок.
print () - стандартна функція виведення в Python, в її дужках задаються аргументи - значення, які ми хочемо їй дати. Функції підвищують рівень абстракції мови і дозволяють вам не замислюватися над усіма складними речами, які ховаються за кожним рядком коду. У нашому випадку функція приймає один аргумент, але деякі функції можуть і не приймати аргументів - в такому випадку дужки будуть порожніми, але вказувати їх у функції потрібно обов'язково.
"Hello, <> !"- аргумент функції. Лапки вказують на те, що у нього тип даних string. Напис має бути вам зрозуміла, це класика, але, можливо, з пантелику зіб'є символ <>. Про нього трохи пізніше.
.format () - це метод, окремий випадок функції. Різницю між поняттями функції і методу я поясню в одному з наступних постів, поки лише зверну увагу на те, що метод .format () використовується в нашому випадку строго на об'єкті типу string, з яким його розділяє точка.
(Best_website) - аргумент методу format (), який виводиться на місці символу <> з пункту 6. Отже, якщо ви задали своїм улюбленим сайтом не Look At Me, а «Метрополь», то і виведеться значення, збережене в змінної, - "Metropol".
Інтерпретатор бачить, що дійшов до кінця коду і перериває роботу програми.
Програмістам потрібно не тільки вміти користуватися функціями, закладеними в мову, а й писати свої. Напишемо просту функцію, яка буде повертати квадрат заданого числа:
def square (number):
return number * number
Квадрат числа - це число, помножене саме на себе. Отже, щоб звести number в квадрат, потрібно помножити number на number. Давайте розберемо ці два рядки.
def - ключове слово, яке повідомить інтерпретатора, що слідом дано визначення (definition) функції.
square - назва функції. Ми називаємо функції за тими ж правилами, що і змінні.
(Number) - назва аргументу функції. У нашому випадку ми очікуємо, що це буде ціле число - тип даних integer.
. - двокрапка позначає, що на наступному рядку буде блок коду, що відноситься до поточного рядка. Весь вміст функції знаходиться всередині цього блоку, при цьому він відділяється від поточного рядка чотирма пробілами.
return - оператор, який говорить про те, що функція повертає наступне за ним твердження. У нашому випадку це аргумент, помножений сам на себе: int * int, де * - оператор множення. Функція може і нічого не повертати, якщо це не потрібно.
Щоб скористатися функцією, досить викликати її після двох цих рядків. Так, рядок print (square (9)) призведе до того, що програма виведе квадрат дев'яти - 81.
Останнє, що ми додамо сьогодні в скрипт, - стандартну для Python функцію input (), яка дозволить нам після запуску програми ввести число, квадрат якого ми хочемо отримати. Так як введене нами число буде типом даних string, потрібно перевести його в тип даних integer - робиться це за допомогою функції int (). Ось повний код нашої програми:
def square (int):
return int * int
number = int (input ( "Enter an integer:"))
print ( "The square of <> is <>.".format (number, square (number)))
Усередині функції input () знаходиться текст, який буде виводитися при введенні числа. Пропуск після двокрапки варто, щоб вводиться число не слід відразу за двокрапкою. Функція input () поміщається в int (), і результат присвоюється змінної number, яка потім використовується методом .format (), один з аргументів якого - виклик функції square ().
У цього скрипта є як мінімум дві проблеми. По-перше, він перестає працювати, якщо ми введемо після запуску не ціле число, а що-небудь ще - наприклад, букву. По-друге, він перестає працювати і відразу після того, як виведе відповідь, - а що якщо ми хочемо порахувати квадрати кількох чисел? Все це ми виправимо наступного разу, а поки постарайтеся переварити те, що ми з вами вивчили (або повторили) сьогодні.
До речі, про скрипт з першого домашнього завдання, яке я дав собі в дебютному випуску блогу: він сидить і чекає свого часу.
* - платні курси, але є пробний період