Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: memnon.rhodes 13 Července 2012, 20:09:46

Název: Python - definicia funkcie
Přispěvatel: memnon.rhodes 13 Července 2012, 20:09:46
Salve,
potrebujem poradiť pri tvorbe jedného programu. Program slúži na výpočet určitého integrálu lichobežníkovou metódou, problém nastane v tedy keď je potrebné definovať funkciu. Zatiaľ som to vyriešil tak, že je potrebné do vstupu zadať:
Kód: [Vybrat]
lambda x:x**2kde x**2 je príslušná funkcia na integrovanie. Chcem to naprogramovať tak, že zadám len x**2.
Program vypadá takto:
Kód: [Vybrat]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "Lichobežníkova metoda"
from math import *
def lich(f,a,b,n):
h = (b-a)/n
s = (f(a)+f(b))*0.5
for i in range(1,n):
s += f(a+i*h)
print h*s
fun = input ("Zadaj funkciu: ")
fa = input("Zadaj a: ")
fb = input("Zadaj b: ")
fn = 20
print lich(fun,fa,fb,fn)
Za dobrú radu ĎAKUJEM  :)
Název: Re:Python - definicia funkcie
Přispěvatel: Yontalcar 13 Července 2012, 23:07:15
Kód: [Vybrat]
fcn = eval('lambda x: ' + raw_input("> "))
Název: Re:Python - definicia funkcie
Přispěvatel: memnon.rhodes 13 Července 2012, 23:18:18
Kód: [Vybrat]
fcn = eval('lambda x: ' + raw_input("> "))
Super ĎAKUJEM  :)
A čo eval znamená??
Teraz mám zas iný problém :) po skončený výpočtu mi vypíše None :(
Kód: [Vybrat]
Lichobežníkova metoda
Zadaj funkciu: x**2
Zadaj a: 0
Zadaj b: 5.0
41.71875
None
A teraz ma ešte napadla jedna myšlienka ako by som mal postupovať keby som chcel výpočet opakovať. Aby sa na konci výpočtu program opýtal či chcem vložiť ďalšiu funkciu alebo ukončiť program.  :)
Název: Re:Python - definicia funkcie
Přispěvatel: pacholik 13 Července 2012, 23:25:39
eval vyhodnotí řetězec v parametru jako příkaz pythonu.
Máš tam dvakrát print, nejdřív tiskeš ve funkci (výsledek příkladu) a pak výsledek funkce (None).
Název: Re:Python - definicia funkcie
Přispěvatel: memnon.rhodes 13 Července 2012, 23:32:45
eval vyhodnotí řetězec v parametru jako příkaz pythonu.
Máš tam dvakrát print, nejdřív tiskeš ve funkci (výsledek příkladu) a pak výsledek funkce (None).
Ahá :) ďakujem :).
Na ten jeden print som úplne zabudol :)
Název: Re:Python - definicia funkcie
Přispěvatel: Yontalcar 14 Července 2012, 00:16:24
A teraz ma ešte napadla jedna myšlienka ako by som mal postupovať keby som chcel výpočet opakovať. Aby sa na konci výpočtu program opýtal či chcem vložiť ďalšiu funkciu alebo ukončiť program.  :)
přibližně takhle:
Kód: [Vybrat]
while True:
  vypocet()
  ans=raw_input("Continue?")
  if not ans=="Yes":
    break


eval vyhodnotí řetězec v parametru jako příkaz pythonu.
Máš tam dvakrát print, nejdřív tiskeš ve funkci (výsledek příkladu) a pak výsledek funkce (None).

Ahá :) ďakujem :).
Na ten jeden print som úplne zabudol :)
Tak doufám, že v rámci dobrých programátorských mravů jsi zrušil ten uvnitř funkce  ;)
Název: Re:Python - definicia funkcie
Přispěvatel: memnon.rhodes 14 Července 2012, 11:19:03
Super, ďakujem. Len zatiaľ nechápem ten prví riadok while True:, viem čo znamená príkaz while ale prečo tam je aj True?
Název: Re:Python - definicia funkcie
Přispěvatel: domitea 14 Července 2012, 13:47:19
While běží dokud je splněna podmínka, takže to True říká že podmínka je splněna  ;D
Název: Re:Python - definicia funkcie
Přispěvatel: MaSo_CZ 14 Července 2012, 17:55:45
While běží dokud je splněna podmínka, takže to True říká že podmínka je splněna  ;D

hezky napsáno :D

jen dodám (pro tazatele ;) ) jinými slovy, smyčka běží neustále dokola, dokud nenarazí na break... :)
Název: Re:Python - definicia funkcie
Přispěvatel: memnon.rhodes 14 Července 2012, 20:07:43
Ešte mám jednu otázku ako postupovať aby som si vytvoril grafické rozhranie.
Našiel som tento návod: http://www.freenetpages.co.uk/hp/alan.gauld/czech/  - Programování grafického uživatelského rozhraní s Tkinter
ale tam som nenašiel ako dostať čísla z grafického rozhrania do programu...... :(
Název: Re:Python - definicia funkcie
Přispěvatel: pacholik 14 Července 2012, 23:35:31
O GUI s Tkinter se zmiňuje i programujte.com. 11 (http://programujte.com/clanek/2005100902-python-11-lekce/) 12 (http://programujte.com/clanek/2005102801-python-12-lekce/)