Zgłaszanie wyjątków

0

Hej, Chciałabym zgłosić wyjątek jeżeli użytkownik 5 razy wprowadzi niepoprawną wartość. Z tym, że coś jest nie tak. Czy mogłabym liczyć na jakąś podpowiedź?


def czycalkowita():
    for _ in range(5):
        dosprawdzenia=input('prosze podaj liczbe, a my sprawdzimy czy jest calkowita ')
        try:
            ai=int(dosprawdzenia)
            return ai
        except:
            print('to nie jest liczba calkowita')
    raise RuntimeError('Niepoprawna liczba')
o=czycalkowita()
print(o)```

przy 5 nieudanych próbach wpisywania liczb całkowitych -> dostaje błąd:
```Exception has occurred: RuntimeError
Niepoprawna liczba```
0

dziękuję za cenną uwagę, ale ona akurat mi nie pomogła

2
def czycalkowita():
    for _ in range(5):
        dosprawdzenia=input('prosze podaj liczbe, a my sprawdzimy czy jest calkowita ')
        try:
            ai=int(dosprawdzenia)
            return ai
        except:
            print('to nie jest liczba calkowita')
    raise RuntimeError('Niepoprawna liczba')

o=czycalkowita()
print(o)

Przecież ten kod dokładnie to robi...
Jak 5 razy wpiszesz źle, to linia raise RuntimeError('Niepoprawna liczba') wywoła błąd.

Z czym masz problem, skoro program robi dokładnie to, co napisałaś że chcesz uzyskać?

Bo jeśli chcesz obsłużyć ten wyjątek (nie zgłosić) to potrzebujesz ostatnie dwie linie zmienić o tak:

try:
    o = czycalkowita()
    print(o)
except:
    print("Coś nie wyszło, a program idzie dalej.")

I jest to dokładnie taka sama konstrukcja jakiej użyłaś wyżej w funkcji czycalkowita.

Pomyśl gdzie powinien być except RuntimeError a gdzie except ValueError.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0