Arama butonu
Bu konudaki kullanıcılar: 1 misafir
23
Cevap
710
Tıklama
0
Öne Çıkarma
while döngüsü
L
5 yıl
Yüzbaşı
Konu Sahibi

herkese merhaba while döngüsüne yeni geçtim ama enteresan bir sorun oldu video da altda verdiğim bir kod var bu kod bir den 100 kadar sayıları basıp 100 gelince döngüden çıkacak ama bende döngüden çıkmadı 1 den başladı 10 bin 20 bin diye gitmeye başladı videodaki kodun yanısını yazmama rağmen bende böyle oldu sorun ne sizce
kulladnığım editör visual studio code
x = 0

while 0 < 100:
print(x)
x = x + 1

print("bitdi")

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi layk5t -- 23 Ağustos 2020; 20:47:29 >

C
5 yıl
Çavuş

while 0 < 100: demişsin.Bu şart her zaman sağladığı için sonsuz döngüye giriyor.x değerinin 100 den küçük olup olmadığını kontrol etmelisin

while x < 100: yazmalısın yani


Bu mesaja 2 cevap geldi.
L
5 yıl
Yüzbaşı
Konu Sahibi

peki teşekkürler




Bu mesajda bahsedilenler: @chnkyn
L
5 yıl
Yüzbaşı
Konu Sahibi

merhaba size şöyle bir soru sormak istiyorum print ve x += 1 yerlarini değiştirdiğimiz zaman döngü farklı çalışıyor atığım kodda 0 başlayıp 99 kadar gidiyor ama yer değişikligi olunca 1 den başlayıp 100 kadar gidiyor bunun nedeni nedir


name = ""

while not name:
name = input("isminizi giriniz: ")
print(f"merhaba {name} ")


bu kodu tam anlamıyla anlayamadım burayı açıklarmısnız





< Bu mesaj bu kişi tarafından değiştirildi layk5t -- 23 Ağustos 2020; 22:42:36 >


Bu mesajda bahsedilenler: @chnkyn
C
5 yıl
Çavuş

0 dan basliyor.
x+=1 satiri x in degerini bir arttirir.Print ifadesini nerede cagirirsan o anki x degeri neyse onu yazdirir.once arttirip sonra yazarsan haliyle 1 den baslar



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
C
5 yıl
Çavuş

Pythonu tam hatirlamiyorum ama
While name: ile kastedilen name degiskeni null ve boş degilse demek.yani bir deger girildiyse.

Ama kodta while not name:

yani bir deger girilmediyse(bir deger girilene kadar) kullanicidan girdi alir ve degiskene atar.sonra da yazdirir ve while dongusu kirilir.



< Bu ileti mini sürüm kullanılarak atıldı >

L
5 yıl
Yüzbaşı
Konu Sahibi

tam anlayamadım ama birazdaha ayrıntılı anlatayım size
x = 0 

while x < 100:
print(x)
x = x + 1

print("bitdi")


benim burda anladığım x küçüktür 100 den bu koşul sağlanınca ekrana sayıları basıtırp ondan sonra teker teker artırıyor
sonuç 0 dan başlayıp 99 bitiyor şimdide şöyle bir değişklik yapalım

x = 0 

while x < 100:
x = x + 1
print(x)

print("bitdi")


burdada sonuç 1 den başlayıp 100 den bitmesi kafa karıştıran nokta bu oldu





< Bu mesaj bu kişi tarafından değiştirildi layk5t -- 23 Ağustos 2020; 22:53:47 >


Bu mesajda bahsedilenler: @chnkyn
C
5 yıl
Çavuş

X=99 olsun

Usttekinde x’i ekrana bastin sonra 1 arttirdin.yeni deger =100 oldugundan tekrar donguye girmez en son 99 yazilmis oldu

Alttakinde ise;
X’i 1 arttirdin =100 oldu.Sonra ekrana yazdin.tekrar while dongu kosuluna gidince 100<100 false doneceginden calismaz.en son 100 yazdirmis olduk.

Print in yeri onemli burada



< Bu ileti mini sürüm kullanılarak atıldı >

L
5 yıl
Yüzbaşı
Konu Sahibi

anladığım kadarıyla döngü başlayınca x bir artıyor sonra x += 1 den dolayı x birkere dahamı artıyor zaten altdaki kod 2 den başlayıp 101 den bitiyor şimdi yazdırmak istediğin ifade yani print foksuyonu her zaman üste ve artırmak istediğin ifade herzaman döngünün en altında olmak mı zorunda for döngüsünde sıra pek önemi yok gibi ama whlie döngüsünde işler degişiyor





< Bu mesaj bu kişi tarafından değiştirildi layk5t -- 24 Ağustos 2020; 15:46:1 >

