Portál AbcLinuxu, 24. prosince 2025 11:15
print("1/x=y")
Tady začíná ten testovací blok
try:Zde se definuje proměnná x
x = int(input("Zadajte x: "))
Na tomhle řádku je int což znamená celá čísla. Pak následuje input pro vstup a taky výzva pro uživatele, aby zadal vstup
y = 1/xTady se praví, do proměnné
ypřiřaď výsledek z 1/x Tomuhle řádku moc nerozumím, jde o formátování výstupu?
print("y=1/{}={}".format(x, y))
except ValueError:
Tady je definována chyba, v tomto případě asi chyba hodnoty.
Řešení dotazu:
Na tomhle řádku je int což znamená celá čísla. Pak následuje input pro vstup a taky výzva pro uživatele, aby zadal vstupJen aby nedošlo k omylu, nejdříve je input, teprve po jeho provedení následuje int.
print("y=1/{}={}".format(x, y))
je popsáno tady. Lze to zapsat i takto:
print("y=1/%d=%d" % (x, y))
Obojí funguje trochu jako printf v C. V Pythonu tohle formátování umí spoustu užitečných věcí, tak doporučuju dokumentaci pročíst :) V tomhle příkladu se x dosadí namísto prvních {} a y namísto druhých závorek.
No a výjimka ValueError se vyhazuje právě v případech, kdy něco nejde převést na něco jiného. Tedy když uživatel zadá "aerjdnv" namísto čísla.
To znovu-zeptání se na věk by se pak udělalo v ošetření té výjimky:
try:
x = int(input("Zadajte x: "))
except ValueError:
try:
x = int(input("Zadajte x (musí být číslo): "))
except ValueError:
exit(1)
což nevypadá moc hezky, ale zeptalo by se to znovu. Program tohoto stylu se tu řešil nedávno, tak se když tak mrkněte, v diskuzi v poradně jsou řešení.
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
while True:
try:
print ("Zadej celé číslo")
vstup = input (" ")
vstup = int(vstup)
print ("Zadal jsi", vstup)
break
except ValueError:
print("Nezadal jsi celé číslo, zkus to znovu")
Nicméně si nejsem jistý, jestli jsem ten příklad pochopil celý, tak se ho zase pokusím projít řádek po řádku a říct co který řádek dělá. Pokud se někde dopustím chyby, tak mne prosím, upozorněte.
#!/usr/bin/env python3 # -*- coding: utf-8 -*-První řádek pravý, že bude použit python 3 a text bude v UTF-8 kódování
while True:Prováděj to co je uvnitř dokud není není pravda, že (dokud není splněna podmínka)
try:Tady začíná testování
print ("Zadej celé číslo")
Výzva k zadání celého čísla
vstup = input (" ")
vstup = int(vstup)
Tyhle dva řádky definují proměnnou vstup. První praví, že do této proměnné je vložen uživatelský vstup, druhý, že to má být celé číslo.
Vím, že se to dá zapsat i do jednoho řádku, jako je to v tomto příkladu, ale tento postup se mi zatím zdá čitelnější.
Tento řádek vypisuje vstup
print ("Zadal jsi", vstup)
Na internetu je často k vidění i tento zápis
print ("Zadal jsi"), vstup
Ale ten v Pythonu3 nefunguje, respektive, končí chybou.
breakTento příkaz přeruší cyklus
except ValueError:
print("Nezadal jsi celé číslo, zkus to znovu")
Tady je ošetření chyby
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.