Учитавање података¶
Учитавање текста¶
Програми које смо до сада научили да пишемо садрже све потребне податке у себи и раде увек на исти начин. Када нам је потребно да програм ради исту ствар са другачијим подацима, морали бисмо да изменимо сам програм. Овај начин може да буде сасвим одговарајући када су измене у подацима мале и нису честе.
Други начин да постигнемо да наш програм решава разноврсније задатке је да омогућимо уношење података. Уношење података у програм током његовог рада се врши помоћу функције input(). Ова функција ради тако што чека да корисник програма откуца нешто (и притисне тастер Enter), а онда као резултат враћа откуцани текст.
Када покренете овај програм, да бисте видели како он ради откуцајте нешто и притисните Enter. Испробајте исти програм и у окружењу IDLE или на сајту repl.it.
Програм ради како је описано, али овакво понашање програма може да буде и збуњујуће. Када би неко покренуо овакав програм у окружењу IDLE не знајући да програм очекује податке, могло би да му изгледа као да се рачунар блокирао јер се ништа не дешава, а у ствари програм само чека на улаз са тастатуре.
Да бисмо помогли кориснику да разуме шта се од њега очекује, можемо да користимо и облик функције input са једним текстуалним аргументом, који ће бити исписан као упутство кориснику. На пример:
Избор облика функције input који ћемо користити зависи од намене програма. Када пишемо програм у који ће податке да уносе други људи, користимо облик са аргументом - упутством. Када пишемо програм само са своју краткорочну (можда чак једнократну) употребу, тада немамо потребе за упутствима и можемо да користимо и облик без аргумената.
Поменимо и то да у неким од окружења у којима се програм извршава можемо да подесимо да програм уместо са тастатуре, учитава податке са неког другог места на коме смо те податке унапред припремили. Тада нема чекања да подаци буду унети, они се учитавају аутоматски и нема потребе да се некоме исписује упутство (оно чак може и да смета). Зато се у програмима предвиђеним за овакву употребу такође користи input наредба без аргумената.
Учитавање бројева¶
Видели смо да функција input() враћа стринг (откуцани текст). То значи да уколико нам је потребан податак другог типа, треба да променимо тип унетог податка из стринга у жељени тип. Промена типа податка се зове још и конверзија. На пример ако желимо цео број, онда добијени текст треба да претворимо (конвертујемо) у цео број. Ево како се то ради у Пајтону:
Функција int()
текстуалну вредност претвара у бројчану (целобројну). Тако, наредбом n = int(s)
у променљиву n смештамо целобројну вредност и зато знак + у програму означава сабирање целих бројева. Сабирање је додато у програм као доказ да је n заиста целобројна вредност (по резултату видимо да се вредности сабирају као бројеви).
Пошто функција input враћа стринг, резултат њеног рада можемо и директно да проследимо функцији int. Тако избегавамо употребу променљиве s и добијамо нешто краћи програм који ради исту ствар:
За реалан број само уместо int треба писати float, јер Функција float()
текстуалну вредност претвара у реалан број. На пример, ако желимо да учитамо реалан број и испишемо двоструко већи број, програм може да изгледа овако:
или
Проверите шта се дешава у ова два примера када се не унесе број него текст.
О конверзијама¶
Видели смо да када се у стрингу налази запис целог или реалног броја, тај стринг се може конвертовати у целобројни, односно реални тип помоћу функција int(), односно float(). Обрнуто, цели и реални бројеви увек могу да се конвертују у стринг. За конверзију у стринг се користи функција str().
Конверзија целобројне вредности у реалну се врши аутоматски када је то потребно, мада је дозвољено и да то урадимо и позивом функције float.
Обрнуто, када нам затреба да конвертујемо реалан број у цео, та конверзија се не дешава аутоматски (с разлогом) и њу треба да задамо у програму позивом функције int(). Приликом конверзије реалног броја у цео број одбацују се евентуалне децимале реалног броја, што значи да је заокруживање увек ка нули. Другим речима, када вредност реалног броја x није цела, int(x) је ближи нули него x.
Питања¶
- Програм ће исписати 5
- Покушајте поново
- Програм ће исписати 23
- Покушајте поново
- Доћи ће до грешке због покушаја сабирања стринга и броја
- Тачно
Q-13: Шта ће се догодити када покренемо следећи програм и унесемо вредност 2
?
a = input()
print(a+3)
- Програм ће исписати 5
- Покушајте поново
- Програм ће исписати 23
- Тачно
- Доћи ће до грешке због покушаја сабирања стринга и броја
- Покушајте поново
Q-14: Шта ће се догодити када покренемо следећи програм и унесемо вредност 2
?
a = input()
print(a+'3')
-
Q-15: Упарите изразе са резултатима израчунавања.
Покушајте поново!
- '2.11'
- str(2.1) + '1'
- 3.1
- float('2.1') + 1
- грешка при рачунању
- float('2.1') + '1'
- 2.11
- float('2.1') + 1/100
- '3.1'
- str(2.1 + int('1'))
- Када је прва децимала броја a већа или једнака 5
- Покушајте поново.
- Када је број a негативан
- Тачно!
- Када је број a позитиван
- Покушајте поново.
- Када је број a једноцифрен
- Покушајте поново.
- Када је разлика између a и int(a) већа од 0.5
- Покушајте поново.
Q-16: Када је цео број int(a) већи од реалног броја a?