Імена змінних і ключові слова


Для перетворення абстрактної, не проявленої в матеріальному світі ідеї в код програми необхідно виділити сутність і дії, придумати їм назви, щоб ними управляти, прослідкувати зв'язки між ними та їх властивостями. Ви, напевно, здогадалися, що іменами сутностей, з якими працює програміст, служать змінні. Тому варто вибирати осмислені назви змінних.

Імена змінних можуть бути довільної довжини, але прагніть вибирати не дуже короткі і не дуже довгі імена – від цього залежить читабельність програми.

При визначенні імен змінних в Python можна використовувати будь-які латинські букви, цифри і знак _ (знак підкреслення). Знак підкреслення може використовуватися для розділення слів складових ім'я змінної: наприклад, user_name або full_price. Але назви змінних не можуть починатися з цифри.

>>> 1message = "Hello world!"

File "<stdin>", line 1

1message = "Hello world!"

^

SyntaxError: invalid syntax

 

>>> price_in_$ = 300

File "<stdin>", line 1

price_in_$ = 300

^

SyntaxError: invalid syntax

 

>>> class = "Computer Science 101"

File "<stdin>", line 1

class = "Computer Science 101"

^

SyntaxError: invalid syntax

Розберемо ці три приклади. Перший вираз інтерпретатору не сподобався, і він відзначив знаком ^, де саме у нього виникли претензії: він вказав на найменування змінної 1message. Дійсно, ім'я 1message є некоректним, адже воно починається з цифри. Аналогічна ситуація з іменем price_in_$: воно містить неприпустимий символ $. Але що інтерпретатору не подобається в третьому виразі? Давайте спробуємо змінити ім'я змінної class на що-небудь схоже, наприклад, class_:

>>> class_ = "Computer Science 101"

>>> print class_

Computer Science 101

Тепер все гаразд. У чому ж справа? Чому ім'я class викликало помилку, а ім'я class_ – ні? Які є припущення? Поставимо ще один експеримент:

>>> print = "Some message"

File "<stdin>", line 1

print = "Some message"

^

SyntaxError: invalid syntax

Знайома ситуація, чи не так? Проаналізуємо те, що ми отримали. Як ім'я змінної ми намагалися використовувати команду print і отримали аналогічну помилку, тому слово class, швидше за все, теж є командою або якимсь службовим словом.

Дійсно, слова class і print є так званими ключовими словами.

Всього в Python зарезервовано 29 ключових слів:

and del for is raise
assert elif from lambda return
break else global not try
class except if or while
continue exec import pass yield
def finally in print  

Слід пам’ятати, що інтерпретатор розрізняє великі і маленькі букви, тобто message і Message будуть різними змінними.

· Вправа. Напишіть програму, яка підтверджує, що інтерпретатор Python розрізняє рядкові і заголовні букви в іменах змінних.

Вирази

Вираз – це послідовність синтаксичних одиниць, що описує елементарну дію мовою програмування.

Наприклад, print "Hello world!" і message = n є виразами.

Коли ви набираєте вираз в командному рядку, інтерпретатор виконує його і виводить результат, якщо він існує. Результатом виразу print "Hello world!" є рядок: Hello world!. Вираз привласнення нічого не виводить.

Виконання виразів



По суті, вираз – це послідовність значень, змінних і операторів.

Якщо ви напишете вираз, то інтерпретатор, після виконання, виведе його на екран:

>>> 1 + 1

Значення само по собі розглядається як вираз, так само як і змінна:

>>> 17

>>> x = 2

>>> x

Але виконання і виведення результату виконання виразу не зовсім те ж саме:

>>> message = "Hello world!"

>>> message

"Hello world!"

>>> print message

Hello world!

Коли Python виводить значення виразу в командному режимі, він використовує той же формат, що використовується при введенні цього значення. Наприклад, при виведенні рядків він бере їх в лапки. Команда print також виводить значення виразу, але у випадку з рядками, вона виводить вміст рядка без лапок.

У командному режимі інтерпретатор Python зберігає результат останнього виразу в спеціальній змінній _ (знак підкреслення). Ви можете переглянути результат виконання останнього виразу і використовувати його в своїх виразах:

>>> 1.25 + 1

2.25

>>> print _

2.25

>>> 5 + _

7.25

Оператори і операнди

Операторами називають спеціальні символи (або послідовності символів) що позначають певні операції. Наприклад, знаком «+» позначають операцію додавання, а знаком «*» – множення. Значення, над якими виконується операція, називають операндами.

Всі нижченаведені вирази, з погляду Python є коректними:

20+32 hour-1 hour*60+minute minute/60 5**2 (5+9)*(15-7)

Значення більшості з них неважко зрозуміти. Значення символів +, - * і / у Python такі ж, як в математиці. Дужки використовуються для групування операцій, а двома зірочками (**) позначається операція піднесення до степеня.

Якщо операндом є змінна, то перед обчисленням виразу проводиться підстановка на її місце значення, на яке вказує ця змінна.

Додавання, віднімання, множення і піднесення до степеня працюють в звичний для нас спосіб, але дія операції ділення дещо відрізняється. Це ілюструє наступний приклад:

>>> minute = 59

>>> minute/60

