NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 2 - První objektová aplikace v Pythonu - Hello object world

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Michal Novák:1.11.2019 13:03

Ne...prostě třídy jsem nějak nepochopil.... Tím to pro mě asi končí, protože přes to nemůžu dál. Většina věcí v Pythonu je o třídách. Náchápu jak jednotlivé argumenty fungují a jaká se struktura...co se musí volat, proč se to volá, nebo proč z hlediska syntaxe je print("{0} tady ta složená závorka.......co to znamená? Že se sem může něco importovat? Jak to?....hehhhh

 
Odpovědět
1.11.2019 13:03
Avatar
Petr Jeřábek
Tvůrce
Avatar
Odpovídá na Michal Novák
Petr Jeřábek:3.11.2019 19:29

Ahoj. Základ pro to, aby jsi mohl začít s OOP v Pythonu je pochopit nejdříve principy samotného OOP a až poté ho aplikovat v Pythonu nebo jakémkoli jiném objektově orientovaném programovacím jazyce. Jestli máš s tímhle problém, doporučuji znova a klidně několikrát přečíst první díl tohoto seriálu, ve kterém je to dost dobře vysvětlené, nebo navštívit jinou stránku, třeba tuto - http://pehapko.cz/oop/uvod. Jakmile ti bude tohle jasné, naučit se syntaxi Pythonu je už jednoduché. Ty složené závorky se píšou abys nemusel spojovat řetězce, prostě napíšeš složenou závorku, do ní index a za celý řetězec dáš .format a pouze doplníš proměnné či části celého řetězce. Nemá to nic společného s importem nebo OOP, je to jen syntaxe pro přehlednější a lepší kód.

Odpovědět
3.11.2019 19:29
Declare variables, not war
Avatar
Petr Los
Člen
Avatar
Petr Los:18.10.2020 18:33
#!/usr/bin/env python3

# Trida na zadavani vstupu s osetrenim podminky, ze bude zadano vzdy cislo
class Vstup():
    def zadej(self, text):
        global cislo
        carryOnBool = True
        while carryOnBool: #dokud se nezada cislo, bude cyklus probihat opakovane
            vstup = input(text)
            if vstup.isnumeric():
                cislo = int(vstup)
                carryOnBool = False
            else:
                print("Nebylo zadano cislo")
        return cislo

# Vlastni trida kalkulacka, vcetne osetreni deleni nulou
class Kalkulacka():
    def soucet(self, a, b):
        return a + b

    def soucin(self, a, b):
        return a * b

    def podil(self, a, b):
        if b == 0:
            podil = "nelze delit nulou"
        else:
            podil = a / b
        return podil

    def rozdil(self, a, b):
        return a - b

# Deklarace objektu kalkulacka + vstup
kalkulacka = Kalkulacka()
vstup = Vstup()

# Zadani vstupnich cisel, vc. predani parametru toho, co se ma zadat
cislo1 = vstup.zadej("Zadej prvni cislo: ")
cislo2 = vstup.zadej("Zadej druhe cislo: ")

# Vypsání vysledku
print("soucet: ", kalkulacka.soucet(cislo1, cislo2))
print("soucin: ", kalkulacka.soucin(cislo1, cislo2))
print("podil:", kalkulacka.podil(cislo1, cislo2))
print("rozdil:", kalkulacka.rozdil(cislo1, cislo2))

je to podle spravne OOP praxe? :)

 
Odpovědět
18.10.2020 18:33
Avatar
Martin Žiďas:24.1.2021 14:21
class Kalkulacka:
    """
    Třída reprezentuje kalkulačku, která slouží k provedení jendoduché matematické operace dvou čísel.
    """
    def zjisti_jmeno(self):
        """
        Zjistí od uživatele jeho jméno.
        """
        jmeno = str(input("napiš svoje jméno\n"))
        return jmeno

    def pozdrav_uzivateli(self,jmeno):
        """
        Vrátí pozdrav uživateli.
        """
        print("ahoj",jmeno, ",já jsem kalkulačka.")

    def vypis_moznosti(self):
        """
        Vrátí výpis možností matematických operací
        """
        print("1 - sčítání")
        print("2 - odčítání")
        print("3 - násobení")
        print("4 - dělení")
        print("5 - umocňování")

    def vyber_prvni_cislo(self):
        """
        Vrátí první uživatelem zvolené číslo a ošetří chybu při vložení neplatné volby
        """
        spravne = True
        while spravne:
            try:
                cislo = float(input("napiš první číslo\n"))
                spravne = False
            except ValueError:
                print("napsal si něco jiného")
            else:
                return cislo

    def vyber_druhe_cislo(self):
        """
        Vrátí první uživatelem zvolené číslo a ošetří chybu při vložení neplatné volby
        """
        spravne = True
        while spravne:
            try:
                cislo = float(input("napiš druhé číslo\n"))
                spravne = False
            except ValueError:
                print("napsal si něco jiného")
            else:
                return cislo

    def vyber_operaci(self):
        """
        Vrátí uživatelem zvolenou operaci a ošetří chybu při vložení neplatné volby
        """
        spravne = True
        while spravne:
            try:
                cislo = int(input("vyber číslo operace\n"))
                if cislo > 4:
                    raise ValueError
                else:
                    spravne = False
            except ValueError:
                print("zadal si něco jiného")
            else:
                return cislo

    def vykonej(self,cislo1,cislo2,cislo_operace):
        """
        Vykoná příslušnou operaci a vypíše výsledek
        """
        if self.cislo_operace == 1:
            print("jejich součet je:", self.cislo1 + self.cislo2)
        elif self.cislo_operace == 2:
            print("jejich rozdíl je:", self.cislo1 - self.cislo2)
        elif self.cislo_operace == 3:
            print("jejich součin je:", self.cislo1 * self.cislo2)
        elif self.cislo_operace == 4:
            print("jejich podíl je:", self.cislo1 / self.cislo2)
        elif self.cislo_operace == 5:
            print(self.cislo1, "na", self.cislo2, "je:", self.cislo1 ** self.cislo2)
        else:
            pass

