Klikasz w tą śmieszną, okrągłą ikonkę z literą u kogoś (u mnie jest to białe R na zielonym tle) i jest niebieski Message 
Jestem po wrażeniem, jest lepiej, dużo lepiej. Zostały Ci dwie/trzy rzeczy związane z try
i ewentualnie deser o którym pisałem, już opisuję dokładniej:
W blok try
powinien być wzięty ten blok kodu (najczęściej: ta linijka), która może pójść nie tak (może zgłosić wyjątek), a nie cały program. Dalej powinieneś przechwycić konkretny wyjątek, który ta linijka może zgłosić (nie znasz jeszcze wszystkich, nie winię Cię tutaj) - wziąłeś zbyt ogólny i ostatnie: przechwytywanie wyjątku nie powinno zgłaszać wyjątku (w except
powinny być już nieinwazyjne instrukcje Pythona).
Czyli chwilowo struktura Twojego programu wygląda tak:
spróbuj:
zrobić wszystko, cały program
jak się nie uda:
to się wywal
a powinno być:
spróbuj:
zrobić tę linijkę
jak się nie uda:
to trudno
W tym programie wyglądałoby to tak:
while True:
try:
tab = input().split()
except EOFError:
break
num1 = int(tab[1])
...i cała reszta...
czyli:
pętla nieskończona - super - ona nie powoduje błędu nie powinna być w try
wyjątek jest wtedy gdy plik się skończy, a my nie wiemy kiedy więc w blok try
powinna być wzięta linijka:
tab = input().split()
a co ona zgłasza? Nie IndexError
ani ValueError
a konkretnie to, że “o kurcze dane się skończyły” czyli w tym wypadku EOFError
(End Of File Error).
Ostatnie to w except
(generalnie, są wyjątki od tej reguły) nie powinno być raise
. W except
ma być to co chcemy by się wykonało w razie problemu. W Twoim dotychczasowym kodzie powinno to być pass
- czyli nie rób nic tylko już dojedź do końca. W poprawionej, tak jak napisałem, wersji będzie to break
bo w razie napotkania problemu niech przerwie tę nieskończoną niby pętlę.
Ok teraz możesz i ten post zedytować i usunąć kod.
Deser:
To nie jest obowiązkowe - nie jest błędem. Masz:
tab = input().split()
num1 = int(tab[1])
num2 = int(tab[2])
co by było gdyby na wejściu było w jednej linii nie 3 dane, a załóżmy 7? Miałbyś tab
i sześć linijek podstawień num1
, num2
i tak aż do num6
. Słabe. Poprawne, ale da się w Pythonie lepiej i to się nazywa wyrażenia listowe (list comprehension). Tutaj nie ma wielkiej potrzeby bo z trzech linijek zrobią Ci się dwie (nieduży zysk), ale w przyszłości może się przydać to w wolnej chwili spójrz na to.
tak trzymać 