7: Типови података



Бројеви и реченице (стрингови) су другачији, различити објекти, и Python јавља грешку ако покушамо да их спојимо на погрешан начин.

Пример: Покушај упоређивања броја и стринга


Као што видимо, добили смо грешку која каже да су два аргумента max функције различитог типа. Та грешка је добар увод у остатак лекције. "Zdravo, svete!" je стринг вредност, која је у Python-у представљена са str. Стринг (string) је било какав низ бројева, карактера, знакова интерпункције;
35 је целобројна (integer) вредност, нпр. 42, -12, 0,... која је у Python-у представљена са int.

Коришћење објеката погрешног типа је врло честа грешка у програмирању. На пример. када бисмо правили неку аналогију, то би било исто као да покушавате да поједете сендвич - то не можете да урадите зато што могу да се пију само ствари у течном стању.

Командом type можемо одредити ког је типа нека променљива.

Пример: Неки примери типова података.

У примеру изнад видимо да су бројеви подељни у два различита типа , int (целобројни тип) који смо поменули раније , и float (реалан тип) који се користи за децималне (реалне) бројеве. Обично могу да се комбинују float и int вредности, и резултат ће бити нека вредност типа float.

Пример: Комбинација int и float вредности.




Када комбинујемо float  и int  вредности Python уствари претвара (конвертује) int  вредност у float вредност, и онда ради са две float вредности.



Вежба вишеструког избора: Floating
Ако у малопређашњем примеру заменимо x да уместо 1.2 буде 1.5 шта ће бити прва линија излаза?
Тачно!



Хајде да анализирамо зашто је вредност z сада 3.0.
• Рачунање x * y је комбиновање int и float вредности, које Python третира као две float вредности,и враћа z као float.
• Математичка вредност променљиве z је 1.5 пута 2, што је 3, али она је спакована у неодговарајућем формату, у децималној форми, типа float. Када Python штампа било који float, чак и када је та вредност цео број, на крају броја ће бити .0.
Често је потребно да се подаци претварају из једног типа података у други. Нпр. као што можемо да претворимо јабуку или банану из чврстог стања у течно стање (користећи блендер), аналогно у Python-у можемо да претварамо податке из једног типа у други користећи typecast функцију. Ево примера како се пише то претварање у Python-у:
x = float("3.4")
print(x-1)

мења стринг "3.4" у float (реалан број) 3.4, и онда штампа 2.4. Без коришћења typecast функције програм не би успео да се изврши, зато што не може да чита број који је представљен као стринг тек тако.

Понекад, Python дозвољава да се комбинују стрингови и бројеви користећи аритметичке операторе. Инструкција print("jo" * 2) штампа jojo.Python правило је да када се помноже стринг s и цели број n, добија се n копија тог стринга, један за другим.
Различита претварања типова (кастовања) се различито манифестују:
• претварањем float у int се губи све иза децималне тачке, нпр. int(1.234) постаје 1, (-34.7) постаје -34.
• претварање string у int изазива грешку ако тај стринг није у целобројном формату, нпр. int("1.234") ће изазвати грешку.
• претварање из str у float ће изазвати грешку ако тај стринг није у бројном формату, нпр. float("sendvic") ће изазвати грешку.
Кастовање се често користи када input, који је увек стринг, претварамо у нумеричку форму. Ево једног примера:


Пример: Тypecast
Вежба кодирања: Kастовање
Написати програм који ће вам помоћи да нахраните ваше пријатеље на журци пицама. Пице су квадратног облика. Подразумева се да је променљива inputString већ дефинисана. То је стринг који има формат децималног броја, и означава дужину L пице у центиметрима. Површина пице се рачуна користећи формулу A = L*L. Знајући да је за сваку особу потребно 100 cm2 пице. Израчунајте колико људи може бити нахрањено (број се заокружује).
Унесите код за тестирање као што је print(myfunction("test argument")) испод.