0
user Programlama Akademi
09-01-2025 8:26 PM
Python

Python 3'te While Döngüleri Nasıl Oluşturulur

Giriş

Bilgisayar programları, görevleri otomatikleştirme ve tekrarlama konusunda harikadır, böylece bizim yapmamıza gerek kalmaz. Benzer görevleri tekrarlamanın bir yolu da döngüler (loops) kullanmaktır. Bu eğitimde Python'un while döngüsünü (while loop) ele alacağız.

Bir while döngüsü, verilen bir Boolean koşuluna bağlı olarak kodun tekrarlı olarak çalıştırılmasını sağlar. While bloğundaki kod, while ifadesi True olarak değerlendirildiği sürece çalışır.

While döngüsünü, tekrarlayan bir koşullu ifade (conditional statement) olarak düşünebilirsiniz. If ifadesinden sonra program kodları çalıştırmaya devam eder, ancak while döngüsünde, koşul False olana kadar program while ifadesinin başına geri döner.

Belirli sayıda çalışan for döngülerinin (for loops) aksine, while döngüleri koşula bağlıdır; bu yüzden kodun kaç kez tekrar edeceğini bilmeniz gerekmez.


While Döngüsü (While Loop)

Python'da while döngüleri aşağıdaki gibi yapılandırılır:

while [bir koşul doğru olduğunda]:
    [bir şey yap]

Yapılmakta olan şey, değerlendirilen koşul artık doğru olmadığında çalışmayı bırakacaktır.

Küçük bir program oluşturarak while döngüsünün nasıl çalıştığını görelim. Bu programda, kullanıcıdan bir şifre girmesini isteyeceğiz. Bu döngü sırasında iki olası sonuç vardır:

  1. Şifre doğruysa, while döngüsü sona erer.
  2. Şifre doğru değilse, while döngüsü çalışmaya devam eder.

Bilgi: Bu örnek kodları takip etmek için, Python interaktif kabuğunu çalıştırarak python3 komutunu yerel sisteminizde çalıştırabilirsiniz. Sonrasında, örnekleri >>> komut isteminin ardından kopyalayabilir, yapıştırabilir veya düzenleyebilirsiniz.

Tercih ettiğimiz bir metin düzenleyicide password.py adında bir dosya oluşturacağız ve password değişkenini boş bir string olarak başlatacağız: password.py

password = ' '

Boş string, while döngüsü içinde kullanıcıdan girdi almak için kullanılacaktır.

Şimdi while ifadesini ve koşulunu oluşturacağız: password.py

password = ' '

while password != 'password':

Burada, while ifadesi password değişkeni ile takip ediliyor. Amacımız password değişkeninin string password değerine eşit olup olmadığını kontrol etmektir (kullanıcı girdiğine bağlı olarak), ancak istediğiniz herhangi bir stringi de seçebilirsiniz.

Bu, eğer kullanıcı password stringini girerse döngünün duracağı ve programın döngü dışındaki herhangi bir kodu çalıştırmaya devam edeceği anlamına gelir. Ancak, kullanıcının girdiği string password stringine eşit değilse, döngü devam edecektir.

Şimdi while döngüsü içinde bir şeyler yapan kod bloğunu ekleyeceğiz: password.py

password = ''

while password != 'password':
    print('Şifre nedir?')
    password = input()

while döngüsü içinde, program bir şifre istemi için print ifadesi çalıştırır. Ardından, password değişkeni input() fonksiyonu ile kullanıcının girdiği değere atanır.

Program, password değişkeninin password stringine atanıp atanmadığını kontrol eder ve eğer öyleyse, while döngüsü sona erer. Bu durumda programa, bu durum gerçekleştiğinde çalıştırılacak başka bir satır kod ekleyelim: password.py

password = ''

while password != 'password':
    print('Şifre nedir?')
    password = input()

print('Evet, şifre ' + password + '. Girebilirsiniz.')

Son print() ifadesi, while döngüsünün dışındadır, bu yüzden kullanıcı şifreyi doğru girdiğinde, döngü dışında yer alan son print ifadesini görecektir.

Ancak kullanıcı şifreyi hiç girmezse, son print() ifadesine ulaşamaz ve sonsuz bir döngüde (infinite loop) kalır.

Bir sonsuz döngü, bir programın aynı döngü içinde sürekli çalıştığı ve asla çıkmadığı durumdur. Komut satırında sonsuz döngülerden çıkmak için CTRL + C tuşlarına basabilirsiniz.

Programı kaydedin ve çalıştırın:

$ python password.py

Bir şifre girmeniz istenecek ve çeşitli olası girişlerle test edebilirsiniz. İşte programdan bir örnek çıktı:

Çıktı

Şifre nedir?
merhaba
Şifre nedir?
deniz
Şifre nedir?
PASSWORD
Şifre nedir?
password
Evet, şifre password. Girebilirsiniz.

Unutmayın ki, stringler büyük/küçük harfe duyarlıdır (case-sensitive) ancak kontrol etmeden önce stringi tüm küçük harf (örneğin) yapmak için bir string fonksiyonu kullanabilirsiniz.


While Döngüsü ile Örnek Program

While döngüsünün genel mantığını anladığımıza göre, while döngüsünü etkin bir şekilde kullanan bir komut satırı tahmin oyunu oluşturalım. Bu programın nasıl çalıştığını en iyi anlamak için koşullu ifadeler (conditional statements) ve veri tiplerini dönüştürme hakkında bilgi sahibi olmalısınız.

