Stránka 1 z 1
Python - skok v programu na určitý řádek
Napsal: 27 lis 2015 16:42
od Sroorey
Ahoj,
mám na vás triviální dotaz. Jak už z názvu vypovídá, potřebuji v programu vytvořit "návěstí" kam mi bude program skákat při splnění / nesplnění podmínky. Řekněme, že mám funkci, která je založená na komparatoru složeného z ifu. V případě stejného čísla dojde k splnění podmínky a vygeneruje nové číslo. Teď potřebuji, aby se mi program vrátil na začátek funkce a znovu projel celej řetězec.
Re: Python - skok v programu na určitý řádek
Napsal: 27 lis 2015 17:51
od faraon
Máš nějaký velmi vážný důvod, proč nepoužít
normální cyklus? Ale opravdu vážný, jako například obojek s výbušninou kolem krku, který exploduje když zmáčkneš klávesu W? To že si pleteš Python s BASICem není dostatečně vážný důvod.
Pokud tedy jde tobě nebo někomu blízkému o život, dá se to udělat takhle:
Kód: Vybrat vše
number = input()
if number < 0: goto negative
if number % 2 == 0:
print "even"
else:
print "odd"
goto end
label: negative
print "negative"
label: end
print "all done"
Nalezeno zde:
http://stackoverflow.com/questions/1886 ... -in-pythonTakhle se programovalo kdysi v BASICu a není to dobrý způsob. Strukturovaně se to dá udělat také, a program je potom mnohem přehlednější. Vlastně neexistuje věc, která by se s dodržením zásad strukturovaného programování nedala udělat!
Re: Python - skok v programu na určitý řádek
Napsal: 27 lis 2015 20:08
od Sroorey
Ten důvod je, že jsem pořád trochu nakažený asemblerem a nevěděl jsem jak inteligentně to napsat. Díky
Re: Python - skok v programu na určitý řádek
Napsal: 28 lis 2015 08:36
od CZechBoY
Pokud se něco opakuje tak tam dej cyklus nebo relurzi.
Re: Python - skok v programu na určitý řádek
Napsal: 28 lis 2015 08:53
od X
I Pure Basic taktně mlčí o tom, že příkaz Goto (label) obsahuje. Ale funguje ...
Re: Python - skok v programu na určitý řádek
Napsal: 28 lis 2015 09:14
od faraon
Příkaz GOTO je stále přítomný i v "moderních" jazycích, ať v čisté podobě nebo maskovaný jako break, continue... Dokonce s vylepšeními, třeba možnost breaknutí víc cyklů najednou. Fajn věc, dost užitečná. Ale přestože BASIC, který byl na GOTO založený, je můj první a stále nejoblíbenější jazyk, tak mě děsí představa že je dnes někdo schopný vyplodit něco takového:
Kód: Vybrat vše
int p,k,l,i,j,d,q,R,t,r;
S1: s=0; p=1;
S2: if (s==0) { i=1; j=n; k=n; l=2*n+1; }
if (s==1) { i=n+1; j=2*n; k=0; l=n+1; }
d=1; q=p; r=p;
S3: if (x[i]>K>x[j]->K) goto S8;
S4: k=k+d; x[k]=x[i]; c[k]=c[i];
S5: i+=1; q-=1; if (q>0) goto S3;
S6: k+=d; if (k==l) goto S13; else x[k]=x[j];c[k]=c[j];
S7: j-=1; r-=1; if (r>0) goto S6; else goto S12;
S8: k+=d; x[k]=x[j]; c[k]=c[j];
S9: j-=1; r-=1; if (r>0) goto S3;
S10: k+=d; if (k==l) goto S13; else x[k]=x[i];c[k]=c[i];
S11: i+=1; q-=1; if (q>0) goto S10;
S12: q=p; r=p; d=-d; t=k; k=l; l=t; if (j-i<p) goto S10; else goto S3;
S13: p+=p; if (p<n) { s=1-s; goto S2; }
if (s==0) for (t=1; t<=n; t+=1) { x[t]=x[t+n];c[t]=c[t+n] }
To se klidně přiznám že se v různých malých programátorských prasárničkách a neobvyklých technikách občas poněkud vyžívám, ale tohle ne, tohle opravdu NE!
Re: Python - skok v programu na určitý řádek
Napsal: 28 lis 2015 09:40
od satik
Když se někde na fóru strhne diskuze o GOTO, tak vždycky patřím k těm, podle kterých jsou chvíle, kdy GOTO smysl má a je lepší, ale tenhle případ to rozhodně není :)
v tvém případě to vidím na "nekonecny" while cyklus, na jehoz konci bude break a ve kterem bude ta tvoje podminka a kdyz budes ten kod chtit spustit znova, tak jen zavolas continue (teda nevim, jak se obdoby tech prikazu jmenuji v pythonu)