diff options
Diffstat (limited to 'python')
-rw-r--r-- | python/problems/introduction/intro_sl.html | 587 | ||||
-rw-r--r-- | python/problems/introduction/sl.py | 4 | ||||
-rw-r--r-- | python/sl.py | 6 |
3 files changed, 591 insertions, 6 deletions
diff --git a/python/problems/introduction/intro_sl.html b/python/problems/introduction/intro_sl.html new file mode 100644 index 0000000..345b94c --- /dev/null +++ b/python/problems/introduction/intro_sl.html @@ -0,0 +1,587 @@ +<!DOCTYPE html> +<html lang="sl"> +<head> + <meta charset="utf-8" /> + <title></title> + <link rel="stylesheet" type="text/css" href="/css/codeq.css" /> + <link rel="stylesheet" type="text/css" href="../../style.css" /> +</head> +<body> + +<h1>Uvod v Python</h1> + +<h2>Moj računalnik je lahko tudi kalkulator</h2> + +<p> Sledi kratek povzetek zapiskov predavanj prof. Demšarja. + Celotne zapiske najdete na + <a href="https://ucilnica.fri.uni-lj.si/course/view.php?id=166">spletni + učilnici</a>.</p> + +<p>V konzoli lahko Python uporabljamo kot kalkulator.</p> + +<pre> +>>> 1 + 1 +2 +>>> 2 * 3 +6 +>>> 1+2 * 3+1 +8</pre> + +<p>Temu, kar smo vpisovali, pravimo <i>izraz</i>. Izraz je nekaj, kar se da +izračunati. In Python to tudi izračuna, razen, morda, zadnjega izraza. + V izrazih lahko uporabljamo presledke in to + moramo - kot tudi sicer - početi po občutku. V zadnjem izrazu tega nismo + počeli, zato je zapis zavajajoč. Python je dovolj pameten, da ve, da ima + <em>operator</em> (še ena beseda, ki si jo zapomnimo!) množenja prednost + pred operatorjem seštevanja. Kar smo napisali, se računa enako, kot če bi + rekli + <code> 1+2*3+1</code> +ali +<code> 1 + 2*3 + 1</code> +ali +<code> 1 + 2 * 3 + 1</code> + +<p>Zaenkrat pišite, kako vam je ljubše, dokler se ne dogovorimo za zadnje.</p> + +<p>Kakšni operatorji so nam še na voljo? Očitna sta še <code>/</code> za + deljenje in <code>-</code> za odštevanje. Dvojna zvezdica, <code>**</code>, + pomeni potenciranje (mednju ne smemo napisati presledka, <code>**</code> je + kot, recimo, ena <em>beseda</em>). Operator <code>%</code> izračuna ostanek + po deljenju.</p> + +<pre> +>>> 5 ** 2 +25 +>>> 3 ** 4 +81 +>>> 13 % 5 +3</pre> + +<p>Potenciranje ima prednost pred vsem, kar poznamo doslej. Kadar je treba, + pa lahko uporabimo oklepaje.</p> + +<pre>>>> (4 + 5) * 4 +36</pre> + +<p>Če ostane kak oklepaj odprt, Python ne izračuna izraza, saj ve, da ga še + nismo dokončali. Namesto <code>>>></code> pokaže tri pike in + dovoli, da nadaljujemo izraz.</p> + +<pre>>>> (4 + 2 * (3 +... + 8)- +... 2) +24</pre> + +<p>Ni lepo, a prišlo nam bo še zelo prav, boste videli.</p> + +<p>Pri množenju je nujno uporabiti zvezdico. Se pravi, pisati moramo + <code>7 * (2 + 3)</code> in ne <code>7(2 + 3)</code>.</p> + +<p>Za deljenje imamo poleg operatorja <code>/</code> tudi <code>//</code>, ki + deli celoštevilsko.</p> + +<pre>>>> 4.5 // 1.2 +3.0 +>>> 7 // 2 +3</pre> + +<p>1.2 gre v 4.5 trikrat ... in še malo ostane. A celoštevilskega deljenja + ostanek ne zanima.</p> + +<p>Naslednja pomembna reč so "podatkovni tipi". + Točneje, spoznali smo dva podatkovna tipa <em>cela števila</em> in + <em>števila s plavajočo vejico</em>. V angleščini se jima reče + <em>integer</em> in <em>floating point number</em> v Pythonu pa + <code>int</code> in <code>float</code>. Odkod ta čudna imena boste izvedeli + pri kakem drugem predmetu.</p> + +<p>Vsaka reč v Pythonu je reč nekega tipa, in če je ta reč število, je bodisi + tipa <code>int</code> bodisi <code>float</code>. </p> + +<h2>Moj računalnik je lahko tudi kalkulator - s spominom</h2> + +<p>Izračunali bomo, koliko je 2 + 3 in rekli računalniku, naj si to zapomni.</p> + +<code> x = 2 + 3</code> + +<p>Temu, kar smo napisali tu, pravimo <em>prireditveni stavek</em>, saj smo z + njim x-u priredili vrednost izraza 2+3.</p> + +<p>Da hočemo nekaj prirejati povemo z enačajem (očitno). Na njegovi desni je + nek izraz - torej nekaj, kar se da izračunati. Včasih bo to <code>2 + + 3</code>, včasih bo kaj veliko + bolj zapletenega, včasih bo na desni strani samo številka, kot, recimo, v + prirejanju <code>x = 42</code>. Python bo, tako kot v našem dosedanjem + igranju z njim, izračunal tisto na desni in dobil <code>5</code> ali + <code>42</code> ali karkoli že.</p> + +<p>Na levi strani enačaja je neko ime. Temu pravimo spremenljivka (ang. variable) + Python bo temu imenu (recimo + <code>x</code>) priredil tisto, kar je izračunal.</p> + +<p>Python tokrat ni izpisal ničesar v odgovor. Rezultat si je le zapomnil, + shranil ga je pod imenom <code>x</code>. Kaj lahko počnemo s tem + <code>x</code>? Lahko ga uporabljamo v drugih izrazih.</p> + +<pre> +>>> x + 7 +12 +>>> x ** 2 +25 +>>> 13 % x +3 +>>> x +5</pre> + +<p>Kadar rečem <code>x</code>, Python poišče, tisto, kar je priredil + <code>x</code>-u. Če smo <code>x</code>-u priredili 5 in rečemo +<code>x + 7</code>, je to isto, kot če bi rekli <code>5 + 7</code>.</p> + +<pre>>>> y = x + 2 +>>> y +7</pre> + +<p>Spremenljivka pri programiranju (v večini jezikov) ne pomeni istega kot v + matematiki. Spremenljivke v matematiki se, roko na srce, pravzaprav ne + spreminjajo. V matematiki <em>x</em> ne more biti v eni vrstici 5, v + naslednji pa 8. Pri programiranju pa s tem ni težav.</p> + +<pre>>>> x = 5 +>>> x +5 +>>> x = 8 +>>> x +8</pre> + +<p>Še huje. Če matematiki ne bi znali programirati (pa navadno znajo in to + dobro), bi jih utegnilo povsem pretresti tole: +<pre>>>> x = 5 +>>> x = x + 2 +>>> x +7</pre> + +<h2>Poglavje polno napak</h2> + +<p>Pri programiranju boste delali precej napak. To je neizogibno. Poglejmo + si nekaj primerov.</p> + +<p>Postavimo, najprej, <code>a</code> na <code>7</code> in izračunajmo + <code>a + b</code>. + +<pre>>>> a = 7 +>>> a + b +Traceback (most recent call last): + File "<console>", line 1, in <module> +NameError: name 'b' is not defined</pre> + + <p>Kadar računalnik česa ne more storiti, izpiše sporočilo o napaki. Ko bomo + programirali zares, bomo videli tudi daljša, ki jih bomo težje razumeli, + tole pa je preprosto: <code>name 'b' is not defined</code>. Pozabili smo + <em>definirati</em> <code>b</code>, pozabili smo mu dati vrednost.</p> + +<p>Kaj pa tole?</p> + +<pre>>>> 7 = a + File "<console>", line 1 +SyntaxError: can't assign to literal</pre> + +<p>Človek, vajen matematike, bi si mislil, da je <code>a = 7</code> in + <code>7 = a</code> eno in isto. V matematiki da, pri programiranju (v + normalnih jezikih) pa ne, saj enačaj pomeni prirejanje; v prvem primeru + priredimo <code>a</code>-ju 7, v drugem primeru pa hočemo sedmici prirediti + <code>a</code>, kar seveda ne gre. To ima natanko toliko smisla, kot če bi + napisali <code>1 = 2</code>. (Še več, Python nas bo po prstih celo, če bomo + napisali <code>1 = 1</code>. Ena je ena, to bo ostala in se ne bo + spremenila, niti v ena ne.) Sporočila o napaki tokrat ne razumemo povsem, + saj ne vemo, kaj je "literal", osnovno sporočilo, "can't assign", pa je + jasno.</p> + +<p>Pridelajmo še eno napako.</p> + +<pre>>>> True = 12 + File "<console>", line 1 +SyntaxError: assignment to keyword</pre> + +<p>Beseda <code>True</code> ima poseben pomen in je ni mogoče uporabljati kot + spremenljivko. Takšnim besedam pravimo ključne besede (<em>keywords</em>). + Tokrat je bil + Python še prijazen, pri večini drugih ključnih besed pa ne bo povedal kaj + dosti več kot "nekaj je narobe". Poskusimo z dvema, <code>if</code> in + <code>in</code>: + +<pre>>>> if = 7 + File "<console>", line 1 + if = 7 + ^ +SyntaxError: invalid syntax +>>> in = 7 + File "<console>", line 1 + in = 7 + ^ +SyntaxError: invalid syntax</pre> + +<p>Sporočilo "invalid syntax" pomeni, da smo napisali nekaj tako čudnega, da + Python ne more uganiti, kaj smo mislili in nam lahko le pokaže tisto mesto, + na katerem je dokončno obupal nad nami.</p> + +<p>Morda je koga zaskrbelo, da nam bodo takšne, rezervirane besede v stalno + napoto. Bi se dalo videti spisek? Ne bo hudega. Trenutno jih je le 33 in + zelo hitro bomo mimogrede spoznali in uporabljali skoraj vse. Že od + naslednjih predavanj naprej vam ne bo prišlo na misel, da bi uporabili + <code>if</code> kot ime spremenljivke in še kak teden kasneje vam bo stavek + <code>if = 1</code> videti grotesken. </p> + + +<h2>Moj kalkulator ima tudi funkcije</h2> + +<p>Tako kot spremenljivke, ki v programiranju ne pomenijo čisto istega kot v + matematiki, tudi beseda + <em>funkcija</em> (<em>function</em>) ne pomeni povsem istega. + Videti pa je zelo podobno. Imamo, + recimo, funkcijo <code>abs</code>, ki izračuna absolutno vrednost števila. +</p> + +<pre>>>> abs(-2.8) +2.8</pre> + +<p>Ali pa <code>pow</code>, ki naredi isto kot operator <code>**</code>.</p> + +<pre>>>> pow(2, 3) +8</pre> + +<p>Za razliko od matematikov, ki na funkcijo gledajo kot da <em>ima določeno + vrednost pri določenih parametrih</em>, računalnik <em>izračuna vrednost + funkcije</em>, za kar moramo <em>poklicati funkcijo</em>. Se pravi, v + zadnji vrstici smo <em>poklicali</em> funkcijo <code>pow</code> in ji + <em>podali</em> dva <em>argumenta</em>, 2 in 3. Funkcija je izračunala + vrednost in jo <em>vrnila</em>.</p> + +<p>Tudi klic funkcije, <code>pow(2, 3)</code>, je izraz. Kot katerikoli drugi + izraz lahko tudi <code>pow</code> in <code>abs</code> nastopata kot del + izraza.</p> + +<pre>>>> (pow(2, 3) + 2) / 5 +2.0 +>>> pow(2, 3) + abs(-2) +10</pre> + +<p>In argumenti funkcij so lahko prav tako izrazi.</p> + +<pre>>>> x = 1 +>>> yy = pow(abs(-2), x * 3) +>>> yy +8</pre> + +<h2>Nizi</h2> + +<p>Niz (<em>string</em>) je zaporedje znakov. Znaki so črke, številke, + ločila in take stvari. Nize moramo + vedno zapreti v narekovaje, bodisi enojne (') bodisi dvojne ("). Uporabiti + smemo take, ki so bolj praktični in tudi Python bo izpisoval tako, kot se + mu bo zdelo bolj praktično.</p> + +<pre>>>> "Tole je primer niza." +'Tole je primer niza.' +>>> "Tole je pa še en primer niza." +'Tole je pa še en primer niza.'</pre> + +<p>No, vidite, tudi ko smo niz zaprli v dvojne narekovaje, je Python izpisal + enojne. V resnici mu je vseeno. (Kdor slučajno programira v Phpju: ne, v + Pythonu je <em>res</em> vseeno.)</p> + +<p>Tudi nize lahko priredimo spremenljivkam.</p> + +<pre>>>> napoved = "Jutri bosta matematika pa dež" +>>> napoved +'Jutri bosta matematika pa dež'</pre> + +<p>Celo seštevamo jih lahko.</p> + +<pre>>>> "Jutri bosta " + "matematika" + " pa " + "dež" +'Jutri bosta matematika pa dež'</pre> + +<p>Ali pa oboje +<pre>>>> napoved_zac = "Jutri bosta " +>>> mat = "matematika" +>>> dez = "dez" +>>> napoved_zac + mat + " pa " + dez +'Jutri bosta matematika pa dez'</pre> + +<p>Kako zapleten račun! Predvsem ne spreglejte, da smo dali besedo "pa" pod + narekovaje, saj so <code>napoved_zac</code>, <code>mat</code>, + <code>dez</code> spremenljivke (ki so v resnici nizi), <code>" pa "</code> + pa je niz kar tako. To je nekako tako, kot če bi, ko smo se igrali s + številkami, pisali</p> + +<pre>>>> x = 1 +>>> y = 3 +>>> x + 2 + y +6</pre> + +<p>V zadnji vrstici sta <code>x</code> in <code>y</code> spremenljivki (ki + sta v resnici številki), <code>2</code> pa je številka kar tako.</p> + +<p>Kaj pa, če bi slučajno pozabili narekovaje?</p> + +<pre>>>> napoved_zac + mat + pa + dez +Traceback (most recent call last): + File "<console>", line 1, in <module> +NameError: name 'pa' is not defined</pre> + +<p>Jasno? Brez narekovajev je <code>pa</code> ime spremenljivke - in to takšne, + ki še ni definirana. To je tako, kot če bi namesto</p> + +<code>ime = "Benjamin"</code> + +<p>kar je pravilno, rekli</p> + +<pre>>>> ime = Benjamin +Traceback (most recent call last): + File "<console>", line 1, in <module> +NameError: name 'Benjamin' is not defined</pre> + +<p>Seveda pa lahko (z malim prekrškom enega pravila - katerega že?):</p> + +<pre>>>> Benjamin = "otrok solza" +>>> ime = Benjamin +>>> ime +'otrok solza'</pre> + +<p>a, istočasno</p> + +<pre>>>> ime = "Benjamin" +>>> ime +'Benjamin'</pre> + +Jasno? Prvič imamo spremenljivko <code>Benjamin</code>, drugič pa niz, v +katerem je besedilo Benjamin. Ko ni narekovajev, imamo spremenljivko, ko so, +pa niz.</p> + +<pre>>>> napoved = Jutri bosta matametika pa dež +Traceback ( File "<interactive input>", line 1 + napoved = Jutri bosta matemetika pa dež + ^ +SyntaxError: invalid syntax</pre> + +<p>Tule računalnik trpi še bolj. Ne le, da so <code>Jutri</code>, + <code>bosta</code>, <code>matematika</code>, <code>pa</code> in + <code>dež</code> nedefinirane spremenljivke (ker so pač brez narekovajev), + računalnik tudi nima pojma, kaj hočemo pravzapravz početi z njimi, čemu mu + naštevamo imena nekih spremenljivk. Jih hočemo sešteti ali zmnožiti ali + kaj? Kot vedno, kadar računalniku napišemo kaj zares zmedenega, nam zastoka + le "syntax error" in pokaže mesto, kjer se je dokončno izgubil.</p> + +<p>Gornje je tako, kot da bi rekli</p> + +<pre>>>> x = 1 +>>> y = 2 +>>> z = 3 +>>> x y z + File "<console>", line 1 + x y z + ^ +SyntaxError: invalid syntax</pre> + +<p>Ubogemu računalniku pač ni jasno, kaj bi z <code>x</code>, <code>y</code> in + <code>z</code> ter zakaj mu jih naštevamo.</p> + +<p>Zakaj pa smo prejle rekli, da uporabimo tiste narekovaje, ki so bolj + <em>praktični</em>? Čemu bi bili kakšni narekovaji bolj praktični od + drugih?</p> + +<pre>>>> "Cesar vpraša nekoliko nevoljen: "Kaj neki?"" +Traceback ( File "<interactive input>", line 1 + "Cesar vpraša nekoliko nevoljen: "Kaj neki?"" + ^ +SyntaxError: invalid syntax</pre> + +<p>Ni potrebno biti posebno pameten, da vidimo, kaj ga je (namreč Pythona, ne + Cesarja) onesrečilo tokrat. Ko vidi prvi narekovaj, ve, da gre za niz. Ko + pride do naslednjega narekovaja, se niz, tako méni, niz konča. In potem se + seveda zmede, ker nizu sledi nekaj, kar ni podobno ničemur. Zdaj pa + poskusimo z enojnimi narekovaji.</p> + +<pre>>>> 'Cesar vpraša nekoliko nevoljen: "Kaj neki?"' +'Cesar vpraša nekoliko nevoljen: "Kaj neki?"'</pre> + +<p>Ker se niz začne z enojnim narekovajem, se bo s takim tudi končal in vsi + dvojni narekovaji znotraj niza so samo znaki kot katerikoli drugi - tako + kot recimo dvopičje in vprašaj. O tej temi bi lahko napisali še marsikaj, + vendar se za zdaj ustavimo.</p> + + +<h2>Iz nizov v števila</h2> + +<p>Da se reč usede, meditirajmo ob naslednjih vrsticah:</p> + +<pre>>>> up = 1 + 1 +>>> down = "1 + 1" +>>> strange = "1" + "1"</pre> + +<p>Kakšne so po tem vrednosti spremenljivk <code>up</code>, <code>down</code> + in <code>strange</code>? Sploh pa, je vse troje legalno ali pa bo Python + spet kaj stokal?</p> + +<p>V prvo nimamo dvomov, vrednost <code>up</code> mora biti enaka 2 (in tudi + je). Drugo? <code>"1 + 1"</code> je niz; spremenljivki <code>down</code> + smo priredili niz <code>"1 +1"</code>, torej vsebuje ta niz. In ne niza 2? + Ne, nihče mu ni naročil, naj poskuša izračunati, koliko je 1 + 1, tako kot + pravzprav tudi v <code>ime = "Benjamin"</code> ne poskuša izračunati, + "koliko" je Benjamin. <code>"1 + 1"</code> je niz, kot vsak drugi, čeprav je + slučajno podoben računu.</p> + +<p>Najbolj zanimivo je tretje. Preden razrešimo vprašanje, se vprašajmo nekaj + drugega. Recimo + +<pre>>>> ana = "Ana" +>>> benjamin = "Benjamin" +>>> r = ana + benjamin</pre> + +<p>Kaj dobimo, če seštejemo Ano in Benjamina. (Tončka? Brez duhovičenja, to so + resne reči.) Spremenljivka <code>r</code> bo imela vrednost + <code>"AnaBenjamin"</code>. Glede tega smo si menda enotni, ne? + (Ako kdo misli, da bomo dobili <code>"Benjamin Ana"</code>, saj smo tudi + poprej imeli presledke ob oni študijsko-vremenski napovedi, naj pozorno + pregleda, kaj smo pisali ondi: vse presledke smo napisali sami.)</p> + +<p>No, potem pa vemom: ko seštejemo <em>niza</em> "1" in "1" niz "11". "1" in + "1" torej ni "2", temveč "11".</p> + +<p>Nikar ne zamudimo priložnosti za še eno napako!</p> +<pre>>>> 1 + "1" +Traceback (most recent call last): + File "<interactive input>", line 1, in <module> +TypeError: unsupported operand type(s) for +: 'int' and 'str'</pre> + +<p>Seštevanje je operacija, zato tistemu, kar je levo in desno od <code>+</code> + pravimo operanda. Sporočilo pravi, da operator <code>+</code> ne podpira + operandov tipov <code>int</code> in <code>str</code> (<code>str</code> je + podatkovni tip, ki predstavlja nize). Dve števili ali dva niza bi znal + sešteti, te kombinacije pa ne. Mimogrede, obratni vrstni red da nekoliko + drugačno sporočilo:</p> + +<pre>>>> "1" + 1 +Traceback (most recent call last): + File "<interactive input>", line 1, in <module> +TypeError: cannot concatenate 'str' and 'int' objects</pre> + +Stikanje (<em>concatenation</em>) je le drugo ime za seštevanje nizov; sporočilo +pravi, da ne moremo stakniti niza in števila. Toliko, da boste vedeli, če +naletite na to.</p> + +<p>Ker nam bo prišlo vsak čas prav, povejmo, kako iz niza dobimo število. + Recimo, torej, da imamo <code>a = "1"</code> in <code>b = "2"</code>. Radi + bi ju sešteli - vendar zares, tako da bomo dobili 3, ne "12". Za to ju + moramo najprej (ali pa sproti) spremeniti v števili. Iz niza dobimo število + tako, da pokličemo "funkcijo" <code>int</code> ali <code>float</code>; obe + funkciji pričakujeta kot argument niz, ki vsebuje neko število in kot + rezultat vrneta celo (<code>int</code>) ali realno (<code>float</code>) + število. </p> + +<pre>>>> int("42") +42 +>>> float("42") +42.0</pre> + +<p>Kar želimo, storimo na tri načine, vsak je poučen po svoje. Prvi: +<pre>>>> a = "1" +>>> b = "2" +>>> +>>> aa = int(a) +>>> bb = int(b) +>>> aa + bb +3</pre> + +<p>Naredili smo dve novi spremenljivki, <code>aa</code> in <code>bb</code>, ki + vsebujeta vrednosti <code>a</code> in <code>b</code> pretvorjene v števila. + Nato ju seštejemo.</p> + +<p>Drugi: +<pre>>>> a = "1" +>>> b = "2" +>>> +>>> a = int(a) +>>> b = int(b) +>>> a + b +3</pre> + +<p>Tole je podobno kot prej, le da smo povozili stare vrednosti <code>a</code> in + <code>b</code> z novimi, številskimi, namesto da bi števila zapisovali v + druge spremenljivke.</p> + +<p>Tretji: +<pre>>>> a = "1" +>>> b = "2" +>>> +>>> int(a) + int(b) +3</pre> + +<p>Ker je <code>int</code> funkcija, lahko nastopa v izrazu; potrebe, da bi + prepisovali številke v kake nove ali stare spremenljivke, niti ni.</p> + + +<h2>Vpis in izpis</h2> + +<p>Spoznali bomo funkcijo za izpisovanje: če jo pokličemo, + izpiše tisto, kar smo ji dali kot argument. Imenuje se <code>print</code>. + Za razliko od, recimo, <code>abs</code>, ki zahteva en argument, namreč + poljubno število, in vrne njegovo absolutno vrednost, ali <code>pow</code>, + ki hoče natanko dva argumenta, lahko damo <code>print</code>u poljubno + število argumentov - številke, nize ali še kaj tretjega -, pa jih bo lepo + izpisala. + +<pre>>>> print(1 + 1, 27, "benjamin") +2 27 benjamin +>>> print(napoved_zac, mat, "pa", dez, "in", 18, "stopinj") +Jutri bosta matematika pa dez in 18 stopinj</pre> + +<p>Druga funkcija prosi uporabnika, da vpiše kako reč. + Kot argument pričakuje niz, vprašanje, ki ga želimo zastaviti uporabniku. + Kot rezultat vrne niz, ki ga je vpisal uporabnik.</p> + +<pre>>>> geslo = input("Geslo? ") +Geslo? FR1.ru135 +>>> geslo +'FR1.rul35'</pre> + +<h2>Prvi čisto pravi program</h2> + +<p>Sestavimo tole: računalnik naj uporabnika prosi za temperaturo v Celzijevih + stopinjah in računalnik mu bo izpisal, koliko je to v Kelvinih in koliko v + Fahrenheitih. Iz Celzijev dobimo Kelvine tako, da jim prištejemo 273.15, + Fahrenheite pa tako, da jih pomnožimo z 9/5 in prištejemo 32 (kogar zanima + še kaj, naj pogleda na + <a href="http://en.wikipedia.org/wiki/Conversion_of_units_of_temperature"> + Wikipedijo</a>).</p> + +<pre> +>>> temp_C = input("Temperatura [C]? ") +Temperatura [C]? 18 +>>> temp_K = temp_C + 273.15 +Traceback (most recent call last): + File "<interactive input>", line 1, in <module> +TypeError: cannot concatenate 'str' and 'float' objects</pre> + +<p> Funkcija <code>input</code> vrne <em>niz</em>, ki ga je vpisal + uporabnik. Četudi utegne ta izgledati kot številka, je še vedno niz in k + nizom ni mogoče prištevati števil. Kot smo videli, lahko storimo troje: + naredimo novo spremenljivko, na primer, + <code>temp_Cf = float(temp_C)</code>, povozimo staro s + <code>temp_Cf = float(temp_C)</code> ali pa pretvorbo opravimo kar sproti, + tako da računamo <code>temp_K = float(temp_C) + 273.15</code>. Izmed + naštetih možnosti se odločimo za četrto in niz pretvorimo, čim ga uporabnik + vpiše. Ponovimo torej vso vajo. </p> + +<pre> +>>> temp_C = float(input("Temperatura [C]? ")) +Temperatura [C]? 18 +>>> temp_K = temp_C + 273.15 +>>> temp_F = temp_C * 5/9 + 32 +>>> print(temp_C, "C je enako", temp_K, "K ali", temp_F, "F") +18.0 C je enako 291.15 K ali 42.0 F</pre> + +<p>Zdaj to napišite v okolju, kjer program lahko tudi poženete; npr. Pycharm ali +pa v <span class="codeq">CodeQ</span> :) </p> + +</body> +</html> diff --git a/python/problems/introduction/sl.py b/python/problems/introduction/sl.py index 403c941..ae5cc3e 100644 --- a/python/problems/introduction/sl.py +++ b/python/problems/introduction/sl.py @@ -1,3 +1,5 @@ name = 'Uvod' -description = 'Izrazi, spremenljivke, funkcije, prvi program.' +description = ''' +<a target="_blank" href="[%@resource intro_sl.html%]">Prvi koraki v Pythonu:</a> +izrazi, spremenljivke, funkcije, prvi program.''' diff --git a/python/sl.py b/python/sl.py index 6bd3a0d..37d8b91 100644 --- a/python/sl.py +++ b/python/sl.py @@ -1,9 +1,5 @@ name = 'Python' -description = '''\ -Naloge za -<a href="https://ucilnica.fri.uni-lj.si/vsak" target="_blank">uvodni tečaj -pythona</a>. -''' +description = ''' ''' general_msg = { 'error_head' : '''\ |