Eray Temel
Femtopat
- Katılım
- 20 Temmuz 2022
- Mesajlar
- 11
Daha fazla
- Cinsiyet
- Erkek
Ekte bıraktığım döngüde 1'den 20ye kadar olan çift sayıları yazdırmaya çalışıyorum fakat sonsuza kadar bütün çift sayıları yazıyor. Break komutunu 21'e göre ayarladığımda sorun çözülüyor fakat neden olduğunu anlayamadım. Yardımcı olur musunuz?
while True ne demek biliyor musunuz?Çözüm bu. 20 yerine farklı şey olacaksa değiştirilebilir.1'den 20ye kadar olan çift sayıları yazdırmaya çalışıyorum.
n = 20
for i in range(1, n + 1):
if i % 2 == 0:
print(i)
while True sonsuza kadar çalışacak döngü demektir.while True yazıp break kullanmanız saçmalık. O döngülerin amacı o değil. Yine de öyle olması gerektiğini varsayalım. if i == 20 kısmını i += 1'den önce koymalısınız. Diğer türlü zaten ilk if ile tek olan sayıları eliyorsunuz. print ile çift bir sayı yazdırılıyor. Sonra i += 1 deyip çift olan sayıyı tek yapıyorsunuz. Sonrasında tek olduğu kesin olan bir sayının 20'ye eşit olup olmadığına bakıyorsunuz.Düzeltemezsiniz bu bir sorun değil sayılar 0'dan başlıyor makinelerde o yüzden kod 21 yaptığınızda 20 algılıyor.
Break koyduğu için bozulmasını bekliyor. 20'ye geldiğinde if çalışmadan i 21 olduğu için durmuyor arkadaş bunun farkında değil.while Truene demek biliyor musunuz?
Çözüm bu. 20 yerine farklı şey olacaksa değiştirilebilir.
Kod:n = 20 for i in range(1, n + 1): if i % 2 == 0: print(i)
Sonsuza kadar yazıyor çünküwhile Truesonsuza kadar çalışacak döngü demektir.
En alttaki if komutunu while döngüsünün içindeki If'in içine koyup bir dener misinidüzeldi
izlediğim videolarda aynı örneğin tek sayılı hali vardı bende kendimce çifte çevirmeye çalıştım saçma ise giriş seviyesinde çalışabileceğim daha mantıklı örneklerin olduğu bir yer önerir misinizwhile Truene demek biliyor musunuz?
Çözüm bu. 20 yerine farklı şey olacaksa değiştirilebilir.
Kod:n = 20 for i in range(1, n + 1): if i % 2 == 0: print(i)
Sonsuza kadar yazıyor çünküwhile Truesonsuza kadar çalışacak döngü demektir.
while Trueyazıpbreakkullanmanız saçmalık. O döngülerin amacı o değil. Yine de öyle olması gerektiğini varsayalım.if i == 20kısmınıi += 1'den önce koymalısınız. Diğer türlü zaten ilkifile tek olan sayıları eliyorsunuz.i += 1deyip çift olan sayıyı tek yapıyorsunuz. Sonrasında tek olduğu kesin olan bir sayının 20'ye eşit olup olmadığına bakıyorsunuz.
Bu kod çalışır ancak mantığında hata var. O yüzden olmuyor.izlediğim videolarda aynı örneğin tek sayılı hali vardı bende kendimce çifte çevirmeye çalıştım saçma ise giriş seviyesinde çalışabileceğim daha mantıklı örneklerin olduğu bir yer önerir misiniz
while True: sen döngüden çıkana kadar çalışacak demektir. Bu noktada döngüden çıkmak için break kullanman yada başka bir şekilde işlemi sonlandırman gerekiyor.if i % 2 != 0: i'nin 2'ye bölümünden kalan 0 değilse devreye girecek ve bu if'in içerisinde yer alan i += 1 ve continue blokları çalışacak.continue dediğimiz şey loopun devamındaki şeylerin çalışmasını önler ve bir sonraki sefere geçiş yaptırır. Bu çalıştığında print ve diğer if çalışmayacak yani.break hiç çalışmadı. Döngüyü durduracak if bloğunu i += 1'den önceye koyarsan sorun düzelecektir.Bu kod çalışır ancak mantığında hata var. O yüzden olmuyor.
Aşama aşama açıklamaya çalışayım;
while True:sen döngüden çıkana kadar çalışacak demektir. Bu noktada döngüden çıkmak içinbreakkullanman ya da başka bir şekilde işlemi sonlandırman gerekiyor.
if i % 2 != 0:I'nin 2'ye bölümünden kalan 0 değilse devreye girecek ve bu If'in içerisinde yer alan i += 1 ve continue blokları çalışacak.
Şimdicontinuedediğimiz şey loopun devamındaki şeylerin çalışmasını önler ve bir sonraki sefere geçiş yaptırır. Bu çalıştığında print ve diğer if çalışmayacak yani.
Eğer tekse print ve diğer if çalışmadan devam edecek. Buraya özellikle dikkatini vermen gerek.
Sayı 19 olduğunda i % 2!= 0 true döndürüyor çünkü 19'un 2'ye bölümünden kalan 1. bu durumda i 20 oluyor, print ve diğer çalışmadan bir sonraki tura geçiyoruz. Sayı 20 iken false dönüyor ve program sonraki satıra devam ediyor. Önce ekrana 20 geliyor ardından 20 + 1 ile 21 oluyor sonra da if bloğu çalışıyor. Olanı fark ettin değil mi? İf bloğu çalışmadan önce sayı 21 oldu. Dolayısıyla 20'deyken o if bloğu hiç çalışmadı. Bundan kaynaklı olarak dabreakhiç çalışmadı. Döngüyü durduracak if bloğunu i += 1'den önceye koyarsan sorun düzelecektir.
while True sen döngüden çıkana kadar çalışacak demek değildir. Sonsuza kadar çalışacak demektir. Her döngüde break kullanılabilir, bu while True'ya özgü bir şey değil. Gidip firmalarda böyle kod yazarsanız sizi atarlar. Sonsuza kadar çalışan kod kimseye gerekmez çünkü.i = 1
while i <= 20:
if i % 2 == 0:
print(i)
i += 1