Kezdőoldal » Számítástechnika » Programozás » Miért nem jeleníti meg az...

Miért nem jeleníti meg az outputot?

Figyelt kérdés

Win 7 op, Python 3.7.2 , idle, sriptabl.


a = 12

if a >= 14:

print('igen')

if a < 14:

print('nem')


Output:

Nem ír ki semmit.


a = 12

if a >= 14:

print('igen')


if a < 14:

print('nem')


Output:

nem

(mármint azt írja ki, hogy "nem", ergo itt működik)


num = 7

if num > 3:

print("3")

if num < 5:

print("5")

if num ==7:

print("7")


Output:

3


Látható, hogy mindenhol működik, csak az elsőnél nem. Az elsőnél ugyan az a módszer, mint ennél az utolsónál, mégsem ad ki semmit, pedig lefut a program.


2019. márc. 30. 15:18
 1/7 Ozmium42 ***** válasza:

1. Használd az elif-et meg az else-t is.

2. Indentálás (behúzás rendben van? Nincs a második if behúzva az első alá?

2019. márc. 30. 15:21
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

A harmadik se működik, mert a 7-et is ki kellene írnia. Már ha jól értem, mit akarsz.

Egyébként indentálás nélkül egy python kód nem értelmezhető, töltsdmár fel valahová...

2019. márc. 30. 19:25
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

"1. Használd az elif-et meg az else-t is."


Ezek nélkül is (elméletileg) mennie kéne.


"2. Indentálás (behúzás rendben van? Nincs a második if behúzva az első alá?"


De. De ha emiatt nem megy az első feladatban, akkor az utolsóban miért működik? Mindjárt töltök fel képeket.


#2 Nem, a 7-et nem kéne kiírnia, mert lefut a program az elsőnél.

2019. márc. 30. 19:34
 4/7 A kérdező kommentje:
#2 Ha külön lennének az if parancsok, akkor mindegyiket külön megvizsgálná. De mivel egyetlen egy if parancson belül vannak, ezért (elméletileg) lefut, és az elsőnél be is fejezi. Ezért lesz az eredmény 3, és a 7-et ezért nem adja ki az outputban. Elméletileg :) De még nekem se teljesen érthető ez a rész.
2019. márc. 30. 19:36
 5/7 Ozmium42 ***** válasza:

Azok az ifek, amiket az első if után behúzol, csak akkor kerülnek végrehajtásra, ha a külső if feltétele igaz. Ha nem, akkor átugorja az egész blokkot. Az első esetben a külső if egy hamis feltétel. A harmadik esetben pedig igaz. Ezért ez utóbbi esetben eljut a program a num < 5 ellenőrzésig. Ha a harmadik if == 7 kétszeresen van behúzva, akkor emiatt nem fog lefutni, mert ehhez a feltételhez tartozik.


Röviden: az egy szinten lévő if-ek függetlenek egymástól, a behúzott if-ek pedig alá vannak rendelve a külső if-eknek.

2019. márc. 30. 19:48
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:

Ez lefut, az lesz a outputban, hogy "igen".

[link]


Ez nem fut le, nem ad ki semmit az outputban:

[link]


Ez lefut, azt írja ki, hogy "nem".

[link]


Ez lefut, azt írja ki, hogy 3:

[link]


A fő kérdés az, hogy miért működik az egyik (még ha az egyik if be is van húzva a másik alá), amíg a másik nem működik? Mi a különbség, amik látszólag működnie kéne mindkettőnek?


Illetve a másik kérdés, ami a #2 hozzászólása révén vetődött fel bennem, hogy miért csak az első igaz állításig vizsgál a program, amennyiben az if parancsok egymás alá vannak identálva (lehet nem jól fogalmaztam, de értitek mire gondolok). Míg ha külön vannak, akkor az összes if parancsot vizsgálja. Ami logikus is, hiszen külön parancs, nyilván meg is kell vizsgálnia őket. De úgymond "egymás alá identálásnál" csak az első megfelelő állításig vizsgál.

2019. márc. 30. 19:48
 7/7 A kérdező kommentje:
#5 Köszi, így már értem! Ha gondolod megnézheted a linkelt képeket, de igazából a válaszod minden kérdésemre választ ad :) Mégegyszer köszi.
2019. márc. 30. 19:54

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!