Значення змінної minute рівне 59; результат ділення 59 на 60 повинен бути 0.98333, а не 0. Причиною цієї невідповідності є те, що Python виконує цілочисельне ділення.

Коли обидва операнди – цілі числа, і Python вважає, що результат теж повинен бути цілим. Тому цілочисельне ділення завжди відкидає дробову частину.

Як отримати дробовий результат? Достатньо примусово перетворити один з операндів в дробове число:

>>> minute = 59

>>> float(minute)/ 60

0.983333333333

Інший варіант:

>>> minute = 59

>>> minute / 60.0

0.983333333333

Якщо один з операндів належить до типу float, то другий автоматично перетворюється до цього типу, як до складнішого.

Порядок операцій

Більшість мов програмування дозволяють групувати в одному виразі кілька операцій. Це зручно, наприклад, якщо потрібно порахувати процентне співвідношення двох величин:

>>> print 100 * 20 / 80, "%"

25 %

В даному прикладі обчислюється процентне співвідношення двох чисел: 20 і 80. Після результату виразу виводиться символ % – інтерпретатор обчислює арифметичне вираз і виводить результат, а потім дописує рядок, що стоїть після коми.

Коли у виразі є більш ніж один оператор, послідовність виконання операцій залежить від порядку їх проходження у виразі, а також від їх пріоритету. Пріоритети операторів в Python повністю співпадають з пріоритетами математичних операцій.

Найвищий пріоритет у дужок, які дозволяють змінювати послідовність виконання операцій. Таким чином, операції в дужках виконуються в першу чергу.

Наприклад, 2*(3-1) рівне 4 (1+1)**(5-2) – 8. Дужки зручно використовувати і для того, щоб вирази було легко читати, навіть якщо їх наявність у виразі ніяк не відбивається на результаті: (100*20)/80.

Наступний пріоритет у операції піднесення до ступеня, тому 2**1+1 рівне 3, а не 4, і вираз 3*1**3 дасть результат 3, а не 27.

Множення і ділення мають однаковий пріоритет, вищий, ніж в операцій додавання і віднімання. 2*3-1 дорівнює 5, а не 4; 2/3-1 дорівнює -1, а не 1 (результат цілочисельного ділення 2/3=0).

Оператори з однаковим пріоритетом виконуються зліва направо. Отже в виразі 100*20/80 множення виконується першим (виразу набуває вигляд 2000/80); потім виконується ділення, значення, що видає в результаті, 25. Якби операції виконувалися справа наліво, то результат вийшов би іншим.

· Вправа. Змініть вираз 100*20/80 так, щоб послідовність виконання операцій була зворотною. Який результат ви отримали після його виконання і чому?

 

Рядки

Перейдемо до докладнішого вивчення типів даних, адже для ефективнішого управління даними корисно розуміти, як вони влаштовані. Почнемо з одного з вже знайомих нам типів – рядок (str).

Прості операції над рядками

Взагалі кажучи, над рядками не можна проводити ті ж операції, що і над числами, тому наступні приклади працювати не будуть:

message-1 "Hello"/123 "Hello"*"world!" "15"+2

Але оператор «+» працює з рядками, хоча означає іншу операцію: конкатенацію або зчеплення рядків.

>>> str1 = "Hello"

>>> str2 = " world"

>>> print str1 + str2 + "!"

Hello world!

Зверніть увагу, що другий рядок починається з пропуску. Пропуск такий же символ як і будь-який інший.

Оператор * теж можна використовувати по відношенню до рядків, але за умови, що одним з операндів буде ціле число. В цьому випадку оператор * символізує операцію повторення рядка (або ітерацію). Наприклад, 'Fun'*3 видасть результат 'FunFunFun'. Можна прослідкувати аналогію між операціями над числами і операціями над рядками: так само, як 4*3 еквівалентно 4+4+4, 'Fun'*3 еквівалентно 'Fun'+'Fun'+'Fun'.

Але з іншого боку, конкатенація і повторення мають кілька істотних відмінностей від додавання і множення.

· Вправа. Який результат буде отримано після виконання виразу "hello"+" world"*3? Які висновки можна зробити на основі цього результату?

Оператор індексування

Ми вже навчилися виконувати деякі операції над рядками, але до цього моменту ми працювали з рядками як з єдиним цілим. Відомі нам операції над рядками (конкатенація і ітерація) є, по суті аналогами додавання і множення чисел, але цей набір неповний – не вистачає аналогів операцій віднімання і ділення.

В програмуванні існує цілий набір спеціальних операцій і функцій, символів, що дозволяють працювати з наборами, які складають рядок – підрядок.

Простий з них – оператор індексування. Даний оператор дозволяє отримати будь-який одиночний символ з рядка. У нього досить простий синтаксис:

РЯДОК[ІНДЕКС]

Індекс, що вказується в квадратних дужках, є порядковим номером символу в рядку:

>>> 'Hello!'[1]

'e'

Інтерпретатор чомусь повернув не перший, а другий символ рядка. Пояснюється ця семантична помилка дуже просто. Річ у тому, що комп'ютер починає відлік не з одиниці, а з нуля. Перевіримо:

>>> 'Hello!'[0]

'H'









Последнее изменение этой страницы: 2016-04-07; Нарушение авторского права страницы

infopedia.su не принадлежат авторские права, размещенных материалов. Все права принадлежать их авторам. Обратная связь