Въведение в Python
Част от тази глава е базирана на уроци от Geek Girls Carrots (https://github.com/ggcarrots/django-carrots).
Да напишем малко код!
Python запитване
За читателите у дома: тази част е разгледана във видеото Python Basics: Integers, Strings, Lists, Variables and Errors.
За да започнем да играем с Python, трябва да отворим команден ред на вашия компютър. Вече трябва да знаете как да го направите - научихте го в главата Въведение в командния ред.
След като сте готови, следвайте инструкциите по-долу.
Искаме да отворим конзола на Python, затова въведете python
в Windows или python3
в Mac OS/Linux и натиснете enter
.
command-line
$ python3
Python 3.6.1 (...)
Type "help", "copyright", "credits" or "license" for more information.
>>>
Вашата първа Python команда!
След като изпълните командата Python, подканата се промени в >>>
. За нас това означава, че засега можем да използваме само команди на езика Python. Не е нужно да пишете >>>
- Python ще направи това вместо вас.
Ако искате да излезете от конзолата на Python във всеки момент, напишете exit()
или използвайте прекия път Ctrl + Z
за Windows и Ctrl + D
за Mac/Linux. Тогава вече няма да виждате >>>
.
Засега не искаме да излизаме от конзолата Python. Искаме да научим повече за него. Нека започнем с въвеждане на някаква математика, като 2 + 3
и натискане на enter
.
command-line
>>> 2 + 3
5
Хубаво! Вижте как отговорът изскочи? Python знае математика! Можете да опитате и други команди като:
4 * 5
5 - 1
40 / 2
За да извършим експоненциално изчисление, да кажем 2 на степен 3, пишем в конзолата:
command-line
>>> 2 ** 3
8
Забавлявайте се с това за малко и след това се върнете тук. :)
Както можете да видите, Python е чудесен калкулатор. Ако се чудите какво още можете да направите...
Низове
Какво ще кажете за вашето име? Въведете първото си име в кавички така:
command-line
>>> "Ola"
'Ola'
Сега създадохте първия си низ! Това е поредица от знаци, които могат да бъдат обработени от компютър. Низът винаги трябва да започва и завършва с един и същ символ. Това могат да бъдат единични ('
) или двойни ("
) кавички (няма разлика!) Кавичките казват на Python, че това, което е вътре в тях, е низ.
Низовете могат да бъдат нанизани заедно. Опитайте това:
command-line
>>> "Hi there " + "Ola"
'Hi there Ola'
Можете също да умножите низове с число:
command-line
>>> "Ola" * 3
'OlaOlaOla'
Ако трябва да поставите апостроф във вашия низ, имате два начина да го направите.
Използвайки двойни кавички:
command-line
>>> "Runnin' down the hill"
"Runnin' down the hill"
или да избягате от апострофа с обратна черта (``):
command-line
>>> 'Runnin\' down the hill'
"Runnin' down the hill"
Хубаво, а? За да видите името си с главни букви, напишете:
command-line
>>> "Ola".upper()
'OLA'
Току що използвахте метода upper
върху вашия низ! Методът (като upper()
) е поредица от инструкции, които Python изпълнява върху даден обект ("Ola"
) след като е повикан.
Ако искате да знаете, от колко на брой букви е вашето име, има функция и за това!
command-line
>>> len("Ola")
3
Чудите ли се понякога защо, когато извиквате функции с .
на края на низа (като "Ola".upper()
), като понякога извиквате първо функцията и поставяте низа в скоби? Е, в някой случаи функциите принадлежат на обекти, като upper()
, които могат да се използва само върху низове. В този случай, наричам функцията метод. В други случаи, функциите които не принадлежат към определени типове и могат да бъдат използвани при различни обекти, също като len()
. Затова даваме "Ola"
като параметър на функцията len
.
Обобщение
Добре, достатъчно за низове. Досега научихте за:
- запитване -- писане на команди (код) в Python среда в резултат дава отговори на Python език.
- числа и низове -- в Python числата се използват за математически операции а низовете за текстови обекти.
- оператори – като
+
и*
, събират стойности за да получат нова - функции – като
upper()
иlen()
, извършващи се върху обектите.
Това са основите на всеки програмен език, който учите. Готови ли сте за нещо по-сложно? Залагаме, че сте!
Грешки
Нека опитаме нещо ново. Можем ли да вземем дължината на числото по същият начин, по който взехме дължината на нашето име? Напишете len(304023)
и натиснете enter
:
command-line
>>> len(304023)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()
Показа се първата ни грешка! е начина, по който ще ви показваме, че кода който се опитвате да пуснете няма да работи както се очаква. Грешките (дори и тези, които правим нарочно) са важна част от процеса на учене!
Казва, че обектът от тип "int" (integers, или още цели числа) нямат дължина. Какво можем да направим сега? Може би да напишем числото ни като низ? Низовете имат дължина, нали така?
command-line
>>> len(str(304023))
6
Работи! Използвахме функцията str
във функцията len
. str()
преобразува всичко в низове.
- Функцията
str
преобразува нещата като низове - Функцията
int
преобразува нещата като цели числа
Важно: можем да преобразуваме числа в текст, но не можем да направим обратното -- както и да е какво би било
int('hello')
?
Променливи
Важно понятие в програмирането са променливите. Променливата е нищо повече от име, което може да се използва по-късно в програмата. Програмистите ползват тези променливи да запазват данни. Това прави кода им по-четлив, така че не се налага да запомнят какви са тези неща.
Нека кажем, че искаме да създаде променлива с име name
:
command-line
>>> name = "Ola"
Пишем name равно на Ola.
Ако забелязахте, програмата ви не върна нищо както преди това. Как да разберем, че променливата съществува? Напишете name
и натиснете бутона enter
:
command-line
>>> name
'Ola'
Ихууу! Първата ти променлива! :) Винаги може да я промениш към какво се отнася:
command-line
>>> name = "Sonja"
>>> name
'Sonja'
Може да я използвате и във функции:
command-line
>>> len(name)
5
Страхотно, нали? Сега, променливите могат да са какво ли не -- също така и числа! Пробвайте това:
command-line
>>> a = 4
>>> b = 6
>>> a * b
24
Но какво ако използваме грешното име Можете ли да отгатнете какво ще се случи? Нека опитаме!
command-line
>>> city = "Tokyo"
>>> ctiy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'ctiy' is not defined
Грешка! Както виждате, Python има различни видове грешки, като тази се казва NameError. Python винаги ще ви дава тази грешка, ако се опитвате да използвате променлива, която все още не е дефинирана. Ако попаднете на тази грешка по-късно, вижте дали не сте сбъркали при писането на някое от имената.
Поиграйте се малко с това и вижте какво може да правите!
Фунцкията print
Пробвайте това:
command-line
>>> name = 'Maria'
>>> name
'Maria'
>>> print(name)
Maria
Когато напишете name
, Python интерпретатора отговаря със низово изображение на променливата 'name', където буквите 'M-a-r-i-a' са обградени от единични кавички. Когато кажем print(name)
, Python ще "отпечата" съдържанието на променливата на екрана, без кавичките, което е по-прилежно.
Както ще видим по-късно print()
също е полезен, когато искаме да отпечатаме неща от функциите, или когато искаме да отпечатаме неща на няколко реда.
Листове
Освен низовете и целите числа, Python има всякакви видове типове от обекти. Сега ще въведем една от тях наречена list. Листоверте са точно това, което си мислите, че са: обекти, които са листове от други обекти. :)
Давайте нататък и създайте лист:
command-line
>>> []
[]
Да, това е празен лист. Не е много полезен нали? Нека създадем лист с лотарийни номера. Не искаме да се повтаряме постоянно, така че ще използваме променлива:
command-line
>>> lottery = [3, 42, 12, 19, 30, 59]
И така, имаме лист! Какво можем да правим с него? Нека видим колко лотарийни числа има в листа? Имате ли си на идея коя функция може да се използва за това? Това вече го знаете!
command-line
>>> len(lottery)
6
Да! len()
може да ви даде броя на обектите в листа. Много удобно, нали? Може би и ще го сортираме:
command-line
>>> lottery.sort()
Това не връща нищо, само променя реда, в който числата са показани в листа. Нека го отпечатаме отново и видим какво се случва:
command-line
>>> print(lottery)
[3, 12, 19, 30, 42, 59]
Както се вижда, числата в листа са вече подредени от по-малката към по-голямата стойност. Поздравления!
Може би искаме да направим обратното?
command-line
>>> lottery.reverse()
>>> print(lottery)
[59, 42, 30, 19, 12, 3]
Ако искате да добавите нещо към вашия лист, може да го направите като напишете следната команда:
command-line
>>> lottery.append(199)
>>> print(lottery)
[59, 42, 30, 19, 12, 3, 199]
Ако искате да покажете само първото число, може да направите това като използвате индекси. Индекса е номерът, който казва къде в листа се появява елемента. Програмистите предпочитат да започват броенето от 0, така че първият обект в листа е с индекс 0, следващия е с 1 и т.н. Опитайте това:
command-line
>>> print(lottery[0])
59
>>> print(lottery[1])
42
Както може да видите, можете да достъпите различни обекти от листа си като използвате името на листа и индекс със квадратни скоби.
За да премахнете нещо от листа си ще трябва да използвате индексите, които научихме по-горе и метода pop()
. Нека пробваме пример и затвърдим това, което научихме до момента: ще отстраним първото число от листа ни.
command-line
>>> print(lottery)
[59, 42, 30, 19, 12, 3, 199]
>>> print(lottery[0])
59
>>> lottery.pop(0)
59
>>> print(lottery)
[42, 30, 19, 12, 3, 199]
Работи безупречно!
За повече веселба, пробвайте други индекси: 6, 7, 1000, -1, -6 or -1000. Пробвайте се да предположите какъв би могъл да е резултата от командата. Имат ли смисъл резултатите?
Можете да намерите лист с всички възможни методи в тази глава от документацията на Python: https://docs.python.org/3/tutorial/datastructures.html
Речници
За читателите у дома: тази част е показана във видеото Python Basics: Dictionaries.
Речника е подобен на листа, но можете да достъпвате стойностите му като погледнете за ключа вместо числения индекс. Синтаксисът за дефиниране на празен речник е:
command-line
>>> {}
{}
Това показва, че в момента създадохте празен речник. Ура!
Сега, опитайте се да напишете следната команда (опитайте се да заместите със своя информация):
command-line
>>> participant = {'name': 'Ola', 'country': 'Poland', 'favorite_numbers': [7, 42, 92]}
С тази команда, току що създадохте променлива с име participant
с три елемент-стойност (keys-value) двойки.
- Елементът
name
се отнася за стойността'Ola'
(низ
обект), country
се отнася за'Poland'
(другниз
),- and
favorite_numbers
се отнася за[7, 42, 92]
(лист
с три числа в него).
Може да проверите съдържанието на всеки от елементите с този синтаксис:
command-line
>>> print(participant['name'])
Ola
Виждате ли, подобно е на лист. Но не е необходимо да помните индекса -- само името.
Какво се случва, когато попитаме Python за стойността на елемент, който не съществува? Можете ли да познаете? Нека опитаме и видим:
command-line
>>> participant['age']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'age'
Вижте, друга грешка! Тази е KeyError. Python е много услужлив и ти казва, че елемент 'age'
не съществува в този речник.
Кога да използвате речник и кога лист? Това е добър въпрос. Помислете за отговор преди да видите следващия ред.
- Ако имате нужда просто от подредена последователност от елементи? Ползвайте лист.
- Ако трабва да асоциирате стойности с елементи, които искате да може да ги видите на по-късен етап (чрез елемент - by key)? Използвайте речник.
Речниците са като листове, но непостоянни, което означава, че могат да бъдат променени след като бъдат създадени. Може да добавяте нови двойки елемент-стойност към речника след като е създаден ето така:
command-line
>>> participant['favorite_language'] = 'Python'
Като при листовете, използването на метода len()
върху речника връща броя на двойката елемент-стойност в речника. Продължете и напишете тази команда:
command-line
>>> len(participant)
4
Надявам се да има смисъл това което правим досега. :) Готови ли сте за още веселба с речниците? Прочетете някои невероятни неща.
Можете да използвате метода pop()
да изтриете елемент от речника. Да кажем, че искаме да премахнем въведението, което се отанся за елемента 'favorite_numbers'
, напишете следната команда:
command-line
>>> participant.pop('favorite_numbers')
[7, 42, 92]
>>> participant
{'country': 'Poland', 'favorite_language': 'Python', 'name': 'Ola'}
Както се вижда, двойката елемент-стойност отнасяща се за 'favorite_numbers' беше премахната.
Както и това, можете да промените стойността, която отговаря на вече създаден елемент в речника. Напишете това:
command-line
>>> participant['country'] = 'Germany'
>>> participant
{'country': 'Germany', 'favorite_language': 'Python', 'name': 'Ola'}
Както виждате, стойността на елемента 'country'
беше променен от 'Poland'
на 'Germany'
. :) Вълнуващо? Ураа! Току що научихте още едно невероятно нещо.
Обобщение
Страхотно! Вече знаете много за програмирането. В тази последна част научихте за:
- грешки -- знаете как да четете и разбирате грешките които се показват, ако Python не разбира командата която сте задали
- променливи – имена на обектите, които ви позволяват да пишете код по-лесно и да правят кода ви по-четлив
- листове –листовете са обекти запазени в определен ред
- речници – обекти запазени като двойки от елемент-стойност (key-value pairs)
Вълнувате ли се за следващата част? :)
Сравняване на неща
За читателите у вома: тази част е показана във видеото Python Basics: Comparisons.
Голяма част от програмирането включва сравняване на неща. Какво е най-лесното нещо което може да се сравни? Числата! Нека видим как работи:
command-line
>>> 5 > 2
True
>>> 3 < 1
False
>>> 5 > 2 * 2
True
>>> 1 == 1
True
>>> 5 != 2
True
Дадохме на Python да сравни няколко числа. Както може да видите, Python не само че може да сравни числата, но може също така да сравнява и резултатите от метода. Супер, нали?
Чудите ли се защо използвахме два знака за равно ==
един до друг за да сравним дали числата са равни? Използваме едно равно =
за да причислим стойност на променливите. Винаги, ама винаги трябва да иползваме две от тях – ==
– ако искаме да проверим дали две неща са равни едно на друго. Можем също така да кажем, че не искаме двете неща да са равни едно на друго. Затова, използваме символа !=
, както е показано в примера по-горе.
Дайте на Python още две задачки:
command-line
>>> 6 >= 12 / 2
True
>>> 3 <= 2
False
Виждали сме >
и <
, но какво означават >=
и <=
? Четем ги по този начин:
- x
>
y означава: x е по-голямо от y - x
>
y означава: x е по-малко от y - x
<=
y означава: x е по-малко или равно на y - x
>=
y означава: x е по-голямо или равно на y
Страхотно! Искате ли да направите още нещо? Пробвайте това:
command-line
>>> 6 > 2 and 2 < 3
True
>>> 3 > 2 and 2 < 1
False
>>> 3 > 2 or 2 < 1
True
Може да дадете на Python колкото си искате числа да сравнява и ще ви даде отговор! Много умно, нали?
- and – ако използвате оператора
and
, двете сравнения трябва да са True за да бъде цялата команда True - or – ако използвате оператора
or
, само едното сравнение трябва да е True за да бъде цялата команда True
Чували ли сте за израза "сравнение на ябълки и портокали"? Нека пробваме подобно нещо в Python:
command-line
>>> 1 > 'django'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'int' and 'str'
Тук виждате, както при израза, Python не е способен да сравни число (int
) и низ (str
). Вместо това ни показва грешка TypeError и ни казва, че двата типа не могат да бъдат сравнени.
Булеви променливи
По между другото, току що научихте за нов тип обект в Python. Нарича се Булев (Boolean).
Има само два вида булеви променливи:
- True
- False
Но за Python да разбере това, винаги трябва да пишете 'True' (като първата буква е главна, а следващите малки). true, TRUE, and tRUE няма да работят – само True е правилно. (Същото се отнася и до 'False'.)
Булевите стойности могат също да са променливи! Вижте тук:
command-line
>>> a = True
>>> a
True
Може също да го направите по този начин:
command-line
>>> a = 2 > 5
>>> a
False
Практикувайте и се повеселете с булевите стойности като се опитате да напишете следните команди:
True and True
False and True
True or 1 == 1
1 != 2
Поздраления! Булевите стойности са едни от най-готините неща в програмирането, и ти току що се научи как да ги използваш!
Запази!
За читателите у дома: тази част е показана във видеото Python Basics: Saving files and "If" statement
До тук писахме всичкия си python код в интерпретатора, който ни ограничава да използваме само едни ред да впишем кода. Обикновено програмите са запазени във файлове и после изпълнени от интерпретатора или компилатора ни. Досега пускахме нашите програми по една на ред в Python интерпретатора. Ще са ни необходими малко повече редове от код за следващите няколко задачи, затова бързо ще направим това:
- Излезем от Python интерпретатора
- Отворим редактор за текс по избор
- Запазим малко код в нов python файл
- Пуснете го!
За да излезнем от Python интерпретатора, който използвахме, пише следната функция exit()
command-line
>>> exit()
$
Това ще ви върне в началното състояние на конзолата (терминала).
По-рано избрахме нашия редактор от секцията за code editor. Сега трябва да го отворим и да напишем малко код в нов файл (ако използвате Chromebook, създайте нов файл в cloud IDE и отворете файла, който ще е в редактора):
editor
print('Hello, Django girls!')
Очевидно, вече сте по-обиграни Python разработчици, така че напишете код, който научихте днес.
Сега трябва да запазим файла и да му дадем описателно име. Нека наречем файла python_intro.py и го запазим на началния си екран. Можем да именуваме файла си както пожелаем, но е важно да сме сигурни, че завършва на .py. Разширението .py казва на операционната система, че това е Python executable file и Python може да го обработи.
Забележка: Трябва да забелязахте, че едни от най-готините неща в редактора са: цветовете! В конзолата на Python всичко беше един цват; сега трябва да виждате, че
def
, както ще видим по-долу). Това е една от причините да изполваме редактор за писане на код. :) :)
С вече запазения файл е време да го пуснем! Да използваме това, което научихме от секцията с командите. Ползвайте терминала (конзолата) за да смените директорията до началния си екран (desktop).
Ако се затруднявате, поискайте помощ. Затова са менторите!
Сега ползвайте Python за да изпълни кода във файла ето така:
command-line
$ python3 python_intro.py
Hello, Django girls!
Забележка: на Windows 'python3' не е разпознат като команда. Вместо това, използвайте 'python' за да стартирате файла:
command-line
> python python_intro.py
Браво! Току що пуснахте първата си програма на Python, която беше запазена на файл. Чувствате ли се страхотно?
Сега може да се прехвърлим на по-важно средство в програмирането:
If … elif … else
Много неща в кода трябва да се изпълнят само ако са преминали определени условия. Затова Python има нещо, наречено if условна конструкция.
Заместете кода във файла си python_intro.py с това:
python_intro.py
if 3 > 2:
Ако запазим и стартираме файла ще видим грешка като тази:
command-line
$ python3 python_intro.py
File "python_intro.py", line 2
^
SyntaxError: unexpected EOF while parsing
Python очаква от нас да дадем следващи инсктрукции какво да се изпълни в условието 3 > 2
за да бъде вярно (или True
за същата цел). Нека накараме Python да отпечата “It works!”. Променете кода си във файла с това:
python_intro.py
if 3 > 2:
print('It works!')
Забелязахте ли как изписахме следващия ред от код с 4 празни места навътре? Трябва да направим това за да може Python да знае, кой код да изпълни в случай, че е вярно условието. Може да използвате едно празно място, но почти всеки Python програмист използва 4, тъй като изглежда по-прилежно. Използването на бутона Tab също се равнява на 4 места, ако сте направили редактора си да прави така. Когато направите избор не го променяйте! Ако вече сте използвали 4 места за в бъдеще ползвайте 4 места - в противен случай може да попаднете на затруднения.
Запазете и го стартирайте отново:
command-line
$ python3 python_intro.py
It works!
Забележка: Помнете, че на Windows, 'python3' не се разпознава като команда. От сега нататък, заместете 'python3' с 'python' за да изпълните файла.
Какво ако условието не е вярно (True)?
В предходните примери, кода се изпълняваше само ако условието е вярно (True). Но Python има също elif
и else
условия:
python_intro.py
if 5 > 2:
print('5 is indeed greater than 2')
else:
print('5 is not greater than 2')
Когато това се изпълни ще се отпечата:
command-line
$ python3 python_intro.py
5 is indeed greater than 2
Ако 2 беше по-голямо число от 5, тогава втората команда щеше да се изпълни. Нека видим как работи elif
:
python_intro.py
name = 'Sonja'
if name == 'Ola':
print('Hey Ola!')
elif name == 'Sonja':
print('Hey Sonja!')
else:
print('Hey anonymous!')
и се изпълнява:
command-line
$ python3 python_intro.py
Hey Sonja!
Видяхте ли какво се случи там? elif
ви даде възможност да добавите още едно условие в случай, че предното се провали.
Може да добавяте колкото си искате elif
условия след първоначалното if
условие. Например:
python_intro.py
volume = 57
if volume < 20:
print("It's kinda quiet.")
elif 20 <= volume < 40:
print("It's nice for background music")
elif 40 <= volume < 60:
print("Perfect, I can hear all the details")
elif 60 <= volume < 80:
print("Nice for parties")
elif 80 <= volume < 100:
print("A bit loud!")
else:
print("My ears are hurting! :(")
Python преминава и тества през всеки ред и отпечатва:
command-line
$ python3 python_intro.py
Perfect, I can hear all the details
Коментари
Коментрите са редове, започващи с #
. Може да пишете каквото искате след #
и Python ще го игнорира. Коментарите са направени да правят кода по-лесен за четене и разбиране от другите хора.
Нека видим как изглежда:
python_intro.py
# Change the volume if it's too loud or too quiet
if volume < 20 or volume > 80:
volume = 50
print("That's better!")
Не е необходимо да пишете коментар за всеки ред от код, но те са много подходящи да обяснят какво прави самия код, или да дадат обобщение, когато се прави нещо сложно.
Обобщение
В последните няколко упражнения научихте как да:
- сравнявате – в Python може да сравнявате като използвате
>
,>=
,==
,<=
,<
иand
,or
оператори - използвате булеви променливи – типа на обекта може да приема само две стойности:
True
илиFalse
- запазвате файлове – запазване на кода във файлове, така че да могат да се изпълняват по-големи програми.
- използвате if … elif … else – условна конструкция, която ви позволява да изпълнявате код когато определени условия се изпълнят.
- пишете коментари - редовете в Python, които не се изпълняват и дават пояснения за кода ви
Време е за последната част от тази глава!
Вашите собствени функции!
За читателите у дома: тази част е показана във видеото Python Basics: Functions.
Помните ли функциите като len()
, които изпълнихте в Python? Така, добри новини - сега ще научите как да напишете свои фукции!
Функцията е последователност от инструкции, така че Python да може да я изпълнин. Всяка функция в Python започяа с ключовата дума def
, с което се дава име на функцията и може да има няколко параметъра. Нека пробваме. Заместете кода във файла python_intro.py със следното:
python_intro.py
def hi():
print('Hi there!')
print('How are you?')
hi()
Добре, първата ви функция е готова!
Може би се чудите защо написахме името на функцията в края на файла. Когато пишем def hi():
и следващите редове започват по-навътре, това оказва какво трябва да направи функцията hi()
. Python ще прочете и запомни тези инструкции, но няма да изпълни все още функцията. За да кажем на Python да изпълни функцията, трябва да извикаме вункцията с hi()
. Python чете файла и изпълнява от горе до долу, затова трябва да дефинираме функцията преди да сме я повикали.
Нека го стартираме и видим какво се случва:
command-line
$ python3 python_intro.py
Hi there!
How are you?
Забележка: ако не работи не се паникьосвайте! Резултатът ще ви помогне да разберете защо:
- Ако получите грешка
NameError
, това най-вероятно означава, че сте направили грешка при писането, такаче трябва да проверите дали имената са същите при създаването на функциятаdef hi():
и когато я извикватеhi()
. - Ако получите грешка
IndentationError
, вижте дали двата реда с функциятаprint
са отместени на едно и също растояние: python иска кода във функцията да бъде безупречно подреден. - Ако на изхода няма нищо, проверете дали последното
hi()
не е отместено - ако е , тази част също ще се превърне в част от функцията и никога няма да се изпълни
Нека съставим първата си функция с параметри. Ще променим предния пример - функцията, която казва 'hi' на човека, който пуска програмата - с име:
python_intro.py
def hi(name):
Както се вижда, дадохме на функцията си стойност, която нарекохме name
:
python_intro.py
def hi(name):
if name == 'Ola':
print('Hi Ola!')
elif name == 'Sonja':
print('Hi Sonja!')
else:
print('Hi anonymous!')
hi()
Запомнете: print
функцията е поместена 4 места навътре спрямо if
условието. Това е така, защото функцията се изпълнява, ако е изпълнено условието. Нека видим как работи:
command-line
$ python3 python_intro.py
Traceback (most recent call last):
File "python_intro.py", line 10, in <module>
hi()
TypeError: hi() missing 1 required positional argument: 'name'
Опаа, грешка. За щастие, Python ни показва много полезно съобщение за грешката. Казва ни, че фукнцията hi()
(която ние дефинирахме) има аргумент, който се изисква (с име name
) и че сме забравили да го приложим, когато извикваме фунцкията. Нека оправим това в края на файла:
python_intro.py
hi("Ola")
И да стартираме отначало:
command-line
$ python3 python_intro.py
Hi Ola!
А ако сменим името?
python_intro.py
hi("Sonja")
И стартираме отново:
command-line
$ python3 python_intro.py
Hi Sonja!
Сега, какво мислите, че ще стане ако напишете ново име? (Не Ola или Sonja.) Опитайте и вижте дали сте прави. Трябва да отпечата това:
command-line
Hi anonymous!
Това е страхотно, нали? При това не трбва да се повтаряте всеки път, когато смените името на човека, който функцията трябва да поздрави. Затова са ни необходими функциите - никога да не повтаряш кода си!
Нека опитаме нещо по-хитро - имаме повече от две имена и писането на условия за всяко едно от тях ще отнеме много време, нали така? Заместете съдържание на файла си със следното:
python_intro.py
def hi(name):
print('Hi ' + name + '!')
hi("Rachel")
Нека извикаме кода:
command-line
$ python3 python_intro.py
Hi Rachel!
Поздравления! Току що научихте как да пишете функции! :)
Цикли
За читателите у дома: тази част е показана във видеото Python Basics: For Loop
Това вече е последната част. Мина бързо, нали? :)
Програмистите не обичат да е повтарят. Програмирането се отнася до автоматизация, така че не искаме да поздравяваме всеки човек по име като изписваме за всеки по отделно, нали? Ето къде циклите идват в употреба.
Все още си спомняте листовете? Нека направим лист с момичета:
python_intro.py
girls = ['Rachel', 'Monica', 'Phoebe', 'Ola', 'You']
Искаме да поздравим всяка една от тях по име. Имаме функцията hi
да направи това, така че нека я използваме в цикъл:
python_intro.py
for name in girls:
Конструкцията for
се държи подобно на конструкцията if
; кода под него трябва да е отместен с четири места навътре.
Ето целия код, който трябва да е във файла:
python_intro.py
def hi(name):
print('Hi ' + name + '!')
girls = ['Rachel', 'Monica', 'Phoebe', 'Ola', 'You']
for name in girls:
hi(name)
print('Next girl')
И когато го стартираме:
command-line
$ python3 python_intro.py
Hi Rachel!
Next girl
Hi Monica!
Next girl
Hi Phoebe!
Next girl
Hi Ola!
Next girl
Hi You!
Next girl
Както виждате всичко, което сложите вътре във for
конструкцията с отместването ще бъде повторено за всеки елемент от листа girls
.
Може също да използвате for
цикъл за числа като използвате фунцкията range
:
python_intro.py
for i in range(1, 6):
print(i)
Което ще отпечата:
command-line
1
2
3
4
5
range
е функция, която създава лист от номера едно след друго (тези номера са дадени от вас като стойности).
Забележете, че втория параметър, който сте дали не се включва в листа с показаните числа от Python (което означава, че range(1, 6)
брои от 1 до 5, без да включва числото 6). Това е така, защото "range" е полу-отворена функция, което означава, че включва първата стойност, но не и последната.
Обобщение
Това е! Ти си върха! Това беше сложна глава, така че трябва да сте горди със себе си. Ние определено сме горди с това, което постигнахте досега!
За официалното и пълно ръководство на Python посетете visit https://docs.python.org/3/tutorial/. Това ще ви даде много по-подробни и цялостни знания за езика. Със здраве! :)
Може би искате да направите нещо друго за кратко - разтягане, разходка, да ви отпочинат очите - преди да отидем към следващата глава. :)