Funkcie a premenne – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Funkcie a premenne – Python – Fórum – Programujte.comFunkcie a premenne – Python – Fórum – Programujte.com

 

Eidam655
~ Anonymní uživatel
14 příspěvků
3. 4. 2007   #1
-
0
-

čau. keď v IDLE definujem funkciu, v ktorej sa pracuje s premennými, musím ich definovať aj mimo funkcie, však? problém je, že obe premenné majú v sebe raw_input('hi'). (napr. premenna=raw_input('zadaj nieco: ')).

tým pádom sa však vytlačia ešte skôr, ako ich ja potrebujem!

ako teda dosiahnuť výsledok, aby som premenné mohol používať, mať ich zadefinované mimo funkcie, a pritom nevolať ich skôr ako potrebujem?

Díky, dufam ze ste ma pochpoili ;)

meno=raw_input('meno')

def zadaj(x):
meno=raw_input('meno')

Nahlásit jako SPAM
IP: ...–
Jakub Vojáček
~ Moderátor
0
Grafoman
3. 4. 2007   #2
-
0
-

pokud jsem pochopil otázku, tak by si musel použít příkaz global:



meno=raw_input('>>>')
def zadaj():
global meno
meno=raw_input('>>>')
print "jmeno: ",meno
zadaj()
print "jmeno: ",meno

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
3. 4. 2007   #3
-
0
-

global je nejméně vhodný



def zadaj():
return raw_input('>>>')
meno = zadaj()
print "jmeno: ",meno

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
3. 4. 2007   #4
-
0
-

Nebo použít třídu jako kontejner:



class kontejner:pass
kontejner.meno=raw_input('>>>')
def zadaj(x):
kontejner.meno=raw_input('>>>')
print "jmeno: ",kontejner.meno
zadaj(5)
print "jmeno: ",kontejner.meno

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
Eidam6550
Newbie
5. 4. 2007   #5
-
0
-

super, díky, pomohlo to...

Lekciu č.8 som práve dokončil na 2 (oznámkoval som si to sám, lebo sa mi to nexce nahrávať sem =)).

Teraz sa snažím vylepšiť zoznam tak, aby otestoval, či už náhodou také meno/číslo v zozname nie je, a až potom ho pridať.

IF sekvenciu zvládnem, no zoznam som takto:

    meno=zadaj_meno()

cislo=zadaj_cislo()
zoznamm=[meno, cislo]
full_zoznam.append(zoznamm)


... v "zoznamm" neostanú žiadne data, a na ich prítomnosť nemôžem otestovať "full_zoznam".
(tieto údaje su v tele zadefinovanej funkcie, nie samostatne)
Čo po vás chcem? nie odslova doslova napísaný kód, ktorý iba skopírujem, ak je ot možné, poprosil by som len nejaký tip, napr. "Ten tvoj systém je veľmi neefektívny, skús to s použitím toho a toho."

Díky ešte raz =)

Nahlásit jako SPAM
IP: ...–
*Chuck Norris napočítal do nekonečna. Dvakrát! :D
geon0
Grafoman
5. 4. 2007   #6
-
0
-

no já bych to udělal nějak takto:

if nenitam(zoznam, full_zoznam):

pridejho tam


no a ve funkci nenitam() bych se pokusil zjistovat, jeslti tam ci neni. Nejak treba takto:

def nenitam(a,b):

for jmeno, cislo in b: # tady se atuomaticky rozbalí oba dva cleni seznamu do promenných jmeno a cislo
když se a[0]==jmeno:
return False
když se a[1]==cislo
return False
return True


Pokud něčemu z kodu nerozumíš, ptej se dál ;-)


Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
5. 4. 2007   #7
-
0
-

To geon: Není to zbytečně složitý? já bych to řešil takle:



full_zoznam=[]
for x in range(3):
meno=raw_input("zadej jmeno: ")
cislo=input("zadej cislo: ")
zoznamm=[meno, cislo]
if zoznamm not in full_zoznam:#neni tam
full_zoznam.append(zoznamm)
else:#je tam
print "uz tam je.."

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
5. 4. 2007   #8
-
0
-

možná, ale neodchytíš, když bude stejný číslo, ale trochu jiný jméno..... Musí se schodovat obě dvě přesně stejně.

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Eidam6550
Newbie
6. 4. 2007   #9
-
0
-

super, kód som pochopil ;-)

ešte mám však otázku: full_zoznam teraz obsahuje ďalšie zoznamy v sebe (tj. print full_zoznam[0] vypíše ['a', '1']). Dá sa vybrať položka zo zonamu v zozname? Tj. aby som mohol výstup formátovať, napr.:

a: 1
b: 2

Teraz dostávam:

['a', '1']
['b', '2']

Díky :o)

Nahlásit jako SPAM
IP: ...–
*Chuck Norris napočítal do nekonečna. Dvakrát! :D
geon0
Grafoman
6. 4. 2007   #10
-
0
-

Dostáváš obyčejný seznam, že? A umíš z obyčejného seznamu dostat nějakou položku? Pokud ano, tak tady to je stejné ;-)

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Eidam6550
Newbie
6. 4. 2007   #11
-
0
-

asi sme sa nepochopili. ak dam vypisat cely full_zoznam, vyhodi [['a', '1'], ['b', '2']].

print full_zoznam[0] -> ['a', '1']

no a ODTIAL neviem ako dostat prvu polozku z prvej polozky, lebo full_zoznam[0[0]] vypľuje error. (a zoznamm sa po každom úspešnom pridaní vynuluje.)

napadá ma vybratie prvej položky z prvej položky, ale ak to napísať?

print full_zoznam[0]... a dalej čo? :) díky

Nahlásit jako SPAM
IP: ...–
*Chuck Norris napočítal do nekonečna. Dvakrát! :D
Jakub Vojáček
~ Moderátor
0
Grafoman
6. 4. 2007   #12
-
0
-



print full_zoznam[0][0]

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
Eidam6550
Newbie
6. 4. 2007   #13
-
0
-

jáj! Díky! Tušil som, že to bude dáka takáto prkotina... :-D

ďakujem

Nahlásit jako SPAM
IP: ...–
*Chuck Norris napočítal do nekonečna. Dvakrát! :D
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, 18 hostů

Podobná vlákna

Premenne — založil Kenny

C# globálne premenné — založil Miro1701

Premenné - problém — založil Ondrej Ruz

Zdielane premenne — založil Warchangel

Premenné v správe — založil kylexy

 

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