Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Python - definicia funkcie  (Přečteno 2441 krát)

memnon.rhodes

  • Návštěvník
  • Příspěvků: 69
Python - definicia funkcie
« kdy: 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  :)
Notebook: Lenovo, Intel® Core™ i7 2.20GHz, 8GB RAM,  NVIDIA GeForce GT 645M, Ubuntu 14.04LTS a Widows 8 :)

Yontalcar

  • Stálý člen
  • **
  • Příspěvků: 833
  • Semper fidelis
Re:Python - definicia funkcie
« Odpověď #1 kdy: 13 Července 2012, 23:07:15 »
Kód: [Vybrat]
fcn = eval('lambda x: ' + raw_input("> "))
NB: ASUS X53U - AMD Brazos E450; Debian GNU/Linux Sid amd64 (KDE 4.14)
Jen dvě věci jsou nekonečné - vesmír a lidská hloupost. Tím prvním si ovšem nejsem tak jist. - Albert Einstein

memnon.rhodes

  • Návštěvník
  • Příspěvků: 69
Re:Python - definicia funkcie
« Odpověď #2 kdy: 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.  :)
Notebook: Lenovo, Intel® Core™ i7 2.20GHz, 8GB RAM,  NVIDIA GeForce GT 645M, Ubuntu 14.04LTS a Widows 8 :)

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:Python - definicia funkcie
« Odpověď #3 kdy: 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).

memnon.rhodes

  • Návštěvník
  • Příspěvků: 69
Re:Python - definicia funkcie
« Odpověď #4 kdy: 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 :)
Notebook: Lenovo, Intel® Core™ i7 2.20GHz, 8GB RAM,  NVIDIA GeForce GT 645M, Ubuntu 14.04LTS a Widows 8 :)

Yontalcar

  • Stálý člen
  • **
  • Příspěvků: 833
  • Semper fidelis
Re:Python - definicia funkcie
« Odpověď #5 kdy: 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  ;)
NB: ASUS X53U - AMD Brazos E450; Debian GNU/Linux Sid amd64 (KDE 4.14)
Jen dvě věci jsou nekonečné - vesmír a lidská hloupost. Tím prvním si ovšem nejsem tak jist. - Albert Einstein

memnon.rhodes

  • Návštěvník
  • Příspěvků: 69
Re:Python - definicia funkcie
« Odpověď #6 kdy: 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?
Notebook: Lenovo, Intel® Core™ i7 2.20GHz, 8GB RAM,  NVIDIA GeForce GT 645M, Ubuntu 14.04LTS a Widows 8 :)

domitea

  • Návštěvník
  • Příspěvků: 39
  • Mayday, mayday, bird strike, flight 1549
Re:Python - definicia funkcie
« Odpověď #7 kdy: 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
Prozřel jsem! Už se na svět nedívám přes Wokna, ale přes okno!

MaSo_CZ

  • Návštěvník
  • Příspěvků: 54
Re:Python - definicia funkcie
« Odpověď #8 kdy: 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... :)
desktop: AMD FX-8120 & CRUCIAL 8GB (kit 2x 4GB) Ballistix Tactical 1866MHz @ ASUS M5A88-V EVO: Ubuntu 12.04/64b
server:    AMD Duron@1400MHz: Debian v6

memnon.rhodes

  • Návštěvník
  • Příspěvků: 69
Re:Python - definicia funkcie
« Odpověď #9 kdy: 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...... :(
Notebook: Lenovo, Intel® Core™ i7 2.20GHz, 8GB RAM,  NVIDIA GeForce GT 645M, Ubuntu 14.04LTS a Widows 8 :)

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:Python - definicia funkcie
« Odpověď #10 kdy: 14 Července 2012, 23:35:31 »
O GUI s Tkinter se zmiňuje i programujte.com. 11 12

 

Provoz zaštiťuje spolek OpenAlt.