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
Dobrý den,
nevím si rady, jak ošetřit neplatné vstupy ve for cyklu:
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
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.
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