Funkce rada pro začátečníka – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Funkce rada pro začátečníka – Python – Fórum – Programujte.comFunkce rada pro začátečníka – Python – Fórum – Programujte.com

 

H3k70r
~ Anonymní uživatel
5 příspěvků
12. 2. 2019   #1
-
0
-

Zdravím, jsem v Pythonu úplný nováček a potřeboval bych trochu objasnit funkce. Udělal jsem jednoduchý textový prográmek, který simuluje souboj mezi hráčem a protivníkem, abych ho zpřehlednil, tak jsem si ho chtěl dát do funkcí, ale to je pro mě zatím něco nereálného. Mám Python 3.7.2

Ukázka:

import random

def hrac():
    uthrac= random.randint(2,12)+10
    print("základní útok hráče", uthrac)
    defhrac= random.randint(2,12)+10
    print("základní obrana hráče", defhrac)
    zivhrac= random.randint(2,12)+20
    print("základní životy hráče",zivhrac)
    print("")
    
def proti():
    utproti= random.randint(2,12)+10
    print("základní útok protivníka", utproti)
    defproti= random.randint(2,12)+10
    print("základní obrana protivníka", defproti)
    zivproti= random.randint(2,12)+20
    print("základní životy protivníka",zivproti)
    print("")
   

hrac()
proti()

Chtěl bych si ve funkci nadefinovat proměnné utoku,obrany a zivotu, ale chtel bych pak s nimi pracovat i mimo funkci, ale už nevím, jak to udělat, jelikož když pak vypíšu:

print(uthrac)

Tak mi to hodí chybu, což chápu, že mám něco špatně, ale nevím co. Zkoušel jsem i různě pracovat s return, ale asi mi to pořád není jasné a něco mi uniká. 

Děkuji za jakoukoliv pomoc při objasnění funkcí a speciálně, když ve funkci vytvořím nějakou proměnnou, jak ji poté dostat ven :-D

Nahlásit jako SPAM
IP: 81.30.248.–
gna
~ Anonymní uživatel
1849 příspěvků
12. 2. 2019   #2
-
0
-

Proměnné vytvořené ve funkci jsou lokální, tj. viditelné a existující jen v té funkci. Můžeš to obejít použitím global. Pak je dobré aspoň je ještě explicitně globálně definovat, ať to není tak, že se prostě nějak "vyskytnou". Celkově to je trochu čuňárna, ale pro začátečníky nejjednoduší možnost, než se to naučí lépe.

uthrac = defhrac = zivhrac = 0
utproti = defproti = zivproti = 0


def hrac():
    global uthrac, defhrac, zivhrac
    uthrac = ...


def proti():
    global utproti, defproti, zivproti
    utproti = ...

Když chceš vracet více hodnot, tak je můžeš "zabalit" do jedné. Tady třeba jako tuple:

def vygeneruj_postavu():
    utok = ...
    obrana = ...
    zivot = ...
    return (utok, obrana, zivot)

# můžeš to držet v celku
hrac = vygeneruj_postavu()  # hrac[0] je utok, atd.
protivinik = vygeneruj_postavu()

# nebo "rozbalit"
uthrac, defhrac, zivhrac = vygeneruj_postavu()
utproti, defproti, zivproti = vygeneruj_postavu()

A vyloženě se nabízí použití objektů. To se zkus naučit co nejdříve. 

class Osoba:
    def __init__(self, jmeno):
        self.jmeno = jmeno
        self.utok = ...
        self.obrana = ...
        self.zivot = ...

    def vypis(self):
        print(self.jmeno, self.utok, self.obrana, self.zivot)

hrac = Osoba('hrac')
protivnik = Osoba('protivnik')

hrac.vypis()
protivnik.vypis()
Nahlásit jako SPAM
IP: 213.211.51.–
H3k70r
~ Anonymní uživatel
5 příspěvků
13. 2. 2019   #3
-
0
-

#2 gna
díky mockrát, přesně v takové nějaké řešení jsem doufal a je to výborně popsané :-)

Nahlásit jako SPAM
IP: 81.30.248.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Kniha pro začátečníka — založil Anonymní uživatel

Vhodná kniha pro začátečníka — založil AdamShampoo

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý