1. час: Увод у Џупајтер (Jupyter)¶
На овом часу ћеш научити:
- шта је Џупајтер (Jupyter), како се крећеш кроз Џупајтер радну свеску (Jupyter Notebook) и како се Џупајтер радна свеска користи за рачунање израза;
- како се у Џупајтеру користе променљиве и како се радна свеска користи покретање мањих Пајтон (Python) програма; и
- шта су библиотеке функција и како се позивају функције из стандардних библиотека.
1.1. Џупајтер (Jupyter) уме да рачуна¶
Џупајтер (Jupyter) је интерактивна радна свеска у коју можеш да уносиш текст (као текст ког управо читаш), да рачунаш, да покрећеш једноставније Пајтон програме, да обрађујеш податке, да приказујеш податке у виду табеле и дијаграма, и још много тога.
Свака Џупајтер радна свеска се састоји из низа ћелија, а свака ћелија може да садржи текст, математички израз или низ Пајтон наредби. За сада нећемо објашњавати како се у Џупајтер ћелију уноси текст, већ ћемо пажњу усмерити на рачунање израза и извршавање Пајтон наредби.
Када се у Џупајтер ћелију унесе неки израз или Пајтон наредба садржај ћелије се може израчунати тако што се кликне на дугме Run при врху стране:
Ево примера:
3 * 19
Ево још неколико примера:
(12 + 51) * 14
2**(5**3)
1.2. Џупајтер уме да користи променљиве и да извршава Пајтон команде¶
Понекад је згодно именовати вредности, поготово ако се ради о компликованим бројевима, тако да касније можемо да их користимо тако што наведемо само име. На пример, према попису из 2011. године у Србији живи 7.186.862 становника. Наредба
StSrb_2011 = 7186862
ће у систем увести нову променљиву StSrb_2011
којој ће бити додељена вредност 7186862
. Да се подсетимо: имена променљивих у Пајтону морају да почну словом и могу да садрже слова, цифре и специјални знак _
(доња црта).
StSrb_2011 = 7186862
Након извршавања ове ћелије систем неће вратити никакав одговор. Просто је запамтио да променљива StSrb_2011
има вредност 7.186.862.
Деца узраста 0-14 година чине 14,27% укупног броја становника. Број деце према попису из 2011. године можемо да израчунамо овако:
StSrb_2011 * 14.27 / 100
Приметимо да се приликом записивања децималних бројева у Пајтону користи децимална тачка, а не децимални зарез, како је то прописано нашим правописом!
Хајде, сада, да решимо један задатак за 4. разред основне школе.
Ана, Бојан и Влада су купили чоколадице. Ана је купила 3 чоколадице, Бојан за две више од Ане, а Влада два пута више од Ане и Бојана заједно. Колико чоколадица су заједно купили Ана, Бојан и Влада?
Ево како се овај задатак може записати као низ Пајтон наредби:
Ana = 3
Bojan = Ana + 2
Vlada = (Ana + Bojan) * 2
Ana + Bojan + Vlada
Прве три наредбе су наредбе доделе: неким променљивим додељујемо неке вредности. Последња наредба садржи само математички израз. Пошто радимо у интерактивном окружењу (што значи да Џупајтер одмах даје одговоре на питања која му поставимо), ако је последња наредба у ћелији само израз систем ће вратити вредност тог израза као резултат извршавања ћелије.
Претходни програм смо могли да напишемо и овако:
Ana = 3
Bojan = Ana + 2
Vlada = (Ana + Bojan) * 2
print(Ana + Bojan + Vlada)
Овај пут наредба print
исписује вредност израза, а систем ништа не враћа као резултат извршавања ћелије (примети да након извршавања ћелије систем није вратио одговор у облику Out[ ]:
).
При раду са интерактивним окружењима згодно је усвојити следећи манир: наредбу print
користимо само у ситуацијама у којима треба да прикажемо вредности неколико израза, или ако желимо да испис мало улепшамо. На пример овако:
Ana = 3
Bojan = Ana + 2
Vlada = (Ana + Bojan) * 2
print("Ана, Бојан и Влада заједно имају", Ana + Bojan + Vlada, "чоколадице.")
Ако једна чоколадица кошта 5 динара, колико новца је потрошила Ана, колико Бојан, а колико Влада?
print("Ана је потрошила", Ana * 5, "динара")
print("Бојан је потрошио", Bojan * 5, "динара")
print("Милан је потрошио", Vlada * 5, "динара")
1.3. Библиотеке функција¶
У модерним програмским језицима, а Пајтон је један од њих, могу да се ураде невероватне ствари зато што долазе са обиљем функција које су већ испрограмиране. Тако се кориснику система (или програмеру) умногоме олакшава живот: већина ствари које просечном кориснику требају су већ испрограмиране, само треба наћи одговарајућу функцију!
Да би се корисници лакше снашли у овом обиљу, све функције које долазе уз програмски језик (односно, одговарајуће окружење) су груписане у библиотеке функција.
Рецимо, библиотека математичких функција се зове math
. Она садржи функције као што су sqrt
(која рачуна квадратни корен), sin
(која рачуна синус угла) и cos
(која рачуна косинус угла), али и математичке константе као што је pi
(која представља добру апроксимацију броја π).
На пример, програм који рачуна обим круга датог полупречника изгледа овако:
from math import pi
r = float(input("Unesi poluprecnik kruga: "))
obim = 2 * r * pi
print("Obim kruga je:", obim)
Први ред у овом програму је једина новина за тебе. Он показује како се из неке библиотеке може увести функција или константа која нам је потребна:
from math import pi
дословно значи: из библиотеке math
увези појам pi
. Тиме смо у програм увели име pi
и слободно можемо да га користимо.
Ево још једног примера. Написаћемо Пајтон програм који одређује хипотенузу c правоуглог троугла ако знамо његове катете a и b. (Да се подсетимо, према Питагориној теореми је c=√a2+b2.)
За овај програм ће нам требати функција sqrt
која рачуна корен неког броја и која се такође налази у библиотеци math
.
from math import sqrt
a = float(input("Unesi katetu a: "))
b = float(input("Unesi katetu b: "))
c = sqrt(a**2 + b**2)
print("Hipotenuza c je:", c)
Претходна два примера представљају комплетне мале програме: податке смо учитали наредбом input
, обрадили смо их на одговарајући начин, и резултате смо исписали наредбом print
.
Рад са интерактивним окружењима нам омогућује да уместо целих програма пишемо "парчиће кода" које можемо да мењамо како нам одговара и да их извршавамо коликогод пута желимо. Тако се лакше експериментише са подацима (што је важан део модерног разумевања обраде података и о томе ћемо причати касније), и штеди време. Тада углавном не користимо наредбу input
већ директно у код унесемо вредности које нас интересују.
На пример, претходни проблем (рачунање хипотенузе правоуглог троугла) можемо у интерактивном окружењу да решимо и овако:
from math import sqrt
a, b = 3, 4
sqrt(a**2 + b**2)
Наредба a, b = 3, 4
значи да ће а
добити вредност 3, а b
вредност 4. Резултат извршавања ћелије је вредност израза sqrt(a**2 + b**2)
.
1.4. Задаци¶
Задатке који следе реши у Џупајтеру.
Задатак 1. Према попису из 2011. године Србија има 7.186.862 становника. Процењује се да сваке године наша земља изгуби око 35.000 становника (што због исељавања, што због негативног прираштаја -- више људи умре него што се роди деце). Колики је био процењени број становника Србије у 2014. години?
Задатак 2. Горан, Дејан и Ђорђе скупљају сличице фудбалера. Горан је скупио 746 сличица, Дејан има дупло мање од Горана, а Ђорђе два пута више од Горана и Дејана заједно. Колико сличица је скупио Дејан, а колико Ђорђе?
Задатак 3. Напиши Пајтон програм који учитава полупречник круга, а онда рачуна и штампа његову површину. (Помоћ: pi
се налази у библиотеци math
.)
Задатак 4. Растојање две тачке дате у равни својим координатама A(x1,y1) и B(x2,y2) може се израчунати помоћу формуле
d(A,B)=√(x1−x2)2+(y1−y2)2Напиши Пајтон програм који учитава координате две тачке у равни и потом рачуна и штампа њихово растојање. (Помоћ: sqrt
се налази у библиотеци math
; ако ти ова формула делује застрашујуће не брини: то само прерушена Питагорина теорема!)
Задатак 5. Факторијел броја n је производ свих бројева од 1 до n и означава се овако:
n!=1⋅2⋅3⋅⋯⋅n.Израчунај број 200! и утврди са колико нула се завршава. (Помоћ: библиотека math
има функцију factorial
.)
Задатак 6. Користећи парче кода наведено у ћелији испод нађи још један пар целих бројева a и b такав да је хипотенуза правоуглог троугла са катетама a и b целобројна. Уместо 3, 4
унеси неки други пар целих бројева, изврши ћелију и експериментиши! (Такве тројке целих бројева се зову Питагорине тројке.)
from math import sqrt
a, b = 3, 4
sqrt(a**2 + b**2)