... který není ošetřen a celé to zbuchne na výjimku.
Jasně, dělám elementární příklad na použití výjimek a přijde nějaký chytrák, který argumentuje tím, že v tom příkladu není ošetřený KeyboardInterrupt. Samozřejmě že není, protože je to globální věc, která do toho příkladu nepatří, akorát by mátla čtenáře. Můžeš si samozřejmě honit ego na tom, jaký je autor debil, že KeyboardInterrupt neošetřil.
... vyhodí výjimku a ve výjimce většinou není okolní kontext chyby, takže uživatel dostane nasírací hlášku "Error convert string to number". Když tam budeš mít vstupy dva, pro funkci z=1/(x*y), máš problém.
Bavíme se o konkrétním kusu kódu:
try:
x = int(input("Zadajte x: "))
y = 1/x
print("y=1/{}={}".format(x, y))
except ValueError:
print("Prosím, zadávajte celé číslo.")
Ten kód funguje správně a uživatel dostane správnou hlášku. Nějaké hypotetické varianty coby kdyby neberu.
Špatně je nulu převzít od uživatele.
Špatně protože se to Kolemjdoucímu nelíbí, nebo špatně protože ten kód nefunguje?
Pokud je to dělení celočíselné, tak zřejmě ne. Pokud se tam nějak propašuje floating point, výjimka občas nastane.
Vysvětli mi prosím, jak se z výrazu
x = int(input("Zadajte x: "))
může do x dostat floating point?
V tom je ten problém, napřed se to naučí blbě a pak se to musí těžce přeučovat.
Nic se blbě neučí, použití výjimky na ošetření vstupu funkce int v pythonu 3 je naprosto správně. V jiných jazycích může být jiné řešení lepší, ale ne v pythonu.