A
5 yıl
Teğmen

While x <=100: şeklinde yazarsan 1den 100 e kadar 100 dahil yazması lazım.





< Bu mesaj bu kişi tarafından değiştirildi a.g.r.e.s.i.f -- 25 Ağustos 2020; 1:2:59 >

< Bu ileti mobil sürüm kullanılarak atıldı >

A
5 yıl
Teğmen

X=0
While x < 100:
Print(x)
x=x+1
Print ("bitdi")
bu kodda x=0 ile işleme başlıyoruz x değeri 0 ve döngüye giriyoruz print(x)in değeri 0 arttırma işlemi bir alt satırda olduğu için.

X=0
While x <=100: ----> 100 den küçük ve eşit olduğu sürece
x=x+1 veya ----> x+=1
Print(x)
Print("bitdi ")

bende yeni başladım python istihza yazbel den takip ediyorum.



< Bu ileti mobil sürüm kullanılarak atıldı >

C
5 yıl
Çavuş

for döngüsünü anlaman için sana c# tan örnek vereyim.python da bu yapılamıyor sanırım.

c# ta for döngüsü :

for(baslangic ; kosul ; arttirma){
kodlar
}

c# ta for döngü yapısı byledir.
baslangıc : döngünün başlangıcı.örneğin int i=0 ile sıfırdan başlar.
kosul : her adımda kontrol edilecek koşul. örneğin i<5 ile i 5'ten küçük olduğu sürece
arttirma: döngülerin sonlanabilir olması içiin her adımda kosulu bitirecek arttırma veya azaltma işlemi yapılmalı.örneğin i++ ile her döngüde i yi 1 arttır.

bunlara istinaden.

for(int i=0; i<5; i++)
Console.writeline(i);
}

çıktı şöyle olur:
0
1
2
3
4

c# ta breakpoint ile takip edersen işlem şu şekilde olur:
1- önce i değişkeni oluşturur ve 0 değerini atar(bu işlem daha sonra hiç yapılmaz)
2- i nin değerinin 5 ten küçük olup olmadığına bakılır.Bu işlem her döngüde kontrol edilir.
3- (önemli nokta burası) Console.writeline(i) yani for içine yazdığın kodlar çalıştırılır.
4- arttırma işlemi yapılır ve 2.işleme gidilip döngü tekrar edilir.

3. ve 4. işlemlerin sırası önemli olduğu için yukarıda vurguladım.önce kodlar yazılır sonra arttırma yapılır.python for döngüsü de aynen böyle çalışıyor olmalı.

c# ta baslangıc,kosul ve arttırma işlemlerini döngü başlangıcında tanımlamak zorunda değilsin.kodların içinde de yapabilirsin.
örn:

for(int i=0; i<5;)
{
i++; //i yi 1 arttırdık
console.writeline(i);
}

bu örnekte arttırma işlemi normalde 4.adım iken burada 3.adıma almış olduk.yani 3. ve 4. adımların yerini değiştirdik.

Bunun çıktısı
1
2
3
4
5

yukardakinden farklı olur.python normal c# for döngüsü mantığıyla çalıştığından printin nerede yazıldığının önemi yok.çünkü arttırma işlemini en son yapıyor.


örneğe ilişkin ise 2'den başlayıp 101 de bitiyor demişsin.
Çıktı : 1,2,3,.....99,100
şeklinde olacak.yani 1den başlayıp 100de bitiyor



L
5 yıl
Yüzbaşı
Konu Sahibi

Tekrardan merhaba uygulama soruları var hoca sağolsun eksik bilgi vermek adet edinmiş benim uygulama soruma yardımcı olcak bir uygulama bu ama analmakda az zorlandım ama benim anlama şeklim while döngüsünün mantığına aykırı buraya bırakıyorum
liste = [1,2,3,4,5]

a = 0

while (a < len(liste)):
print("Indeks:",a,"Eleman:",liste[a])
a +=1

şimdı burda print satırında a elemenını listeden a değişkenini indexlemiş bu kısım biraz kafa karıştırdı bu anlarsam uygulama sorusunuda yapabilicem



C
5 yıl
Çavuş

dizilerin elemanlarına index numaralarıyla erişilir.
liste=[1,2,3,4,5]

liste[0] = 1 # liste dizisinde 0 index numaralı eleman.dizilerde index numarası sıfırdan başlar.
liste[1] = 2
liste[2] = 3
liste[3] = 4
liste[4] = 5

dizilerin elemanlarına index numaralarıyla erişildiğini anladıysan eğer;

a=0 için => liste[0] yazmak ile liste[a] yazmanın aynı şey olduğunu bilirsin.Aynı şekilde ;
a=1 için => liste[1] = liste[a]
a=2 için => liste[2] = liste[a]
a=3 için => liste[3] = liste[a]
a=4 için => liste[4] = liste[a]

