Увод у Џупитер (Jupyter)¶
У овој лекцији ћеш научити:
шта је Џупитер (Jupyter), како се крећеш кроз Џупитер радну свеску (Jupyter Notebook) и како се Џупитер радна свеска користи за рачунање израза;
како се у Џупитеру користе променљиве и како се радна свеска користи покретање мањих Пајтон (Python) програма; и
шта су библиотеке функција и како се позивају функције из стандардних библиотека.
Џупитер (Jupyter) уме да рачуна¶
Џупитер (Jupyter) је интерактивна радна свеска у коју можеш да уносиш текст (као текст ког управо читаш), да рачунаш, да покрећеш једноставније Пајтон програме, да обрађујеш податке, да приказујеш податке у виду табеле и дијаграма, и још много тога.
Свака Џупитер радна свеска се састоји из низа ћелија, а свака ћелија може да садржи текст, математички израз или низ Пајтон наредби. За сада нећемо објашњавати како се у Џупитер ћелију уноси текст, већ ћемо пажњу усмерити на рачунање израза и извршавање Пајтон наредби.
Када се у Џупитер ћелију унесе неки израз или Пајтон наредба садржај ћелије се може израчунати тако што се кликне на дугме Run при врху стране:

или се на тастатури притисне [CTRL]+[ENTER]
Ево примера:
In [1]: 3 * 19
Out[1]: 57
In [2]: (12 + 51) * 14
Out[2]: 882
In [3]: 2**(5**3)
Out[3]: 42535295865117307932921825928971026432
Да се подсетимо, две звездице у Пајтону означавају степеновање.
Џупитер уме да користи променљиве и да извршава Пајтон команде¶
Понекад је згодно именовати вредности, поготово ако се ради о компликованим бројевима као што је то \(\pi\) или када се ради о компликованим изразима. Те вредности касније можемо да користимо тако што наведемо име које смо им дали. На пример, процењује се да је на дан 1.7.2019. на свету било 7.714.576.923 људи. Наредба
BrLjudiNaSvetu_2019 = 7714576923
ће у систем увести нову променљиву BrLjudiNaSvetu_2019
којој ће бити додељена вредност 7714576923. Да се подсетимо: имена променљивих у Пајтону морају да почну словом и могу да садрже слова, цифре и специјални знак _ (доња црта).
In [4]: BrLjudiNaSvetu_2019 = 7714576923
Након извршавања ове ћелије систем неће вратити никакав одговор. Просто је запамтио да променљива BrLjudiNaSvetu_2019
има вредност 7.714.576.923. Процењује се да 27,8% становништва света живи у градовима. То значи да у градовима живи оволико људи:
In [5]: BrLjudiNaSvetu_2019 * 27.8 / 100
Out[5]: 2144652384.5939999
Приметимо да се приликом записивања децималних бројева у Пајтону користи децимална тачка, а не децимални зарез, како је то прописано нашим правописом! Хајде сада да решимо још један задатак.
Задатак¶
Милица је желела да купи панталоне које су коштале 6.799,99 динара, али јој је мама рекла да су прескупе. Зато је Милица сачекала сезону снижења и када је следећи пут обишла продавницу видела је да је цена панталона снижена за 25%. Мама је пристала да јој купи панталоне по сниженој цени. Када су дошле до касе пријатно су биле изненађене чињеницом да су добиле попуст од 3% на већ снижену цену зато што је њена мама панталоне платила готовином. Колико су на крају коштале панталоне?
In [6]: cena = 6799.99
...: popust1 = cena * 25 / 100
...: niza_cena = cena - popust1
...: popust2 = niza_cena * 3 / 100
...: niza_cena - popust2
...:
Out[6]: 4946.992725
Прве четири наредбе су наредбе доделе: неким променљивим додељујемо неке вредности. Последња наредба садржи само математички израз. Пошто радимо у интерактивном окружењу (што значи да Џупитер одмах даје одговоре на питања која му поставимо), ако је последња наредба у ћелији само израз систем ће вратити вредност тог израза као резултат извршавања ћелије.
Претходни програм смо могли да напишемо и овако:
In [7]: cena = 6799.99
...: popust1 = cena * 25 / 100
...: niza_cena = cena - popust1
...: popust2 = niza_cena * 3 / 100
...: print("Pantalone su na kraju kostale", niza_cena - popust2, "din")
...:
Pantalone su na kraju kostale 4946.992725 din
Овај пут наредба print
исписује вредност израза, а систем ништа не враћа као резултат извршавања ћелије (примети да након извршавања ћелије систем није вратио одговор у облику Out[ ]:
).
При раду са интерактивним окружењима згодно је усвојити следећи манир: наредбу print
користимо само у ситуацијама у којима треба да прикажемо вредности неколико израза, или ако желимо да испис мало улепшамо, као у претходном примеру.
Библиотеке функција¶
У модерним програмским језицима, а Пајтон је један од њих, могу да се ураде невероватне ствари зато што долазе са обиљем функција које су већ испрограмиране. Тако се кориснику система (или програмеру) умногоме олакшава живот: већина ствари које просечном кориснику требају су већ испрограмиране, само треба наћи одговарајућу функцију!
Да би се корисници лакше снашли у овом обиљу, све функције које долазе уз програмски језик (односно, одговарајуће окружење) су груписане у библиотеке функција.
Рецимо, библиотека математичких функција се зове math
. Она садржи функције као што су sqrt
(која рачуна квадратни корен), sin
(која рачуна синус угла) и cos
(која рачуна косинус угла), али и математичке константе као што је pi
(која представља добру апроксимацију броја \(\pi\)).
На пример, програм који рачуна обим круга датог полупречника изгледа овако:
In [8]: from math import pi
...: r = 12
...: obim = 2 * r * pi
...: print("Obim kruga je:", obim)
...:
Obim kruga je: 75.39822368615503
Први ред у овом програму показује како се из неке библиотеке може увести функција или константа која нам је потребна. Наредба
from math import pi
дословно значи: из библиотеке math
увези појам pi
. Тиме смо у програм увели име pi
и слободно можемо да га користимо.
Ево још једног примера. Написаћемо Пајтон програм који одређује хипотенузу \(c\) правоуглог троугла ако знамо његове катете \(a\) и \(b\). (Да се подсетимо, према Питагориној теореми је \(c = \sqrt{a^2 + b^2}\).)
За овај програм ће нам требати функција sqrt
која рачуна корен неког броја и која се такође налази у библиотеци math
.
In [9]: from math import sqrt
...: a = 10
...: b = 15
...: c = sqrt(a**2 + b**2)
...: print("Hipotenuza c je:", c)
...:
Hipotenuza c je: 18.027756377319946
Ево и кратког видеа који илуструје оно што смо до сада видели:
Рад са интерактивним окружењима нам омогућује да уместо целих програма пишемо „парчиће кода” које
можемо да мењамо како нам одговара и да их извршавамо колико год пута желимо. Тако се лакше експериментише
са подацима (што је важан део модерног разумевања обраде података и о томе ћемо причати касније), и штеди време.
Тада углавном не користимо наредбу input
за учитавање података од корисника већ директно у код унесемо вредности које нас интересују.
Претходни проблем (рачунање хипотенузе правоуглог троугла) можемо да решимо и овако:
In [10]: from math import sqrt
....: a, b = 3, 4
....: sqrt(a**2 + b**2)
....:
Out[10]: 5.0
Наредба a, b = 3, 4
значи да ће а
добити вредност 3, а b
вредност 4. Резултат извршавања ћелије је
вредност израза sqrt(a**2 + b**2)
.
Ако нам у неком тренутку затреба нова празна ћелија, можемо да је додамо радној свесци овако:
Задаци¶
За вежбу покрени Џупитер окружење и реши задатке из радне свеске J01.ipynb