Pythonban for ciklus alakítható while ciklussá?
#utolsó
Az első kérdésedre igen és igen.
Egyébként nekem is kicsit lehetetlennek tűnik, de valahogyan biztosan meg lehet csinálni, mert egyetemi programozás gyakorlaton egy ilyen feladatot kaptam. Már csak az a kérdés, hogy mégis hogyan lehetne ezt megvalósítani. :D
#még mindig utolsónak
A range felső határa egy változó, amit a felhasználótól kérek be (vagy standard bemenetről, ez esetben).
Szerintem simán meglehet.
for x in range(1, n, step):
...
helyett
x=1
while (x<range):
...
x=x+step
Csak arra kell figyelni, hogy a python "for" egy collection-ön vagy iterable objektumon, generátor objektumon, stb. megy végig, szóval néha csak akkor lehet while ciklussá alakítani, ha az elemek indexelhetők. Más esetben át kell gondolni az adatokat, amin a ciklus végigszalad.
De ha a for egy range objektum értékein megy végig (ami egész számok sorozatát generálja), akkor igen, az könnyen átalakítható. És igen, a while cilus magjában már szabadon tudod módosítani a ciklusváltozó értékét is.
Utolsó, kicsit kísérleteztem, de átalakítottam a generátort is. A bevezető szóközöket aláhúzásra cseréltem, futtatáshoz csere vissza. (Habár ez a fajta használat nem a klasszikus for ciklus, de erre is működik.)
def gen():
____for i in range(20):
________yield i
g = gen()
while True:
____try:
________print(next(g))
____except StopIteration:
________break
print('OK')
Igen, teljesen igazad van, de ezért is fogalmaztam úgy, hogy "__néha__ csak akkor lehet while ciklussá alakítani.."
Általában használhatók az iterátor interfész metódusai, de például egy halmazon (set) már macerásabb while-al végigszaladni anélkül, hogy előtte explicit módon iterátort hoznánk hozzá létre. Szóval persze minden megoldható, csak arra akartam utalni, hogy a python for ciklusa egy picit más megközelítést használ, mint mondjuk egy C for ciklus.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!