kalkulacka = Kalkulacka()
uzivatel = Kalkulacka()
uzivatel.jmeno = kalkulacka.zjisti_jmeno()
kalkulacka.pozdrav_uzivateli(uzivatel.jmeno)
kalkulacka.cislo1 = kalkulacka.vyber_prvni_cislo()
kalkulacka.cislo2 = kalkulacka.vyber_druhe_cislo()
kalkulacka.vypis_moznosti()
kalkulacka.cislo_operace = kalkulacka.vyber_operaci()
kalkulacka.vykonej(kalkulacka.cislo1,kalkulacka.cislo2,kalkulacka.cislo_operace)

Ahoj, přidávám svojí kalkulačku. Dobré, nebo špatné? :D

 
Odpovědět
24.1.2021 14:21
Avatar
Patrik Vonka
Člen
Avatar
Patrik Vonka:9.1.2022 21:45

V prvním příkladu chybí odsazení. Trochu to může mást. :)

class Zdravic:

    def pozdrav(self):
    print("Hello object world!")

zdravic = Zdravic()
zdravic.pozdrav()
input()
 
Odpovědět
9.1.2022 21:45
Avatar
Pavel Hajduček:10.2.2022 12:38
class Kalkulacka:
    """
    Třída reprezentuje konzolovou kalkulačku.
    """
    def nacti_cislo(self, text_zadani, text_chyba):
        """
        Funkce která vrací jen float číslo.
        """
        spatne = True
        while spatne:
            try:
                cislo = float(input(text_zadani))
                spatne = False
            except ValueError:
                print(text_chyba)
            else:
                return cislo

    def dalsi_priklad(self):
        """
        Funkce se zeptá uživatele, zda chce zadat další příklad.
        Vrací bool.
        """
        nezadano = True
        while nezadano:
            odpoved = input("\nPřejete si zadat další příklad? (y/n): ")
            if odpoved == "y" or odpoved == "Y":
                return True
            elif odpoved == "n" or odpoved == "N":
                return False
            else:
                pass

    def volba(self):
        """
        Výběr operace a následně vypíše výpočet.
        """
        print("1 - sčítání")
        print("2 - odčítání")
        print("3 - násobení")
        print("4 - dělení")
        print("5 - umocňování")
        cislo_operace = self.nacti_cislo("Zadej volbu: ", "Neplatné zadání!\n")
        if cislo_operace == 1:
            print("Jejich součet je:", self.prvni_cislo + self.druhe_cislo)
        elif cislo_operace == 2:
            print("Jejich rozdíl je:", self.prvni_cislo - self.druhe_cislo)
        elif cislo_operace == 3:
            print("Jejich součin je:", self.prvni_cislo * self.druhe_cislo)
        elif cislo_operace == 4:
            while self.druhe_cislo == 0:
                print("Nulou nelze dělit!")
                self.druhe_cislo = self.nacti_cislo("Zadej nenulové číslo: ", "Neplatné zadání!\n")
            else:
                print("Jejich podíl je:", self.prvni_cislo // self.druhe_cislo)
        elif cislo_operace == 5:
            print(self.prvni_cislo, "na", self.druhe_cislo, "je", self.prvni_cislo ** self.druhe_cislo)
        else:
            print("Neplatná volba!")

    def main(self):
        print("Kalkulačka\n")
        pokracovat = True
        while pokracovat:
            self.prvni_cislo = self.nacti_cislo("Zadej číslo: ", "Neplatné číslo!\n")
            self.druhe_cislo = self.nacti_cislo("Zadej číslo: ", "Neplatné číslo!\n")
            self.volba()
            if self.dalsi_priklad():
                pass
            else:
                pokracovat = False
                print("Zdarec!")

kalkulacka = Kalkulacka()
kalkulacka.main()
Editováno 10.2.2022 12:39
 
Odpovědět
10.2.2022 12:38
Avatar
Jakub Ebringer:22.3.2022 10:45

Ahoj! Pěkný článek! Ovšem, asi jsem našel chybu. Jakmile se v článku vytváří funkce pozdrav(self), tak print("Hello object world!") není indentované. Ale to je jen taková drobnost :-D.

 
Odpovědět
22.3.2022 10:45
Avatar
Martin Pavlik:17.6.2022 12:10
#KALKULACKA V OOP
class Kalkulacka:
    a=0
    b=0
    def secti(self):
        return self.a + self.b
    def odecti(self):
        return self.a - self.b
    def vynasob(self):
        return self.a * self.b
    def vydel(self):
        return self.a / self.b

vypocet=Kalkulacka()
print ("1-Scitani")
print ("2-Odecitani")
print ("3-Nasobeni")
print ("4-Deleni")
operace=int(input("Zadej operaci: "))

vypocet.a=int(input("Zadej prvni cislo: "))
vypocet.b=int(input("Zadej druhe cislo: "))
if vypocet.b==0: #OSETRENI DELENI NULOU
    print ("0 se nedeli")
else:
    if operace== 1:
        print ("Soucet je: ",vypocet.secti())
    elif operace == 2:
        print ("Rozdil je: ",vypocet.odecti())
    elif operace == 3:
        print ("Nasobek je: ",vypocet.vynasob())
    elif operace == 4:
        print ("Podil je: ",vypocet.vydel())
    else:
        print ("Chyba")
Editováno 17.6.2022 12:12
 
Odpovědět
17.6.2022 12:10
Avatar
Hedvika Pajerová:12.7.2022 13:09

Ahoj, jak by prosím vypadalo formátování výstupu pomocí f-string namísto str.format()?

return f"{text} {jmeno}!"

už chce mít nadefinovanou proměnnou text, tudíž hází error

Editováno 12.7.2022 13:09
 
Odpovědět
12.7.2022 13:09
Avatar
Jaroslav Toninger:19.8.2022 20:36

No ještě si to asi tak 2x projdu, protože se v tom lehce ztrácím, je to zajímavé, zatím to i vypadá, že je to lépe zpracované, než základy Pythonu. Děkuji ;)

Odpovědět
19.8.2022 20:36
Bez extrému by nebyl pokrok v přírodě.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 86.