Бројеви и реченице (стрингови) су другачији, различити објекти, и Python јавља грешку ако покушамо да их спојимо на погрешан начин.
Као што видимо, добили смо грешку која каже да су два аргумента max функције различитог типа. Та грешка је добар увод у остатак лекције. "Zdravo, svete!" je стринг вредност, која је у Python-у представљена са str. Стринг (string) је било какав низ бројева, карактера, знакова интерпункције;
35 је целобројна (integer) вредност, нпр. 42, -12, 0,... која је у Python-у представљена са int.
Коришћење објеката погрешног типа је врло честа грешка у програмирању. На пример. када бисмо правили неку аналогију, то би било исто као да покушавате да поједете сендвич - то не можете да урадите зато што могу да се пију само ствари у течном стању.
Командом type можемо одредити ког је типа нека променљива.
У примеру изнад видимо да су бројеви подељни у два различита типа , int (целобројни тип) који смо поменули раније , и float (реалан тип) који се користи за децималне (реалне) бројеве. Обично могу да се комбинују float и int вредности, и резултат ће бити нека вредност типа float.
Када комбинујемо float и int вредности Python уствари претвара (конвертује) int вредност у float вредност, и онда ради са две float вредности. |
Хајде да анализирамо зашто је вредност 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, који је увек стринг, претварамо у нумеричку форму. Ево једног примера: