Vajíčková mánie Vajíčková mánie
Vyšlehej si extra vědomosti! Až 100% bodů na prémiový obsah zdarma! Více zde

Diskuze: Funkce-rada pro nováčka

Aktivity (2)
Avatar
Lukáš U
Člen
Avatar
Lukáš U:12. února 7:57

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.randin­t(2,12)+10
print("základní útok hráče", uthrac)
defhrac= random.randin­t(2,12)+10
print("základní obrana hráče", defhrac)
zivhrac= random.randin­t(2,12)+20
print("základní životy hráče",zivhrac)
print("")

def proti():
utproti= random.randin­t(2,12)+10
print("základní útok protivníka", utproti)
defproti= random.randin­t(2,12)+10
print("základní obrana protivníka", defproti)
zivproti= random.randin­t(2,12)+20
print("základní životy protivníka",ziv­proti)
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

Zkusil jsem: Zkoušel jsem už všechno možné, ale jsem z toho jelen :-)

Chci docílit: Potřeboval bych zjistit jak pracovat dále v programu s proměnnou, kterou jsem si nadefinoval ve funkci

 
Odpovědět 12. února 7:57
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12. února 10:14

Python moc neznam. Takze neco vim a neco je s pomoci google. S trochou stesti to bude fungovat.

def utok(hrac1, hrac1):
  neco_proved()
  return hrac1

hrac1 = utok (hrac1, hrac2)

Nebo to uloz do pole a predavej indexy. Tady mas 2 moznosti, jak by to v Py mohlo fungovat.

class Hrac:
     def __init__(self, x, y):
         self.x = x
         self.y = y

def utok(a, b):
  global  pole
  pole[a]  = neco_proved()
  pole[b]  = neco_proved()

def obrana(pole, a, b):
  pole[a]  = neco_proved()
  pole[b]  = neco_proved()
  return pole

pole = array()
pole.insert(Hrac(1, 2))
pole.insert(Hrac(3, 4))
utok(0, 1)
pole = obrana(pole, 0, 1)

Jo, a bylo by fajn, kdybys kod psal do code bloku, tlacitko editoru </>

Editováno 12. února 10:16
 
Nahoru Odpovědět 12. února 10:14
Avatar
Lukáš U
Člen
Avatar
Odpovídá na Peter Mlich
Lukáš U:12. února 10:53

díky, ale asi to úplně není řešení, které jsem hledal :-D

 
Nahoru Odpovědět 12. února 10:53
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12. února 11:05

Obavam se, ze mimo ty 2 zpusoby, neni dalsi, jak pracovat s globalni promenou mimo funkci. Bud ji funkci predas a nebo tam mas global. A je mozne, ze to mam ze starych stranek, stary python. Ze se ani to 'global' tam nemusi psat.
Ale necham se prekvapit, treba nekdo s necim prijde :)

Editováno 12. února 11:08
 
Nahoru Odpovědět 12. února 11:05
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 4 zpráv z 4.