Znova zavolání cyklu – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Znova zavolání cyklu – Python – Fórum – Programujte.comZnova zavolání cyklu – Python – Fórum – Programujte.com

 

Jan
~ Anonymní uživatel
187 příspěvků
18. 10. 2015   #1
-
0
-

Prosím může to někdo vytvořit za mě. Učim se python a sem z toho frustrovany nasrany!

Vytvořil jsem hru podle tutorialu http://www.geon.wz.cz/…es.html ; (zkoušení z násobilky)

Už jsem se dostal dál a dal tam volení obtižnosti. Bud uživatel zvolí obtižnost 1(inputem) nebo 2.  A tedka chci udělat to když dá cokoliv jiného třeba tam napíše obtížnost 15445 tk mu to napíše nedělej si ztoho prdel a vyber znova. A vrátí to ten program jakoby na začátek.  Nechci používat nejake goto prý to jde nějak zabalit do funkce? Ale jak sem to zabalil a zavolal tak to proste nešlo.. prosím pošlete mi kod aby to šlapalo a já nad tím zkusím zapřemýšlet. 

PS: můžete mi i celkově zhodnotit napsání toho programu.

Tady je zdroják:

dobre = 0
spatne = 0

obtiznost = input('Zadejte obtiznost: 1 nebo 2 ') #voleni si obtiznosti uzivatelem
obtiznost = int(obtiznost)
if obtiznost == 1:                            #obtiznost 1. cisla od 1-10  
    for odpoved in range(10):
        import random
        x = (random.randint(1,10))
        y = (random.randint(1,10))
        print (x,"*",y)
        odpoved = input('Zadejte cislo: ')
        odpoved = int(odpoved)
        if odpoved == (x*y):
            print ("DOBRE")
            dobre = dobre + 1
        else:
            print ("BLBE spravne to bylo: ",x*y)
            spatne = spatne + 1
elif obtiznost == 2:                         #obtiznost 2. cisla od 1-100   
    for odpoved in range(10):
        import random
        x = (random.randint(1,100))
        y = (random.randint(1,100))
        print (x,"*",y)
        odpoved = input('Zadejte cislo: ')
        odpoved = int(odpoved)
        if odpoved == (x*y):
            print ("DOBRE")
            dobre = dobre + 1
        else:
            print ("BLBE spravne to bylo: ",x*y)
            spatne = spatne + 1
else:
    print ("nedelej si z toho prdel jsou jen dvě obtiznosti, vyber znova:")
    #tady udělat at se vrati hezky na začátek

print ('Mate', dobre, 'spravnych odpovedi a', spatne, 'spatnych.')

Tady přikládám i screenshot s šipkou k úplnému pochopení.

http://www.jpeg.cz/images/2015/10/18/gzPIT.jpg

diky moc za odpovědi!!

Nahlásit jako SPAM
IP: 85.135.117.–
lukas.balaz0
Super člen
18. 10. 2015   #2
-
0
-

Jeden s najdôležitejších princípov (alebo čo to je) programovania je DRY - dont repeat yourself ... v tom tvojom kóde sa celý základ dvakrát opakuje. Musíš to oddeliť. To znamená: najprv budeš mať jeden cyklus len na načítavanie premennej obtiažnosť. Ak user zadá niečo iné ako 1 alebo 2, tak sa ten cyklus bude opakovať. Ak zadá 1 nastavíš nejakú premennú max na 10, ak zadá 2, nastavíš to na 100. Potom za tým bude zvyšok kódu ale s tým, že namiesto x = (random.randint(1,100)) bude x = (random.randint(1,max)) atď .. Ten samotný prvý for cyklus bude najlepšie asi while true s tým, že ak zadá 1 alebo 2, tak to brekaneš ...

Nahlásit jako SPAM
IP: 80.242.41.–
lukas.balaz0
Super člen
18. 10. 2015   #3
-
+1
-
Zajímavé

   

import random
print ("Zadejte obtiznost: 1 nebo 2 ")
while True:
    obtiznost = int(input())
    if obtiznost == 1:
        max = 10
        break
    elif obtiznost == 2:
        max = 100
        break
    else:
        print ("nedelej si z toho prdel jsou jen dvě obtiznosti, vyber znova:")
dobre = 0
spatne = 0
for i in range(10):
    x = (random.randint(1,max))
    y = (random.randint(1,max))
    print (x,"*",y)
    odpoved = int(input("Zadejte cislo: "))
    if odpoved == (x*y):
        print ("DOBRE")
        dobre = dobre + 1
    else:
        print ("BLBE spravne to bylo: ",x*y)
        spatne = spatne + 1
print ('Mate', dobre, "spravnych odpovedi a", spatne, "spatnych.")

Takto to funguje.

Nahlásit jako SPAM
IP: 80.242.41.–
gcx110
Návštěvník
19. 10. 2015   #4
-
0
-

#3 lukas.balaz
Ahoj, podle mě by bylo lepší mít tam nějakou boolevskou proměnnou jako podmínku pro cyklus a pak jí akorát změnit místo toho break. While True cykly jsou divné.

Nahlásit jako SPAM
IP: 78.128.194.–
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, 15 hostů

Podobná vlákna

Znova dministračný — založil Xmanik

Znova odoslať... — založil Riky

Spustiť program znova. — založil zonda

Zavolání metody — založil Pavel

 

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