PYthon, segítség?
Hiba:
"python .\main.py
Bruttó bevétel (HUF): 20000
OK
Traceback (most recent call last):
File "*cenzúra*\main.py", line 30, in <module>
raise ValueTooSmall if doIt else print("OK")
TypeError: exceptions must derive from BaseException"
main.py: [link]
toolbar.py: [link]
Ha ezt megváltoztatom arra, hogy
if doIt:
raise ValueTooSmall
else:
print("ok")
akkor már jó. De egysoros megoldást miért nem szereti? Ha 0-nál kisebb értéket adok meg, tök jó, kiírja, hogy "A megadott számnak nagyobbnak kell lennie, mint 0 HUF!", de ha jó értéket adok meg, azaz nagyobbat mint 0, már a hibát dobja. Dehát miért?
Nyilvan nem hasznalhatsz statementet a ternary operator operandusakent.
raise ValueTooSmall if doIt else print("OK")
Ezt igy ertelmezi a fordito:
raise (ValueTooSmall if doIt else print("OK"))
AAAAAaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................
Értem, köszi!
Akkor semmiképp nem lehet megoldani 1sorosként, igaz? :D
Köszi a választ!
Miért nem a print részben csinálod meg, ?
try:
raise ValueTooSmall if doIt else print("ok")
except ValueTooSmall:
print("A megadott számnak nagyobbnak kell lennie, mint 0 HUF!") <<<--- itt?
exit()
Nem itt kéne?
Ha nagyon akarsz csinálhatsz ilyesmit:
exec('raise ValueTooSmall') if doIt else print("OK")
De ez elég nagy hackelésnek számít, a ternery operator arra van kitalálva, hogy visszadjon valamit, nem arra, hogy bizonyos függvények mellékhatásai segítségével kommunikáljon valami üzenetet.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!