Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 13. 02. 2016 14:46

Tomas5
Příspěvky: 190
Škola: MFF UK 1.ročník
Pozice: student
Reputace:   
 

Python for cyklus

Dobrý den,
nevím si rady, jak ošetřit neplatné vstupy ve for cyklu:

Code:

n = 2;
matrix = [[0 for j in (range((n+1)))] for i in (range((n)))] 
for i in range(n):
        for j in range(n+1):
         try:
            print ("prvek v radku ",i+1," a sloupci ",j+1,": ")
            matrix[i][j] = int(input())
            if matrix[i][j] in (0,1,2):
                break
            print('Chyba, vkládejte čísla 0,1,2.')
         except(ValueError):
             print('Chyba, vkládejte čísla 0,1,2.')

Nevím, jak napsat program, který by nedovolil jiné v stupy než čísla 0, 1  nebo 2. Po zadání neplatného vstupu mi for cyklus pokračuje dalším prvkem (krokem). Chtěl bych poprosit o radu, jak to udělat, aby při neplatném vstupu program opakoval ten samý krok než bude splněna podmínka (zadání čísla 0, 1 nebo 2). Děkuji.

Offline

 

#2 15. 02. 2016 23:04

mountdoom
Příspěvky: 186
Reputace:   
 

Re: Python for cyklus

Ahoj,

pomoci cyklu for nejde zopakovat iteraci (resp. jde, ale opravdu, opravdu skarede), lepsi moznost je pouzit while a v pripade, ze nactes pozadovany vstup, tak zvysis iteracni promennou (v tvem pripade j) o 1, v opacnem pripade neudelas nic.

Code:

i = 0
while i < n:
    j = 0
    while j < (n + 1):
       # Nacti cislo
       # zkontroluj jestli nalezi [0, 1, 2] - hranate zavorky, ne kulate!
       # pokud ano, uloz jej do matice na pozici [i][j] a zvys j o 1, jinak nedelej nic
    i += 1

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson