Kezdőoldal » Számítástechnika » Programozás » Hogy tudom elérni azt, hogy a...

Hogy tudom elérni azt, hogy a for ciklusokban a az utolsó elem ne legyen "out of range"?

Figyelt kérdés

Általában azt szoktam csinálni, hogy range-nek beírom a [0, n-1], ahol n egy lista elemeinek száma. Ez jól szokott működni, de azt vettem észre, hogy az utolsó elemet ebben az esetben a program nem szokta számolni. Hogy konkrét példát hozzak:


--

feladatlap: [link]

4. Feladat

széria = 0

for i in range(0, len(fordulók)-1):

if forduló[i-1] != "x" and int(forduló[i-1]) % 2 == 0 and forduló[i] != "x" and int(forduló[i]) % 2 == 0:

széria += 1

print("A leghosszabb győzelmi széria", széria, "fordulón át tartott.")

--


Itt az lenne a feladatom, hogy meddig tartott a leghosszabb széria, de ha az utolsó elem benne van a leghosszabb szériában, a program hiba üzenetet ír ki. Ha kell, az egész kódot elküldöm.



2023. júl. 4. 19:36
1 2
 11/11 anonim ***** válasza:
100%

"Az a hiba üzenet, hogy dob egy InvalidValue exceptiont? Mert néha azt nézed x-e az elem, néha meg intte akarod konvertálni. Az x-et nem tudja számmá konvertálni."


Ez jelen esetben nem probléma. Ha a python interpreter egy "if X and ..." jellegű statement-tel találkozik, akkor megvizsgálja, hogy X igaz vagy hamis-e, és ha hamis, akkor az and utáni kódot nem hajtja végre, hiszen False and (akármi más) értéke False lesz, tehát eldőlt, hogy az if alatti kódot végre kell-e hajtani vagy át kell ugrani.


A kérdező kódjában tehát az int(forduló[i-1]) % 2 == 0 művelet csak akkor kerül végrehajtásra, ha forduló[i-1] != "x" értéke True volt, azaz a string kérdéses karaktere 1 vagy 2.


De ezt:

if forduló[i-1] != "x" and int(forduló[i-1]) % 2 == 0 and forduló[i] != "x" and int(forduló[i]) % 2 == 0:

egyszerűbben is ki lehet fejezni:

if 2 == forduló[i] == forduló[i-1]

2023. júl. 8. 15:28
Hasznos számodra ez a válasz?
1 2

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

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!