IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 8. diel - Bojovník do arény v Pythone

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Roman
Člen
Avatar
Roman:15.9.2015 11:44

Super článok :)
PS: v konštruktore ti chýba

self.__kostka = kostka
 
Odpovedať
15.9.2015 11:44
Avatar
gcx11
Tvůrce
Avatar
Odpovedá na Roman
gcx11:16.9.2015 9:05

Díky za upozornění :)

 
Odpovedať
16.9.2015 9:05
Avatar
Tomáš Pařízek:30.7.2016 12:49

Nedal byste mi někdo kompletní zdroják?
Někde dělám chybu a nevím kde.

 
Odpovedať
30.7.2016 12:49
Avatar
gcx11
Tvůrce
Avatar
Odpovedá na Tomáš Pařízek
gcx11:30.7.2016 13:05

Tak jsem ho hledal, jestli ho ještě nemám a nakonec ho mám, ale došlo mi, že u článku je přesně ten samý zdrojový kód ke stažení, takže si to asi stáhni odsud.

 
Odpovedať
30.7.2016 13:05
Avatar
Odpovedá na gcx11
Tomáš Pařízek:30.7.2016 13:08

Děkuji, sice mě to mohlo napadnout ale nenapadlo.
Je to super, že zde máme takové redaktory.

 
Odpovedať
30.7.2016 13:08
Avatar
kampkin
Člen
Avatar
kampkin:10.8.2016 12:37

Zdravím,
ošetření grafických životů proti stavu " [ ]", když je bojovník stále naživu se mi zdá elegantnější za pomoci knihovny math, konkrétně metody ceil, která zaokrouhlí desetinná čísla nahoru. :)

def graficky_zivot(self, celkem = 20):
    import math
    pocet = math.ceil(self.__zivot / self.__max_zivot * celkem)
    return "[{0}{1}]".format("#"*pocet, " "*(celkem-pocet))
 
Odpovedať
10.8.2016 12:37
Avatar
gcx11
Tvůrce
Avatar
Odpovedá na kampkin
gcx11:10.8.2016 12:59

Ahoj, tohle se zdá jako lepší řešení, ale podle konvencí by se měly importy dávat na začátek skriptu. PEP 8

Editované 10.8.2016 12:59
 
Odpovedať
10.8.2016 12:59
Avatar
kampkin
Člen
Avatar
Odpovedá na gcx11
kampkin:10.8.2016 13:25

Děkuji za upozornění, příště si dám pozor :)
pouze jsem se inpiroval při vytváření kostky, přesněji import knihovny random

def hod(self):
    """Vrátí náhodné číslo od 1 do počtu stěn"""
    import random as _random
    return _random.randint(1, self.__pocet_sten)

Je tento zápis v pořádku nebo bychom měli import také provést na začátku?
Popřípadě import je vhodnější provést na úplném začátku skriptu anebo v metodě __init__()?
Předem děkuji za odpověď

 
Odpovedať
10.8.2016 13:25
Avatar
gcx11
Tvůrce
Avatar
Odpovedá na kampkin
gcx11:10.8.2016 13:35

Teď už bych to asi takhle nepsal. Také by se to mělo dát na úplný začátek skriptu, ale až pod shebang, to je to #!/usr/bin/env python3. Metoda __init__ slouží k inicializaci objektu, tam bych to neimportoval už vůbec, jelikož by to nefungovalo a akorát vyhodilo chybu.

class Foo:
        def __init__(self):
                import math
                this.x = 4
        def bar(self):
                return math.sqrt(x)

foo = Foo()
foo.bar() # vyhodí chybu, protože bar tu math nezná
 
Odpovedať
10.8.2016 13:35
Avatar
gcx11
Tvůrce
Avatar
Odpovedá na kampkin
gcx11:10.8.2016 13:45

Jelikož Python v té funkci musí mít nadefinovaný to jméno math a takhle ho nemá. Ale tohle by fungovalo, ovšem je to strašná prasarána.

#!/usr/bin/env python3

class Foo:

    def __init__(self):
        self.math = __import__("math")
        self.x = 4

    def bar(self):
        return self.math.sqrt(self.x)

foo = Foo()
print(foo.bar())

A nahoře mám chybu, to this má být self, už se ten C# začal projevovat :D

Editované 10.8.2016 13:46
 
Odpovedať
10.8.2016 13:45
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!