Python - skok v programu na určitý řádek

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Sroorey
Level 1.5
Level 1.5
Příspěvky: 132
Registrován: červenec 12
Pohlaví: Muž
Stav:
Offline

Python - skok v programu na určitý řádek

Příspěvekod Sroorey » 27 lis 2015 16:42

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.

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Python - skok v programu na určitý řádek

Příspěvekod faraon » 27 lis 2015 17:51

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-python

Takhle 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!
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Sroorey
Level 1.5
Level 1.5
Příspěvky: 132
Registrován: červenec 12
Pohlaví: Muž
Stav:
Offline

Re: Python - skok v programu na určitý řádek

Příspěvekod Sroorey » 27 lis 2015 20:08

Ten důvod je, že jsem pořád trochu nakažený asemblerem a nevěděl jsem jak inteligentně to napsat. Díky

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Python - skok v programu na určitý řádek

Příspěvekod CZechBoY » 28 lis 2015 08:36

Pokud se něco opakuje tak tam dej cyklus nebo relurzi.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
X
Elite Level 12.5
Elite Level 12.5
Příspěvky: 19360
Registrován: květen 07
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Python - skok v programu na určitý řádek

Příspěvekod X » 28 lis 2015 08:53

I Pure Basic taktně mlčí o tom, že příkaz Goto (label) obsahuje. Ale funguje ...

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Python - skok v programu na určitý řádek

Příspěvekod faraon » 28 lis 2015 09:14

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!
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
satik
Level 6
Level 6
Příspěvky: 3509
Registrován: leden 15
Bydliště: Krkonoše
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Python - skok v programu na určitý řádek

Příspěvekod satik » 28 lis 2015 09:40

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)
PC: MSI RTX 4090 Suprim X, AMD Ryzen 9 7950x3D, ASUS Crosshair HERO X6670E, 64GB RAM@6000CL30, Fractal Define Torrent, Seasonic PRIME TX 1600W, SSD Seagate Firecuda 530 M2 2TB +
4TB + 4TB SATA Micron 5200 ECO
Periferie: Samsung Odyssey G9 Neo + 2x AOC AG271QG, Razer Deathadder, Ducky Shine7, Steelseries QcK+, Beyerdynamic MMX300, Valve Index


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Excel VBA funkčnost comboboxu aby vypsal určitý řetězec Příloha(y)
    od Marines93 » 29 srp 2024 09:02 » v Kancelářské balíky
    2
    3327
    od Marines93 Zobrazit poslední příspěvek
    09 zář 2024 09:38
  • Chyba příkazový řádek Příloha(y)
    od zik9 » 05 čer 2025 11:24 » v Windows 11, 10, 8...
    4
    1135
    od zik9 Zobrazit poslední příspěvek
    12 čer 2025 15:33
  • Panely otevřených programů na hlavním panelu Příloha(y)
    od Prorock » 20 říj 2024 15:00 » v Windows 11, 10, 8...
    28
    7886
    od Prorock Zobrazit poslední příspěvek
    02 lis 2024 13:41

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů