Neden sonsuz döngü değil?

resim_2021-04-30_001026

Merhaba arkadaşlar ,

Sizden ufak bir vaktinizi alacağım muhtemelen çok basit bir detay fakat ya göremedim ya da anlayamadım .

Yukarıdaki kodda da gördüğünüz üzere names.txt adında bir dosyamız var , ve biz while döngüsü yardımıyla bu dosyamızda listelenen isimleri gösteriyoruz . Gelelim kafamı kurcalayan kısma ;

Normal bir durumda While döngüsünün şartına String bir ifade girdiğimizde döngümüz sonsuz bir döngüye giriyor fakat,
(While line) olarak yazdığımızda neden bu durumdan farklı hareket ediyor döngümüz . Evet line değişkenimiz dosyamızdan satır okuyor ve bu okuma işlemini döngü içerisinde tekrar gerçekleştiyor ama bu line değişkenimizin String bir ifade olmasını değiştirmiyor .
Umarım kafama takılan’ı size anlatabilmişmdir anlamadığınız bir yer olursa sorarsanız da sevinirim . Herkese Teşekkürler :blush:

Merhaba,

https://docs.python.org/3.8/tutorial/inputoutput.html#reading-and-writing-files

burada denildiğine göre:

f.readline() reads a single line from the file; a newline character (\n) is left at the end of the string, and is only omitted on the last line of the file if the file doesn’t end in a newline. This makes the return value unambiguous; if f.readline() returns an empty string, the end of the file has been reached, while a blank line is represented by '\n', a string containing only a single newline.

yani diyor ki, eğer dosyada okunacak satır kalmamışsa "" stringini döner. Dikkatini çekerim " " değil, "" döner.

Py’de "" dışındaki bütün stringler true döner, "" python’da false tur.
İstiyorsan python shell’ inde aşağıdakileri çalıştır.

>>bool("")
>>bool(" ")
>>bool("a")

whiie döngüsünün sonsuz olması için daima içinin true olması gerekir. ama line değişkeni dosya okumamız bitince "" olacaktır ve döngümüz bitecektir.

İyi geceler.

1 Beğeni

Şimdi oldu işte , teşekkür ederim


Rica ederim.