Nagyon szuper egy program, ami lefut meg minden, megcsinálja a dolgát, más meg ne szóljon bele. Ezek a programok (hacsak valami véletlenszerűség nincs beléjük építve) mindig ugyanazt fogják csinálni, akárhányszor indítjuk el. Uncsi. Érdekes módon, a programok többsége nem így működik!

A weboldalaknál például szoktak lenni bemeneti értékek amiket a felhasználó valahogy kitölt, pl egy login űrlap vagy egy QR kód generáló. Az egyik módszer, amivel egy weboldalnak paraméter adható át az, ha a cím végén van egy kérdőjel, és utána név=érték lista & jelekkel elválasztva, például: https://duckduckgo.com/?q=miafasz&t=canonical&ia=videos

#!/usr/bin/python

import cgi, cgitb
form = cgi.FieldStorage()
= form.getvalue('a')
= form.getvalue('b')

print "Content-type: text/html\n\n"
print "<h1>This is addition</h1>"
print "<p>a = ", a, "</p>"
print "<p>b = ", b, "</p>"
print "<p>a + b = "(+ b)"</p>"
print "<p>a + b = "(int(a) + int(b))" (numeric)</p>"
if (int(a) % 2 == 1):
    print "<p>a is odd.</p>"
if (not (int(b) % 2 == 1)):
    print "<p>b is even.</p>"

http://apocalypse.rulez.org/~upi/surba/parameters.py?a=10&b=20 [source]

Most, átmeneti jelleggel, ne ragadjunk le annál, hogy pontosan mi történik az "import" kezdetű, és azt követő három sorban. Elégedjünk meg azzal, hogy így ki tudjuk termelni az a és b változókba az azonos nevű paramétereket, amiket a T. Felhasználó a weboldalnak átadott.

További újdonság, hogy nem text/plain a tartalom típusa, hanem text/html; ez azzal az örömteli eseménnyel jár, hogy a <h1> és </h1> ("heading 1") közötti részből egy címsor lesz, míg a <p>-ből pedig bekezdés ("paragraph").

Vegyük észre:

  • A Python különbséget tesz a szöveges változó és a numerikus változó között. Ha két szöveges változót adunk össze a + operátorral, akkor összefűzi őket, míg ha két numerikusat, akkor összeadja. (A Python is lehet hülye.)
  • Az int(...) függvény elvégzi nekünk azt a szívességet, hogy szöveges "10"-ből numerikus 10 értéket gyárt. (Ha nem végezhető a el a konverzió, mert mondjuk a="alma", akkor ott szépen megdöglik a programunk.)
  • % operátor maradékot képez két egész szám között, pl a % 2 az a változó paritását adja vissza (0 vagy 1).
  • Az if (...): hasonló elven működik, mint a while egy korábbi fejezetben: a törzsében található rész akkor fog lefutni (egyszer), ha a zárójelben található feltétel "igaz".

Feladatok

  • Próbáljuk ki a programot különböző bemenetekkel (pozitív, negatív számok, nem egész szám, szöveg).
  • Az if (not (int(b) % 2 == 1)): rész egyszerűsíthető. Hogyan?
  • Írunk egy programot, ami egy harmadik paramétert is vár (mondjuk c). Ha a c értéke "A" (add), akkor összeadja a két számot, ha "S" akkor kivonja, és ha "M" akkor összeszorozza.
  • Írjunk egy programot, ami eldönti az a és b számról, hogy relatív prímek-e.
  • Írjunk egy programot, ami eldönti egy a számról, hogy prím-e.
  • Bónusz feladat: Írjunk egy programot, ami eldönti egy a számról, hogy négyzetszám-e
Utoljára módosította UPi 2017.VI.25 20:10-n
Bejegyzés módosítása | PermaLink
Votes disabled.
Tagek: