While döngüsü kullanımı

merhaba arkadaşlarım abilerim.
programlamada yeniyim. eğer çok saçma birşey soruyorsam affedin.

aşağıdaki kodda while çalıştırmak istiyorum. yani yaş 0 girildiğinde programı break yapsın, yaş 0 dan büyük olduğunda programı her seferinde baştan başlatsın istiyorum ama kendim beceremedim.

eğer yardımcı olursanız çok mutlu olurum.

x = input(“yasinizi giriniz:”)
print(“yaşınız”, x)

a = int(input(“a:”))
b = int(input(“b:”))
c = int(input(“c:”))
print(“toplam:”, a+b+c)
print(“çarpım:”, abc)

Öncelikle hoşgeldin @bozayisi

while True:
    x = input(“yasinizi giriniz:”)
    print(“yaşınız”, x)
# aldığımız değeri sayıya çeviriyoruz
    x_int = int(x)

# eğer sayı 0 dan büyükse aşağıdakileri yap
    if x_int > 0:
        a = int(input(“a:”))
        b = int(input(“b:”))
        c = int(input(“c:”))
        print(“toplam:”, a+b+c)
        print(“çarpım:”, abc)
# Değilse break et
    else:
        print('yaşınız 0 veya daha küçük olamaz!')
        break
    

Aramıza hoş geldiniz :partying_face:

Bu işleri kimse annesinin karnında öğrenmedi :smiley: Saçma olsun ya da olmasın istediğiniz her soruyu sorun. Yeter ki öğrenmek için siz de çabalayın.


Amacınızı bu döngü aracılığıyla gerçekleştirebilirsiniz:

while True:
   x = int(input("Yaş giriniz:" ))
   if x > 0:
      pass #yaş sıfırdan büyük olduğu zaman yapacağınız işlemleri bu indente yazabilirsiniz. 
   else:
      print("yaş 0'dan büyük olmalıdır.")
      break
3 Beğeni

Çarpım için düzeltmeyi de ben ekleyeyim

print(“çarpım:”, a*b*c)
1 Beğeni

unnick, kersa oyun ve sonsuz hocam çok tesekkür ederim. iki çözümü de her noktasını anlayana kadar defalarca uygulayacağm. sonsuz hocam çarpımı heralde foruma kopyalarken sildi. ama çok çok teşekkür ederim. bu şekilde de silinebilip hata olabilceğini görmüş oldum. çok sağulun :slight_smile:

hocam “pass” anahtarının yerine print (a) dedim sorunuz çalışyor. yaştan onra işlem bloğuna geçiyor. çok çok çok teşekkürler

bir de ben sürekli

while x > 0

ve continue ile deniyordum. çözüm while true ’ daymış :slight_smile:

İkisi de aynı mantık ile bir döngü başlatıyor. İkisinin de farklı şeyler olduğunu düşünmeyin :slight_smile:
if bloklarının çalışması için ne gerekiyor ? Yazdığınızın koşulun True olması gerekiyor öyle değil mi ?
while döngüsünde de aynı mantık. Yazdığınız koşul True olduğu sürece döngü açık oluyor.
Mesela:

while 5==5:
   pass
while True:
   pass

Bu iki ifade de aynı anlama geliyor :slight_smile: Çünkü 5 daima 5e eşittir ve daima True idir. İkinci ifadede de koşul yazmak yerine direkt boolean değer yazdık ve dolayısıyla bu da daima Trueya eşit olacaktır.


while döngüsünü sürekli olarak boolean değerlerle kurmak size daha cazip gelebilir belki bu açtığınız konudan sonra. Fakat öyle olmasın. Çünkü boolean bir değer kullandığınız zaman döngüyü durdurmanız için break deyimine ihtiyaç duyuyorsunuz ve bu da yazacağınız kodları bir miktar arttırabiliyor, okunaklılığı azaltabiliyor.
Fakat şöyle bir şey yaparsanız mesela hiç break deyimine ihtiyaç duymayacaksınız:

count = 0
while count <= 100:
   count += 1

count <= 100 koşulu count değişkeni 100 olana kadar True döndüreceği için döngü bir süre sonra kendi kendine kırılacaktır ve break deyimine ihtiyaç duymacaksınız :slight_smile:


Doğrudan boolean bir değerle döngü kurmanın da bir avantajı olabiliyor.
Mesela size yazdığım koddan örnek vereyim:

else bloğuna bakınız. Bu blok çalıştığı zaman döngü kırılacak fakat döngü kırılmadan önce print() fonksiyonu çalıştırılacak. Bu sayede kırılma anını biraz daha özelleştirmiş oluyoruz.


Kıscası iki yöntemden birisi duruma göre en iyi seçenek olacaktır. Daima birine bağımlı kalmayınız.

İyi forumlar :slight_smile: