Python Öğreniyorum 4 – for döngüsü (Soru çözümlü)
Python Öğreniyorum 4 – for döngüsü (Soru çözümlü). Bu videomuzda for komutunun nasıl kullanılabileceğini öğreneceğiz ve örnek soru çözümleri yapacağız.
Merhabalar. Python öğreniyorum serimizin 4.videosuna hoş geldiniz. 3.videomuzda koşullu ifadeleri nasıl oluşturabileceğimizi öğrendik. Python’da komutları tekrarlamayı sağlayan for ve while komutları bulunmaktadır. Bu videomuzda for komutunun nasıl kullanılabileceğini öğreneceğiz ve örnek soru çözümleri yapacağız. Haydi başlayalım.
Komut veya komutların istenilen sayıda tekrarlanması için for döngüsü kullanılır. Birçok kullanım şekli vardır. range kullanımıyla başlayalım.
1 2 |
for i in range(n): print(i) |
Bu döngü n defa tekrar edecek ve n defa print komutu çalışacaktır. Her döngü için döngü sayısını kontrol eden bir değişken kullanılır. Buradaki değişken i değişkenidir. i değişkenin değeri 0’dan başlar ve her defasında 1 artar. Son değer olarak n-1 değerini alır, çünkü 0 başlamıştır.
0’dan 5’e kadar sayıları yazan programı yazalım:
1 2 |
for i in range(6): print(i) |
1’den 5’e kadar olan sayıları yazmak için ise:
1 2 |
for i in range(1, 6): print(i) |
Şeklide yazabiliriz. Burada 1 başlangıç ve 6 bitiş değeridir, ama 6 dahil değildir.
1’den 10’a kadar tek sayıları yazdıralım:
1 2 |
for i in range(1, 10, 2): print(i) |
Buradaki 2 sayısı değişim miktarıdır. Yani her tekrarlamada i değişkenin değeri 2 artacaktır. Dolayısıyla 1’den başlar ve 3, 5, 7, 9 şeklinde artar.
Şimdi de 10’dan 1’a kadar çift sayıları yazdıralım:
1 2 |
for i in range(10, 1, -2): print(i) |
Burada değişim miktarı -2’dir. Yani her tekrarda 2 azalacaktır. Bu tür kullanımlarda başlangıç değerinin bitiş değerinden büyük olması gerekir.
Örnek olarak 1’den girilen n sayısına kadar olan sayıların toplamını bulan programı yazalım.
1 2 3 4 5 |
n = int(input()) toplam = 0 for i in range(1, n+1): toplam = toplam + i print(toplam) |
range yerine direk olarak liste yazılabilir. Listedeki elemanlar her dönmede tek tek sırayla alınır.
Örneğin şu örnekte her bir renk sırayla alınır ve yazdırılır:
1 2 |
for i in 'kırmızı', 'turuncu', 'sarı', 'yeşil', 'mavi', 'lacivert', 'mor': print(i) |
Farklı tipteki değerler olabilir. Sayı ekleyelim:
1 2 |
for i in 'kırmızı', 'turuncu', 'sarı', 'yeşil', 0, 'mavi', 'lacivert', 'mor': print(i) |
break: Diyelim ki sadece 0 sayısına kadar olan renkleri yazdırmak istiyoruz.
1 2 3 4 |
for i in 'kırmızı', 'turuncu', 'sarı', 'yeşil', 0, 'mavi', 'lacivert', 'mor': if i == 0: break print(i) |
continue: Veya 0 sayısını atlamak istiyoruz:
1 2 3 4 |
for i in 'kırmızı', 'turuncu', 'sarı', 'yeşil', 0, 'mavi', 'lacivert', 'mor': if i == 0: continue print(i) |
Eğer aralarda 0 ile 9 arasında çok sayılar varsa ve bu sayılar atlamak istiyorsak:
1 2 3 4 |
for i in 'kırmızı', 'turuncu', 1, 'sarı', 'yeşil', 0, 'mavi', 5, 'lacivert', 'mor': if i in range(0, 9): continue print(i) |
Şimdi de bir yazı string yazarak deneyelim ve nasıl çalıştığını kontrol edelim:
1 2 |
for i in 'bilgisayarhane': print(i) |
Harfler tek tek alınır.
Harfleri aynı satırda aralarına birer boşluk koyarak yazalım.
1 2 |
for i in 'bilgisayarhane': print(i, end=' ') |
Ayrıca print komutuyla sep parametresi de kullanılabilir.
1 |
print(1, 3, 5, sep='*', end='=') |
For döngüsüyle birlikte else de kullanılabilir.
1 2 3 4 5 6 |
for i in 'kırmızı', 'turuncu', 'sarı', 'yeşil', 'mavi', 'lacivert', 'mor': if i == 0: break print(i) else: print('Döngü bitti') |
Listede 0 olmadığı için bütün renkler yazdırıldıktan sonra, ‘Döngü bitti’ diye de yazılır.
Listeye 0 ekleyelim:
1 2 3 4 5 6 |
for i in 'kırmızı', 'turuncu', 'sarı', 'yeşil', 0, 'mavi', 'lacivert', 'mor': if i == 0: break print(i) else: print('Döngü bitti') |
Bu durumda kırmızıdan yeşile kadar renkler yazdırılır. Daha sonra 0 bulunduğu için, break for döngüsünü bitirir, else kısmı da çalışmaz.
İç içe döngüler de oluşturulabilir ama bunun için ayrı bir video hazırlayacağız.
Soru Çözümleri
- Sayıların toplamı
N sayısı giriliyor ve daha sonra n sayı giriliyor. Girilen n sayının toplamını bulan programı yazınız. Sayıların ortalamasını bulan programı yazınız.
Giriş:
5
1
4
2
6
4
Çıkış:
17
1 2 3 4 5 6 |
n = int(input()) toplam = 0 for i in range(n): x = int(input()) toplam = toplam + x print(toplam) |
toplam = toplam + int(input()) Program satırı bu şekilde kısaltılabilir.
Sayıların ortalamasını bulan program haline çevirelim:
1 2 3 4 5 6 |
n = int(input()) toplam = 0 for i in range(n): x = int(input()) toplam = toplam + x print(toplam/n) |
- Faktöriyel
Girilen n sayısının faktöriyelini hesaplayan programı yazınız.
n! = 1*2*3*…*n
5! = 1*2*3*4*5 = 120
1 2 3 4 5 |
n = int(input()) f = 1 for i in range(1, n+1): f = f * i print(f) |
- Asal sayı
Girilen sayının asal olup olmadığını bulan programı yazınız. Asal ise Evet, değilse Hayır yazacak.
Sadece kendisine ve 1 sayısına tam olarak bölünen sayılara asal sayı denir.
1 2 3 4 5 6 7 8 9 10 |
n = int(input()) say = 0 for i in range(2, n): if n % i == 0: say = say + 1 break if say == 0: print('Evet') else: print('Hayır') |
- Maksimum ve minimum
Girilen n sayıdan maksimum ve minimum sayıları bulan programı yazınız.
1 2 3 4 5 6 7 8 9 10 |
n = int(input()) mx = int(input()) mn = mx for i in range(n-1): x = int(input()) if x > mx: mx = x if x < mn: mn = x print(mx, mn) |
- Sayının bölenleri
Girilen sayının bölenlerini bulan programı yazınız. 1 sayısı ve sayının kendisi dahil edilecek. Sayılar bir satırda yazılacak.
1 2 3 4 |
n = int(input()) for i in range(1, n+1): if n % i == 0: print(i, end=' ') |