İlk olarak, tercih ettiğimiz bir metin düzenleyicide guess.py adında bir dosya oluşturacağız. Kullanıcı için rastgele sayılar oluşturmak amacıyla, bir import ifadesi ile random modülünü içe aktaracağız. Bu pakete aşina değilseniz, rastgele sayı üretme hakkında daha fazla bilgiye Python belgelerinden ulaşabilirsiniz. guess.py

import random

Şimdi, number değişkenine rastgele bir tamsayı atayacağız ve 1 ile 25 arasında (dahil) kalmasını sağlayacağız; bu, oyunun çok zor olmamasını ummamızı sağlar. guess.py

import random

number = random.randint(1, 25)

Bu noktada, while döngümüze başlayabiliriz; önce bir değişkeni başlatıp ardından döngüyü oluşturacağız. guess.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('1 ile 25 arasında bir sayı tahmin edin:')

    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess == number:
        break

number_of_guesses değişkenini 0 olarak başlattık, böylece döngümüzün her yinelemesinde (iteration) bu değeri artırarak sonsuz döngüye (infinite loop) girmememizi sağlıyoruz. Ardından, while ifadesini ekleyerek number_of_guesses değişkeninin toplamda 5 ile sınırlı olmasını sağladık. Beşinci tahminden sonra kullanıcı komut satırına dönecek, ancak şimdilik kullanıcı tam sayı dışında bir şey girerse bir hata alacak.

Döngü içerisinde, kullanıcıdan bir sayı girmesini istemek için bir print() ifadesi ekledik, bunu input() fonksiyonuyla aldık ve guess değişkenine atadık. Ardından guess değişkenini bir stringden tam sayıya (integer) dönüştürdük.

Döngü bitmeden önce number_of_guesses değişkenini 1 artırmak istiyoruz ki döngüyü 5 kez tekrarlayabilelim.

Son olarak, kullanıcının yaptığı tahminin bilgisayarın ürettiği sayıya eşit olup olmadığını görmek için bir koşullu if ifadesi (conditional if statement) yazdık; eğer öyleyse, döngüden çıkmak için break ifadesini kullanıyoruz.

Program tamamen işlevseldir ve aşağıdaki komutla çalıştırabiliriz:

$ python guess.py

Program çalışsa da, şu anda kullanıcı doğru tahminde bulunsa bile bunu öğrenemiyor ve doğru tahmin edip etmediğini bilmeden toplam 5 kez tahmin yapabiliyor. Programın mevcut çıktısı şu şekilde görünüyor:

Çıktı:

1 ile 25 arasında bir sayı tahmin edin:
11
1 ile 25 arasında bir sayı tahmin edin:
19
1 ile 25 arasında bir sayı tahmin edin:
22
1 ile 25 arasında bir sayı tahmin edin:
3
1 ile 25 arasında bir sayı tahmin edin:
8

Döngünün dışında bazı koşullu ifadeler (conditional statements) ekleyerek kullanıcının sayıyı doğru tahmin edip etmediğine dair bir geri bildirim almasını sağlayalım. Bu ifadeler, mevcut dosyamızın en sonuna eklenecektir.

guess.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('1 ile 25 arasında bir sayı tahmin edin:')  # Guess a number between 1 and 25:
    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess == number:
              break

if guess == number:
    print('Sayiyi ' + str(number_of_guesses) + ' tahminde buldunuz!')
else:
    print('Sayiyi tahmin edemediniz. Sayı ' + str(number) + ' idi.')

Bu noktada, program kullanıcıya sayıyı doğru tahmin edip etmediğini söyleyecektir, ancak bu, kullanıcı tahmin haklarını doldurana kadar bekleyebilir.

Kullanıcıya biraz yardımcı olmak için, while döngüsü içinde birkaç koşullu ifade daha ekleyelim. Bu ifadeler, kullanıcının tahmin ettiği sayının çok düşük mü yoksa çok yüksek mi olduğunu söyleyerek doğru sayıyı tahmin etme olasılığını artıracaktır. Bu ifadeleri if guess == number satırının öncesine ekleyeceğiz.

guess.py

import random

number = random.randint(1, 25)

number_of_guesses = 0

while number_of_guesses < 5:
    print('1 ile 25 arasında bir sayı tahmin edin:')
    guess = input()
    guess = int(guess)

    number_of_guesses = number_of_guesses + 1

    if guess < number:
              print('Tahmininiz çok düşük')

    if guess > number:
              print('Tahmininiz çok yüksek')

    if guess == number:
              break

if guess == number:
    print('Sayiyi ' + str(number_of_guesses) + ' tahminde buldunuz!')
else:
    print('Sayiyi tahmin edemediniz. Sayı ' + str(number) + ' idi.')

Programı yeniden python guess.py komutuyla çalıştırdığımızda, kullanıcı tahminlerinde daha fazla yönlendirme alacaktır. Örneğin, rastgele üretilen sayı 12 ise ve kullanıcı 18 tahmin ederse, tahmininin çok yüksek olduğu söylenecek ve bir sonraki tahminini buna göre ayarlayabilecektir.

Kodun daha da iyileştirilmesi mümkün, örneğin kullanıcı bir tam sayı girmediğinde hata işlemesi (error handling) yapılabilir. Ancak bu örnekte, kısa bir komut satırı programında while döngüsünün nasıl çalıştığını görüyoruz.


Sonuç

Bu eğitimde, Python'da while döngülerinin (while loops) nasıl çalıştığını ve nasıl oluşturulacağını inceledik. While döngüleri, while ifadesinde ayarlanan koşul True olduğu sürece bir kod bloğu içinde döngüye devam eder.


Lisa Tagliaferri tarafından yazılan How To Construct While Loops in Python 3a Programming makalesinin düzenlenmiş çevirisi


Daha Fazla Oku:


Bu Makaleyi Paylaş

Yorumlar

yorum Yap