a değişkeni de while içinde her seferinde 1 arttırıldığı için, listenin tüm elemanlarını yazdırmış oluyorsun.



L
5 yıl
Yüzbaşı
Konu Sahibi

5 tanesinde birini yapmışdım ama yarım yamalak anladım hatda yaptığım sorunun bir tanesini buraya atıyorum

a = 0

while (a < len(sayılar)):
print(sayılar[a])
a += 1

o soruyu mantığını tam anlamdığım için böyle bişey yaptım while döngüsüyle yaptım sonuç bu çıkdı güzelcede çalışıyor diğer sorularda yapmaya çalışacam



C
5 yıl
Çavuş

Kodlamada amaç en kısa kod ve en kısa algoritma ile sonuca gitmek olmalı her zaman.

Sen sayıları ekrana yazdırmak için 3 satır yazıyorsun ama tek satırda da hallolur.

print( [i for i in sayilar] )



L
5 yıl
Yüzbaşı
Konu Sahibi

tekrardan merhaba yapabildiğim sorular bukadar yapamadıkalrımda oldu cevabını vermek yerne ip ucu isteyecem sizden
sayılar = [1,3,5,7,9,12,19,21]

# 1: sayılar listesini while döngüsü ile ekrana yazdırın
"""
a = 0

while (a < len(sayılar)):
print(sayılar[a])
a += 1
"""

# 2: başlangıç ve bitiş değerleirni kulanıcıdan alıp tüm
# tek sayıları ekrana yazdırın
"""


"""

# 3: 1 ve 100 arasındaki yazıları azalan şekilde ekrana yazdırın
"""
b = 100
while 0 <= b:
print(b)
b -= 1
"""
# 4: kullanıcıdan alacağınız 5 sayıyı ekrana sıralı bir şekilde
# yazdırın

"""
gırılen_sayılar = [int(input("sayı1 giriniz: ")),int(input("sayı2 giriniz: ")),int(input("sayı3 giriniz: ")),int(input("sayı4 giriniz: ")),int(input("sayı5 giriniz: "))]
gırılen_sayılar.sort()


for i in gırılen_sayılar:
print(i)
"""

# 5: kullanıcıdan alacağınız sınırsız ürün bilgisini ürünler listesinie saklayınız
# ** ürün sayısını kullanıcıya sorun
# ** dictionary listesi yapısı (name, prise) şeklinde olsun
# ** ürünler ekleme işlemi bitdiğinde ürünleri while ile ekrana listleyin




tabiki cevaplarada bir göz atmanızıda isteyecem birde 4. soruyu while yapmaya çalışdım ama mümkün değil buyüzden for döngüsü en iyisi olucakdır


Bu mesaja 1 cevap geldi.
T
5 yıl
Yarbay

orada uzun uzun 4 satır yazıp yapamadım dediğiniz 4. soru, Raku ile çok kısa 2 satırda yapılabiliyor:

< Resime gitmek için tıklayın >



< Bu ileti mini sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @layk5t
C
5 yıl
Çavuş

1.soru => çözümün doğru
2.soru => kullanıcıdan iki sayı al.min ve max diye.for veya while ile min'den başlayıp max'a kadar sayıları oku ve okurken tek sayı olup olmadığını kontrol edebilirsin.
3.soru => doğru
4.soru => sana direk cevabı while ile yapayım.Döngü ile halledilmeli.1000 sayı istenirse hepsi için ayrı ayrı input mu alacaksın yazdığın gibi.


dizi = []

while len(dizi) < 5:
oku = input("Sayı giriniz : ") # sayı oku
oku = int(oku) # int türüne çevir
dizi.append(oku) # diziye ekle

dizi.sort() # diziyi sırala - while içinde değil

print([i for i in dizi])


5.soru => direk yazıyorum

urunler = [] # listemiz.Elemanlar dictionary olacak

# eleman özellikleri için sadece adı ve fiyatını alalım
# örnek
# eleman = {
# "name": "urun1",
# "price": 55
# }

adet = int(input("Kaç adet ürün eklemek istersiniz : "))
baslangic = 0
while baslangic < adet:
name = input("Ürün adı giriniz : ")
price = input("Fiyatını giriniz : ")
urunler.append({
"name": name,
"price": price
})
baslangic += 1


# yazdırma kısmı
for i in urunler:
print(
"Ürün adı * {0} *, Ürünün fiyatı * {1} *".format(i["name"], i["price"]))



Bu mesaja 2 cevap geldi.
C
5 yıl
Çavuş

Python aslında tek satırda halledebiliyor..

print(sorted([input("{0}. sayıyı girin: ".format(i+1)) for i in range(5)]))


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @vonderplanitz