bilgisayarbilimleri,action script,flash,flash design,c,c++,python,programlama dilleri,web programlama,action script 2.0,action script 3.0,linux,donanım,action Python sözdizimi. Iken, ve döngüler için. Yukarıda belirtildiği gibi, "Python" programlama dilinde, bir tekrar grup ifadeleri düzenlemek için çeşitli yollar vardır. Bu kurtarma gelir için döngü, onun tasarımı sadece sonşartının biraz daha karmaşıktır, çünkü onun muadili süre biraz farklıdır. basitçe, ancak, döngü SifirdanIleri-Seviyeye-Python-Programlama / Döngüler / Kodlama Egzersizleri / kullanıcı_girişi_while_döngüsü.py / Jump to Code definitions Code navigation index up-to-date Bu durumda arama algoritmamızdaki while döngüsü 2 kere dönmüş olacaktır. b şıkkına gelince 47 sayısının eklenmesi sırasında önce 50'nin soluna sonra 40'ın sağına ve sonra 45'in sağına gidilerek bulunan NULL değere ekleme işlemi yapılır ve ağaç aşağıdaki hali alır: CProgramlama Örnekleri (30 Örnek) için C Dili Girilen Bir Harfin Ünlü veya Ünsüz Olduğunu Bulan Örnek – Tasarım Kodlama; JavaScript filter() Kullanımı için JavaScript Dizide Tekrar Eden Sayıları Bulma – Tasarım Kodlama; Python while Örnekleri için Python while Döngüsü Kullanımı – Tasarım Kodlama Fast Money. mustafa58 Kıdemli Üye Üyelik Tarihi 03-02-2016 Yorum Sayısı 195 Konu Sayısı 9 Rep Puanı 2 17-06-2017, Saat 1225 Son Düzenleme 17-06-2017, Saat 1229, Düzenleyen mustafa58. Bazen, Python'da iyi eski do-while döngüsünü kullanmak istediğimiz durumlarla karşılaşırız. Bir do-while döngüsünün önemi, post-test loop bir döngüye sahip olmasıdır; bu, sadece döngü bloğunu bir kez çalıştırdıktan sonra durumu kontrol eder demektir. Python bunu açıkça göstermese de, mutlaka onu taklit edebiliriz. Bir do-while döngüsü için genel yapıPHP Kod do {loop block} while condition; loop block , loop block içinde yürütmek istediğiniz deyim / program parçasından oluşur. C'den bir örnekPHP Kod int i = 1;do{printf"%d\n", i; i = i + 1;} whilei 3 break asosyetikbiri Yeni Üye Üyelik Tarihi 03-06-2017 Yorum Sayısı 3 Konu Sayısı 0 Rep Puanı 0 Şimdiye kadar öğrendiklerimiz sayesinde Python’la ufak tefek programlar yazabilecek düzeye geldik. Mesela öğrendiğimiz bilgiler yardımıyla bir önceki bölümde çok basit bir hesap makinesi yazabilmiştik. Yalnız o hesap makinesinde farkettiyseniz çok önemli bir eksiklik vardı. Hesap makinemizle hesap yaptıktan sonra programımız kapanıyor, yeni hesap yapabilmek için programı yeniden başlatmamız gerekiyordu. Hesap makinesi programındaki sorun, örneğin, aşağıdaki program için de geçerlidir tuttuğum_sayı = 23 bilbakalım = intinput"Aklımdan bir sayı tuttum. Bil bakalım kaç tuttum? " if bilbakalım == tuttuğum_sayı print"Tebrikler! Bildiniz..." else print"Ne yazık ki tuttuğum sayı bu değildi..." Burada tuttuğum_sayı adlı bir değişken belirledik. Bu değişkenin değeri 23. Kullanıcıdan tuttuğumuz sayıyı tahmin etmesini istiyoruz. Eğer kullanıcının verdiği cevap tuttuğum_sayı değişkeninin değeriyle aynıysa yani 23 ise, ekrana Tebrikler!…’ yazısı dökülecektir. Aksi halde Ne yazık ki…’ cümlesi ekrana dökülecektir. Bu program iyi, hoş, ama çok önemli bir eksiği var. Bu programı yalnızca bir kez kullanabiliyoruz. Yani kullanıcı yalnızca bir kez tahminde bulunabiliyor. Eğer kullanıcı bir kez daha tahminde bulunmak isterse programı yeniden çalıştırması gerekecek. Bunun hiç iyi bir yöntem olmadığı ortada. Halbuki yazdığımız bir program, ilk çalışmanın ardından kapanmasa, biz bu programı tekrar tekrar çalıştırabilsek, programımız sürekli olarak başa dönse ve program ancak biz istediğimizde kapansa ne iyi olurdu değil mi? Yani mesela yukarıdaki örnekte kullanıcı bir sayı tahmin ettikten sonra, eğer bu sayı bizim tuttuğumuz sayıyla aynı değilse, kullanıcıya tekrar tahmin etme fırsatı verebilsek çok hoş olurdu… Yukarıda açıklamaya çalıştığımız süreç, yani bir sürecin tekrar tekrar devam etmesi Python’da döngü’ loop olarak adlandırılır. İşte bu bölümde, programlarımızın sürekli olarak çalışmasını nasıl sağlayabileceğimizi, yani programlarımızı bir döngü içine nasıl sokabileceğimizi öğreneceğiz. Python’da programlarımızı tekrar tekrar çalıştırabilmek için döngü adı verilen bazı ifadelerden yararlanacağız. Python’da iki tane döngü bulunur while ve for Dilerseniz işe while döngüsü ile başlayalım. while Döngüsü¶ İngilizce bir kelime olan while, Türkçede … iken, … olduğu sürece’ gibi anlamlara gelir. Python’da while bir döngüdür. Bir önceki bölümde söylediğimiz gibi, döngüler sayesinde programlarımızın sürekli olarak çalışmasını sağlayabiliriz. Bu bölümde Python’da while döngüsünün ne olduğunu ve ne işe yaradığını anlamaya çalışacağız. Öncelikle while döngüsünün temellerini kavrayarak işe başlayalım. Basit bir while döngüsü kabaca şuna benzer Burada a adlı bir değişken oluşturduk. Bu değişkenin değeri 1. Bir sonraki satırda ise while a == 1 gibi bir ifade yazdık. En başta da söylediğimiz gibi while kelimesi, … iken, olduğu sürece’ gibi anlamlar taşıyor. Python programlama dilindeki anlamı da buna oldukça yakındır. Burada while a == 1 ifadesi programımıza şöyle bir anlam katıyor a değişkeninin değeri 1 olduğu sürece… Gördüğünüz gibi cümlemiz henüz eksik. Yani belli ki bunun bir de devamı olacak. Ayrıca while ifadesinin sonundaki işaretinden anladığımız gibi, bundan sonra gelecek satır girintili yazılacak. Devam edelim a = 1 while a == 1 print"bilgisayar çıldırdı!" Burada Python’a şu emri vermiş olduk a değişkeninin değeri 1 olduğu sürece, ekrana bilgisayar çıldırdı!’ yazısını dök! Bu programı çalıştırdığımızda Python verdiğimiz emre sadakatle uyacak ve a değişkeninin değeri 1 olduğu müddetçe de bilgisayarımızın ekranına bilgisayar çıldırdı!’ yazısını dökecektir. Programımızın içinde a değişkeninin değeri 1 olduğu ve bu değişkenin değerini değiştirecek herhangi bir şey bulunmadığı için Python hiç sıkılmadan ekrana bilgisayar çıldırdı!’ yazısını basmaya devam edecektir. Eğer siz durdurmazsanız bu durum sonsuza kadar devam edebilir. Bu çılgınlığa bir son vermek için klavyenizde Ctrl+C veya Ctrl+Z tuşlarına basarak programı durmaya zorlayabilirsiniz. Burada programımızı sonsuz bir döngüye sokmuş olduk infinite loop. Esasında sonsuz döngüler genellikle bir program hatasına işaret eder. Yani çoğu durumda programcının arzu ettiği şey bu değildir. O yüzden doğru yaklaşım, döngüye soktuğumuz programlarımızı durduracak bir ölçüt belirlemektir. Yani öyle bir kod yazmalıyız ki, a değişkeninin 1 olan değeri bir noktadan sonra artık 1 olmasın ve böylece o noktaya ulaşıldığında programımız dursun. Kullanıcının Ctrl+C tuşlarına basarak programı durdurmak zorunda kalması pek hoş olmuyor. Gelin isterseniz bu soyut ifadeleri biraz somutlaştıralım. Öncelikle şu satırı yazarak işe başlıyoruz Burada normal bir şekilde a değişkenine 1 değerini atadık. Şimdi devam ediyoruz while ile verdiğimiz ilk örnekte while a == 1 gibi bir ifade kullanmıştık. Bu ifade; a’nın değeri 1 olduğu müddetçe… gibi bir anlama geliyordu. while a >> sayılar = 123456789 >>> for sayı in sayılar ... printsayı ... Traceback most recent call last File "", line 1, in TypeError 'int' object is not iterable Buradaki hata mesajından da göreceğiniz gibi int tam sayı türündeki nesneler üzerinde döngü kuramıyoruz. Hata mesajında görünen not iterable üzerinde döngü kurulamaz ifadesiyle kastedilen de budur. Gelin isterseniz for döngüsü ile bir örnek daha vererek durumu iyice anlamaya çalışalım sayılar = "123456789" for sayı in sayılar printintsayı * 2 Burada sayılar adlı değişkenin her bir öğesini sayı olarak adlandırdıktan sonra, int fonksiyonu yardımıyla bu öğeleri tek tek sayıya çevirdik ve her bir öğeyi 2 ile çarptık. for döngüsünün mantığını az çok anlamış olmalısınız. Bu döngü bir değişken içindeki her bir öğeyi tek tek ele alıp, iki nokta üst üste işaretinden sonra yazdığımız kod bloğunu bu öğelere tek tek uyguluyor. for kelimesi İngilizcede için’ anlamına gelir. Döngünün yapısı içinde geçen in ifadesini de tanıyorsunuz. Biz bu ifadeyi Aitlik İşleçleri’ konusunu işlerken de görmüştük. Hatırlarsanız in işleci bir öğenin bir veri tipi içinde bulunup bulunmadığını sorguluyordu. Mesela >>> a = " >>> "h" in a True “h” öğesi “ adlı karakter dizisi içinde geçtiği için "h" in a kodu True çıktısı veriyor. Bir de şuna bakın “b” öğesi “ karakter dizisi içinde bulunmuyor. Dolayısıyla "b" in a sorgulaması False çıktısı veriyor. in kelimesi İngilizcede içinde’ anlamına geliyor. Dolayısıyla for falanca in filanca yazdığımızda aslında şöyle bir şey demiş oluyoruz filanca içinde falanca adını verdiğimiz her bir öğe için… Yani şu kod for s in "istihza" prints Şu anlama geliyor “istihza” karakter dizisi içinde s adını verdiğimiz her bir öğe içins öğesini ekrana basma işlemi gerçekleştir! Ya da şu kod sayılar = "123456789" for i in sayılar if inti > 3 printi Şu anlama geliyor sayılar değişkeni içinde i adını verdiğimiz her bir öğe için eğer sayıya dönüştürülmüş i değeri 3’ten büyüksei öğesini ekrana basma işlemi gerçekleştir! Yukarıdaki temsili kodların Türkçesi bozuk olsa da for döngüsünün çalışma mantığını anlamaya yardımcı olacağını zannediyorum. Ama yine de, eğer bu döngünün mantığını henüz kavrayamadıysanız hiç endişe etmeyin. Zira bu döngüyü oldukça sık bir biçimde kullanacağımız için, siz istemeseniz de bu döngü kafanızda yer etmiş olacak. Bu for döngüsünü biraz daha iyi anlayabilmek için son bir örnek yapalım tr_harfler = "şçöğüİı" parola = input"Parolanız " for karakter in parola if karakter in tr_harfler print"parolada Türkçe karakter kullanılamaz" Bu program, kullanıcıya bir parola soruyor. Eğer kullanıcının girdiği parola içinde Türkçe karakterlerden herhangi biri varsa kullanıcıyı Türkçe karakter kullanmaması konusunda uyarıyor. Buradaki for döngüsünü nasıl kurduğumuzu görüyorsunuz. Aslında burada şu Türkçe cümleyi Pythonca’ya çevirmiş olduk parola değişkeni içinde karakter adını verdiğimiz her bir öğe için eğer karakter değişkeni tr_harfler adlı değişken içinde geçiyorsaparolada Türkçe karakter kullanılamaz’ uyarısını göster! Burada kullandığımız for döngüsü sayesinde kullanıcının girdiği parola adlı değişken içindeki bütün karakterlere tek tek bakıp, eğer bakılan karakter tr_harfler adlı değişken içinde geçiyorsa kullanıcıyı uyarıyoruz. Aslında for döngüsüyle ilgili söyleyeceklerimiz bu kadar değil. Ama henüz bu döngüyle kullanılan önemli araçları tanımıyoruz. Gerçi zaten bu döngüyü bundan sonra sık sık kullandığımızı göreceksiniz. Gelin isterseniz yeni bir konuya geçmeden önce döngülerle ilgili ufak bir örnek verelim Örneğin kullanıcıya bir parola belirletirken, belirlenecek parolanın 8 karakterden uzun, 3 karakterden kısa olmamasını sağlayalım while True parola = input"Bir parola belirleyin " if not parola print"parola bölümü boş geçilemez!" elif lenparola > 8 or lenparola >> for i in range0, 10 ... printi ... 0 1 2 3 4 5 6 7 8 9 Gördüğünüz gibi, range0, 10 kodu sayesinde ve for döngüsünü de kullanarak, 0 ile 10 10 hariç aralığındaki sayıları ekrana yazdırdık. Yukarıdaki kodda range fonksiyonuna 0 ve 10 olmak üzere iki adet parametre verdiğimizi görüyorsunuz. Burada 0 sayısı, aralıktaki ilk sayıyı, 10 sayısı ise aralıktaki son sayıyı gösteriyor. Yani range fonksiyonunun formülü şöyledir rangeilk_sayı, son_sayı Bu arada, rangeilk_sayı, son_sayı kodunun verdiği çıktıya ilk_sayının dahil olduğuna, ama son_sayının dahil olmadığına dikkat edin. Eğer range fonksiyonunun ilk parametresi 0 olacaksa, bu parametreyi belirtmesek de olur. Yani mesela 0’dan 10’a kadar olan sayıları listeleyeceksek range fonksiyonunu şöyle yazmamız yeterli olacaktır >>> for i in range10 ... printi range fonksiyonunun ilk_sayı parametresi verilmediğinde Python ilk parametreyi 0 olarak alır. Yani range10 gibi bir kodu Python range0, 10 olarak algılar. Elbette, eğer aralıktaki ilk sayı 0’dan farklı olacaksa bu sayıyı açık açık belirtmek gerekir >>> for i in range3, 20 ... printi Burada 3’ten itibaren 20’ye kadar olan sayılar ekrana dökülecektir. Hatırlarsanız, biraz önce, kullanıcının 3 karakterden kısa, 8 karakterden uzun parola belirlemesini engelleyen bir uygulama yazmıştık. O uygulamayı range fonksiyonunu kullanarak da yazabiliriz while True parola = input"parola belirleyin " if not parola print"parola bölümü boş geçilemez!" elif lenparola in range3, 8 eğer parolanın uzunluğu 3 ile 8 karakter aralığında ise... print"Yeni parolanız", parola break else print"parola 8 karakterden uzun 3 karakterden kısa olmamalı" Bu fonksiyonu kullanarak bir döngünün kaç kez çalışacağını da belirleyebilirsiniz. Aşağıdaki kodları dikkatlice inceleyin for i in range3 parola = input"parola belirleyin " if not parola print"parola bölümü boş geçilemez!" elif lenparola in range3, 8 print"Yeni parolanız", parola break elif i == 2 print"parolayı 3 kez yanlış girdiniz.", "Lütfen 30 dakika sonra tekrar deneyin!" else print"parola 8 karakterden uzun 3 karakterden kısa olmamalı" Burada if i == 2 kodu sayesinde for döngüsü içinde belirttiğimiz i adlı değişkenin değeri 2 olduğu anda parolayı 3 kez yanlış girdiniz…’ uyarısı gösterilecektir. Daha önce de birkaç yerde ifade ettiğimiz gibi, eğer yukarıdaki kodların çalışma mantığını anlamakta zorlanıyorsanız, programın uygun yerlerine print fonksiyonu yerleştirerek arka planda Python’ın neler çevirdiğini daha net görebilirsiniz. Örneğin for i in range3 printi parola = input"parola belirleyin " if not parola print"parola bölümü boş geçilemez!" elif lenparola in range3, 8 print"Yeni parolanız", parola break elif i == 2 print"parolayı 3 kez yanlış girdiniz.", "Lütfen 30 dakika sonra tekrar deneyin!" else print"parola 8 karakterden uzun 3 karakterden kısa olmamalı" Gördüğünüz gibi, i değişkeninin başlangıçtaki değeri 0. Bu değer her döngüde 1 artıyor ve bu değişkenin değeri 2 olduğu anda if i == 2 bloğu devreye giriyor. range fonksiyonunun yetenekleri yukarıda anlattıklarımızla sınırlı değildir. Bu fonksiyonun bazı başka maharetleri de bulunur. Hatırlarsanız yukarıda bu fonksiyonun formülünü şöyle vermiştik rangeilk_sayı, son_sayı Buna göre range fonksiyonu iki parametre alıyor. Ama aslında bu fonksiyonun üçüncü bir parametresi daha vardır. Buna göre formülümüzü güncelleyelim rangeilk_sayı, son_sayı, atlama_değeri Formüldeki son parametre olan atlama_değeri, aralıktaki sayıların kaçar kaçar ilerleyeceğini gösterir. Yani >>> for i in range0, 10, 2 ... printi ... 0 2 4 6 8 Gördüğünüz gibi, son parametre olarak verdiğimiz 2 sayısı sayesinde 0’dan 10’a kadar olan sayılar ikişer ikişer atlayarak ekrana dökülüyor. Bu arada, bir şey dikkatinizi çekmiş olmalı range fonksiyonu üç farklı parametre alan bir fonksiyon. Eğer ilk parametre 0 olacaksa bu parametreyi belirtmek zorunda olmadığımızı biliyoruz. Yani Python bu kodu range0, 10 olarak algılayıp buna göre değerlendiriyor. Ancak eğer range fonksiyonunda üçüncü parametreyi de kullanacaksak, yani range0, 10, 2 gibi bir komut vereceksek, üç parametrenin tamamını da belirtmemiz gerekiyor. Eğer burada bütün parametreleri belirtmezsek Python hangi sayının hangi parametreye karşılık geldiğini anlayamaz. Yani mesela 0’dan 10’a kadar olan sayıları ikişer ikişer atlayarak ekrana dökmek için şöyle bir şey yazmaya çalıştığımızı düşünün >>> for i in range10, 2 ... printi Burada Python ne yapmaya çalıştığınızı anlayamaz. Parantez içinde ilk değer olarak 10, ikinci değer olarak ise 2 yazdığınız için, Python bu 10 sayısını başlangıç değeri; 2 sayısını ise bitiş değeri olarak algılayacaktır. Dolayısıyla da Python bu durumda sizin 10’dan 2’ye kadar olan sayıları listelemek istediğinizi zannedecek, range fonksiyonuyla bu şekilde geriye doğru sayamayacağımız için de boş bir çıktı verecektir. Bu yüzden, Python’un şaşırmaması için yukarıdaki örneği şu şekilde yazmalıyız >>> for i in range0, 10, 2 ... printi Kısacası, eğer range fonksiyonunun kaçar kaçar sayacağını da belirtmek istiyorsak, parantez içinde, gerekli bütün parametreleri belirtmeliyiz. Gördüğünüz gibi, range fonksiyonunu kullanarak belirli bir aralıktaki sayıları alabiliyoruz. Peki bu sayıları tersten alabilir miyiz? Elbette >>> for i in range10, 0, -1 ... printi ... 10 9 8 7 6 5 4 3 2 1 Burada range fonksiyonunu nasıl yazdığımıza çok dikkat edin. Sayıları tersten alacağımız için, ilk parametre 10, ikinci parametre ise 0. Üçüncü parametre olarak ise eksi değerli bir sayı veriyoruz. Eğer sayıları hem tersten, hem de mesela 3’er 3’er atlayarak yazmak isterseniz şöyle bir komut verebilirsiniz >>> for i in range10, 0, -3 ... printi ... 10 7 4 1 Bu arada, etkileşimli kabukta range10 gibi bir komut verdiğinizde range0, 10 çıktısı aldığınızı görüyorsunuz. Bu çıktı, verdiğimiz komutun 0 ile 10 arası sayıları elde etmemizi sağlayacağını belirtiyor, ama bu sayıları o anda bize göstermiyor. Daha önce verdiğimiz örneklerden de anlaşılacağı gibi, 0-10 aralığındaki sayıları görebilmek için range10 ifadesi üzerinde bir for döngüsü kurmamız gerekiyor. range10 ifadesinin taşıdığı sayıları görebilmek için for döngüsü kurmak tek seçenek değildir. Bu işlem için yıldızlı parametrelerden de yararlanabiliriz. print fonksiyonunu incelediğimiz derste yıldızlı parametrelerin nasıl kullanıldığını göstermiştik. Dilerseniz şimdi bu parametre tipini range fonksiyonuna nasıl uygulayabileceğimizi görelim >>> print*range10 0 1 2 3 4 5 6 7 8 9 print fonksiyonunun sep parametresi yardımıyla bu çıktıyı istediğiniz gibi düzenleyebileceğinizi biliyorsunuz. Mesela çıktıdaki sayıları birbirlerinden virgülle ayırmak için şöyle bir komut verebiliyoruz >>> print*range10, sep=", " 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Böylece range fonksiyonunu enine boyuna incelemiş ve bu fonksiyonun ne işe yaradığını, nasıl kullanılacağını anlamamızı sağlayan örnekler vermiş olduk. Artık başka bir konuyu geçebiliriz. pass Deyimi¶ pass kelimesi İngilizcede geçmek, pas geçmek’ gibi anlamlara gelir. Python’daki kullanımı da bu anlama oldukça yakındır. Biz bu deyimi Pyhon’da görmezden gel, hiçbir şey yapma’ anlamında kullanacağız. Dilerseniz pass deyimini tarif etmeye çalışmak yerine bu deyimi bir örnek üzerinde açıklamaya çalışalım. Hatırlarsanız yukarıda şöyle bir örnek vermiştik while True parola = input"parola belirleyin " if not parola print"parola bölümü boş geçilemez!" elif lenparola in range3, 8 eğer parolanın uzunluğu 3 ile 8 karakter aralığında ise... print"Yeni parolanız", parola break else print"parola 8 karakterden uzun 3 karakterden kısa olmamalı" Burada mesela eğer kullanıcı parolayı boş bırakırsa parola bölümü boş geçilemez!’ uyarısı gösteriyoruz. Şimdi o if bloğunu şöyle yazdığımızı düşünün while True parola = input"parola belirleyin " if not parola pass elif lenparola in range3, 8 eğer parolanın uzunluğu 3 ile 8 karakter aralığında ise... print"Yeni parolanız", parola break else print"parola 8 karakterden uzun 3 karakterden kısa olmamalı" Burada, eğer kullanıcı parolayı boş bırakırsa programımız hiçbir şey yapmadan yoluna devam edecektir. Yani burada pass deyimi yardımıyla programımıza şu emri vermiş oluyoruz Eğer kullanıcı parolayı boş geçerse görmezden gel. Hiçbir şey yapmadan yoluna devam et! Başka bir örnek daha verelim while True sayı = intinput"Bir sayı girin " if sayı == 0 break elif sayı >> while True ... parola = input"Lütfen bir parola belirleyiniz" ... if lenparola >> print"En fazla üç haneli bir sayı girebilirsiniz." satırı es geçilecek ve döngünün en başına gidilecektir. Eğer kullanıcının girdiği sayıdaki hane üçten fazlaysa ekrana En fazla üç haneli bir sayı girebilirsiniz. cümlesi yazdırılacaktır. Dolayısıyla buradan anladığımıza göre, continue deyiminin görevi kendisinden sonra gelen her şeyin es geçilip döngünün başına dönülmesini sağlamaktır. Bu bilgiye göre, yukarıdaki programda eğer kullanıcı, uzunluğu üç karakterden az bir sayı girerse continue deyiminin etkisiyle programımız döngünün en başına geri gidiyor. Ama eğer kullanıcı, uzunluğu üç karakterden fazla bir sayı girerse, ekrana En fazla üç haneli bir sayı girebilirsiniz,’ cümlesinin yazdırıldığını görüyoruz. else Deyimi¶ Biz else deyimini koşullu durumlarda da görmüştük, ancak else deyimi döngüler ile de kullanılabilmektedir. Tabii döngüler ile kullanıldığında farklı bir işi üstlenmektedir. else deyimi döngüler ile birlikte kullanılırken break deyimi ile birlikte bir anlam kazanır. Şöyle bir kodumuz olduğunu varsayalım for i in range5 printi else print"else çalıştı." Kodumuzu kaydedip çalıştırdığımızda bu çıktıyı alıyoruz 1 2 3 4 else çalıştı. >>> Peki şimdi else ifadesi ne işe yaradı? Aslında pek de işe yaramadı, else ifadesini yazmadan da aynı çıktıları alabilirdik. Dediğimiz gibi Python’da else ifadesi döngüler ile birlikte kullanılacaksa break ifadesi ile birlikte bir anlam kazanır. Eğer döngü break ifadesi kullanılarak sonlandırıldı ise else çalışmaz, döngü break ifadesi ile sonlandırılmadı ise else bölümü çalışır. Yukarıdaki örneğimizde zaten break deyimi bulunmadığı için else bölümü çalıştı. Şimdi çalışmayacağı bir örnek verelim a = 0 while True a += 1 printa if a==3 break else print"else çalıştı." Şimdi programımızı çalıştırdığımızda şu sonucu almaktayız Gördüğünüz gibi a değişkenimiz 3 olduğunda döngümüz break ifadesi ile kırılıyor ve bu yüzden else çalışmıyor. else ifadesini hem for hem de while döngüsü ile kullanabileceğimizi unutmayalım. Şimdi bu konu ile ilgili işe yarar bir örnek verelim. Bir karakter dizimiz var ve 'a' harfinin bu dizide bulunup bulunmadığını kontrol etmek istiyoruz. Eğer bulunuyorsa ekrana bunu belirten bir yazı yazacağız karater_dizisi = "Merhaba Dünya" for harf in karater_dizisi if harf == 'a' print"a harfi bulundu." Ancak bu programı çalıştırdığımızda şöyle bir sonuçla karşılaşıyoruz a harfi bulundu. a harfi bulundu. a harfi bulundu. >>> Gördüğünüz gibi her 'a' harfi için bir defa a harfi bulundu. yazılıyor. Eğer biz bir defa 'a' harfine rastladığımızda döngüden çıkmak istiyorsak bunu şu şekilde yazabiliriz karater_dizisi = "Merhaba Dünya" for harf in karater_dizisi if harf == 'a' print"a harfi bulundu." break Kodumuzu çalıştırıyoruz Peki şimdi 'a' harfinin bulunmadığı durumda da a harfi bulunmadı. yazmak istersek bunu nasıl yaparız? Bazı değişkenler oluşturup if ifadesi ile bunu yapmak mümkündür ancak else ifadesi ile de bu işi hemen halledebiliyoruz karater_dizisi = "Bu yAzıdA küçük A yok." for harf in karater_dizisi if harf == 'a' print"a harfi bulundu." break else print"a harfi bulunmadı." Kodumuzu çalıştırdığımızda break ifadesi hiç çalışmadığı için else ifadesinin çalıştığını görebiliriz Evet, else ifadesi de Python’da döngüler ile bu şekilde kullanılabiliyor. Peki olmasa da olur muydu? Olurdu. else ifadesinin bu kullanım şekli de Python’daki çoğu kolaylıklardan biri sadece… Konu ile alakalı daha çok örnek için buraya bakabilirsiniz. Örnek Uygulamalar¶ Python programlama dilinde döngülerin neye benzediğini öğrendik. Bu bölümde ayrıca döngülerle birlikte kullanabileceğimiz başka araçları da tanıdık. Şimdi dilerseniz bu öğrendiklerimizi pekiştirmek için birkaç ufak çalışma yapalım. Karakter Dizilerinin İçeriğini Karşılaştırma¶ Diyelim ki elinizde şöyle iki farklı metin var ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh" ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf" Siz burada, ilk_metin adlı değişken içinde bulunan, ama ikinci_metin adlı değişken içinde bulunmayan öğeleri ayıklamak istiyorsunuz. Yani bu iki metnin içeriğini karşılaştırıp, farklı öğeleri bulmayı amaçlıyorsunuz. Bu işlem için, bu bölümde öğrendiğimiz döngülerden ve daha önce öğrendiğimiz başka araçlardan yararlanabilirsiniz. Şimdi dikkatlice bakın ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh" ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf" for s in ilk_metin if not s in ikinci_metin prints Bu kodları bir dosyaya kaydedip çalıştırdığımızda şu çıktıyı alıyoruz Demek ki ilk_metin adlı değişkende olup da ikinci_metin adlı değişkende olmayan öğeler bunlarmış… Bu kodlarda anlayamayacağınız hiçbir şey yok. Ama dilerseniz biz yine de bu kodları tek tek inceleyelim. İlk olarak değişkenlerimizi tanımladık ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh" ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf" Amacımız ilk_metin’de olan, ama ikinci_metin’de olmayan öğeleri görmek. Bunun için ilk_metin’deki öğeleri tek tek ikinci_metin’deki öğelerle karşılaştırmamız gerekiyor. Tahmin edebileceğiniz gibi, bir metnin bütün öğelerine tek tek bakabilmenin en iyi yolu for döngülerini kullanmaktır. O halde döngümüzü yazalım for s in ilk_metin ilk_metin'deki, 's' adını verdiğimiz bütün öğeler için if not s in ikinci_metin eğer 's' adlı bu öğe ikinci_metin'de yoksa prints 's' adlı öğeyi ekrana bas Gördüğünüz gibi, döngüleri for, bool işleçlerini not ve aitlik işleçlerini in kullanarak, istediğimiz şeyi rahatlıkla yapabiliyoruz. Burada kullandığımız if deyimi, bir önceki satırda for döngüsü ile üzerinden geçtiğimiz öğeleri süzmemizi sağlıyor. Burada temel olarak şu üç işlemi yapıyoruz ilk_metin içindeki bütün öğelerin üzerinden geçiyoruz, Bu öğeleri belli bir ölçüte göre süzüyoruz, Ölçüte uyan öğeleri ekrana basıyoruz. Elbette yukarıda yaptığımız işlemin tersini yapmak da mümkündür. Biz yukarıdaki kodlarda ilk_metin’de olan, ama ikinci_metin’de olmayan öğeleri süzdük. Eğer istersek ikinci_metin’de olan, ama ilk_metin’de olmayan öğeleri de süzebiliriz. Mantığımız yine aynı ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh" ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf" for s in ikinci_metin ikinci_metin'deki, 's' adını verdiğimiz bütün öğeler için if not s in ilk_metin eğer 's' adlı bu öğe ilk_metin'de yoksa prints 's' adlı öğeyi ekrana bas Bu da bize şu çıktıyı veriyor u ı o r y e u ı r u e e e u Gördüğünüz gibi, yaptığımız tek şey, ilk_metin ile ikinci_metin’in yerlerini değiştirmek oldu. Kullandığımız mantık ise değişmedi. Bu arada, yukarıdaki çıktıda bizi rahatsız eden bir durum var. Çıktıda bazı harfler birbirini tekrar ediyor. Aslında temel olarak sadece şu harfler var Ama metin içinde bazı harfler birden fazla sayıda geçtiği için, doğal olarak çıktıda da bu harfler birden fazla sayıda görünüyor. Ama tabii ki, eğer biz istersek farklı olan her harften yalnızca bir tanesini çıktıda görmeyi de tercih edebiliriz. Bunun için şöyle bir kod yazabiliriz ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh" ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf" fark = "" for s in ikinci_metin if not s in ilk_metin if not s in fark fark += s printfark Burada da anlayamayacağımız hiçbir şey yok. Bu kodlardaki bütün parçaları tanıyoruz. Her zamanki gibi öncelikle değişkenlerimizi tanımladık ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh" ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf" Daha sonra fark adlı boş bir karakter dizisi tanımlıyoruz. Metinler içindeki farklı karakter dizilerini fark adlı bu karakter dizisi içinde depolayacağız. Ardından da for döngümüzü yazıyoruz for s in ikinci_metin ikinci_metin'de 's' dediğimiz bütün öğeler için if not s in ilk_metin eğer 's' ilk_metin'de yoksa if not s in fark eğer 's' fark'ta da yoksa fark += s bu öğeyi fark değişkenine ekle printfark fark değişkenini ekrana bas Uyguladığımız mantığın ne kadar basit olduğunu görüyorsunuz. Bu kodlarda basitçe şu işlemleri yapıyoruz ikinci_metin değişkeni içindeki bütün öğelerin üzerinden tek tek geç, Eğer bu değişkendeki herhangi bir öğe ilk_metin’de ve fark’ta yoksa o öğeyi fark’a ekle. Son olarak da fark’ı ekrana bas. Bu kodlarda dikkatimizi çeken ve üzerinde durmamız gereken bazı noktalar var. Burada özellikle fark değişkenine öğe ekleme işlemini nasıl yaptığımıza dikkat edin. Python programlama dilinde önceden oluşturduğumuz bir karakter dizisini başka bir karakter dizisi ile birleştirdiğimizde bu işlem ilk oluşturduğumuz karakter dizisini etkilemez. Yani >>> a = 'istihza' >>> a + '.com' ' Burada sanki a adlı özgün karakter dizisini değiştirmişiz ve değerini elde etmişiz gibi görünüyor. Ama aslında a’nın durumunda hiçbir değişiklik yok Gördüğünüz gibi, a değişkeninin değeri hâlâ istihza’. Bu durumun nedeni, birleştirme işlemlerinin bir değiştirme işlemi olmamasıdır. Yani mesela iki karakter dizisini birleştirdiğinizde birleşen karakter dizileri üzerinde herhangi bir değişiklik olmaz. Bu durumda yapabileceğimiz tek şey, karakter dizisine eklemek istediğimiz öğeyi de içeren yeni bir karakter dizisi oluşturmaktır. Yani >>> a = 'istihza' >>> a = a + '.com' >>> printa Burada sanki değeri istihza’ olan a adlı bir değişkene .com’ değerini eklemişiz gibi görünüyor, ama aslında biz burada a değişkenini yok edip, değerini içeren, a adlı başka bir değişken tanımladık. Bu durumu nasıl teyit edeceğinizi biliyorsunuz >>> a = 'istihza' >>> ida 15063200 >>> a = a + '.com' >>> ida 15067960 Burada id fonksiyonunu kullanarak karakter dizilerinin kimliklerini sorguladık. Gördüğünüz gibi, isimleri aynı da olsa, aslında ortada iki farklı a değişkeni var. Kimlik numaralarının farklı olmasından anladığımıza göre, ilk başta tanımladığımız a değişkeni ile a = a + '.com' satırıyla oluşturduğumuz a değişkeni birbirinden farklı. Bu arada, eğer istersek yukarıdaki değer atama işlemini, önceki bölümlerde öğrendiğimiz değer atama işleçleri yardımıyla kısaltabileceğimizi de biliyorsunuz İşte ilk_metin ile ikinci_metin değişkenleri arasındaki farklı harfleri yalnızca birer kez yazdırmak için kullandığımız kodlarda da yukarıdaki işlemi yaptık ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh" ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf" fark = '' for s in ikinci_metin if not s in ilk_metin if not s in fark fark += s printfark Gördüğünüz gibi, önce boş bir fark değişkeni oluşturduk. Daha sonra bu değişkene for döngüsü içinde yeni değerler atayabilmek daha doğrusu atarmış gibi yapmak için fark += s gibi bir kod kullandık. Böylece for döngüsünün her dönüşünde s adını verdiğimiz her bir öğeyi tek tek fark değişkenine yolladık. Böylece program sonunda elimizde, farklı öğeleri yalnızca birer kez içeren fark adlı bir değişken olmuş oldu. Dediğimiz gibi, ilk başta tanımladığımız boş fark değişkeni ile, program sonunda farklı değerleri içeren fark değişkeni aslında aynı değil. Yani biz ilk fark değişkenine döngünün her dönüşünde yeni bir öğe eklemek yerine, döngünün her dönüşünde yeni bir fark değişkeni oluşturmuş oluyoruz. Ama programın sonunda sanki fark değişkenine her defasında yeni bir değer atamışız gibi görünüyor ve bu da bizim işimizi görmemize yetiyor… Programın başındaki ve sonundaki fark değişkenlerinin aslında birbirinden farklı olduğunu teyit etmek için şu kodları kullanabilirsiniz ilk_metin = "asdasfddgdhfjfdgdşfkgjdfklgşjdfklgjdfkghdfjghjklsdhajlsdhjkjhkhjjh" ikinci_metin = "sdfsuıdoryeuıfsjkdfhdjklghjdfklruseldhfjlkdshfljskeeuf" fark = "" print"fark'ın ilk tanımlandığı zamanki kimlik numarası ", idfark for s in ikinci_metin if not s in ilk_metin if not s in fark fark += s print"fark'ın program sonundaki kimlik numarası ", idfark Gördüğünüz gibi, gerçekten de ortada iki farklı fark değişkeni var. Bu durumu id fonksiyonu yardımıyla doğrulayabiliyoruz. Peki bu bilginin bize ne faydası var? Şimdilik şu kadarını söyleyelim Eğer o anda muhatap olduğunuz bir veri tipinin mizacını, huyunu-suyunu bilmezseniz yazdığınız programlarda çok kötü sürprizlerle karşılaşabilirsiniz. Birkaç bölüm sonra başka veri tiplerini de öğrendikten sonra bu durumu daha ayrıntılı bir şekilde inceleyeceğiz. Bu arada, tahmin edebileceğiniz gibi yukarıdaki for döngüsünü şöyle de yazabilirdik for s in ikinci_metin if not s in ilk_metin and not s in fark fark += s Burada iki farklı if deyimini iki farklı satırda yazmak yerine, bu deyimleri and işleci ile birbirine bağladık. Bu örnek ile ilgili söyleyeceklerimiz şimdilik bu kadar. Gelin biz şimdi isterseniz bilgilerimizi pekiştirmek için başka bir örnek daha yapalım. Dosyaların İçeriğini Karşılaştırma¶ Bir önceki örnekte karakter dizilerinin içeriğini nasıl karşılaştırabileceğimizi gösteren bir örnek vermiştik. Şimdi de, gerçek hayatta karşınıza çıkması daha olası bir durum olması bakımından, dosyaların içeriğini nasıl karşılaştıracağımıza dair bir örnek verelim. Esasında karakter dizilerinin içeriğini birbirleriyle nasıl karşılaştırıyorsak, dosyaların içeriğini de benzer şekilde karşılaştırabiliriz. Mesela içeriği şu olan adlı bir dosyamız olduğunu varsayalım Ahmet Mehmet Sevgi Sinan Deniz Ege Efe Ferhat Fırat Zeynep Hazan Mahmut Celal Cemal Özhan Özkan Yine içeriği şu olan bir de adlı başka bir dosya daha olduğunu düşünelim Gürsel Mehmet Sevgi Sami Deniz Ege Efe Ferhat Fırat Tülay Derya Hazan Mahmut Tezcan Cemal Özhan Özkan Özcan Dilek Amacımız bu iki dosyanın içeriğini karşılaştırıp, farklı öğeleri ortaya sermek. Dediğimiz gibi, bir önceki örnekte izlediğimiz yolu burada da takip edebiliriz. Dikkatlice bakın d1 = open" dosyayı açıyoruz d1_satırlar = satırları okuyoruz d2 = open" d2_satırlar = for i in d2_satırlar if not i in d1_satırlar printi Gerçekten de mantığın bir önceki örnekle tamamen aynı olduğunu görüyorsunuz. Biz henüz Python’da dosyaların nasıl işleneceğini öğrenmedik, ama daha önce gördüğümüz open fonksiyonu yardımıyla en azından dosyaları açabilecek kadar biliyoruz dosya işlemlerinin nasıl yürütüleceğini… Burada farklı olarak readlines adlı bir metot görüyoruz. Biz burada bu metodun ayrıntılarına inmeyeceğiz, ama şimdilik dosya içeriğinin satırlar halinde okunmasını sağladığını bilelim yeter. Bu arada, eğer çıktıda Türkçe karakterleri düzgün görüntüleyemiyorsanız open fonksiyonunun encoding adlı bir parametresi vasıtasıyla içeriği UTF-8 olarak kodlayabilirsiniz d1 = open" encoding="utf-8" dosyayı açıyoruz d1_satırlar = satırları okuyoruz d2 = open" encoding="utf-8" d2_satırlar = for i in d2_satırlar if not i in d1_satırlar printi Bu şekilde Türkçe karakterleri düzgün bir şekilde görüntüleyebiliyor olmanız lazım. Eğer Windows’ta Türkçe karakterleri hala düzgün görüntüleyemiyorsanız encoding parametresinde utf-8’ yerine cp1254’ adlı dil kodlamasını kullanmayı deneyebilirsiniz Yukarıdaki örneklerde bir içerik karşılaştırması yapıp, farklı öğeleri ayıkladık. Aynı şekilde benzer öğeleri ayıklamak da mümkündür. Bu işlemin nasıl yapılacağını az çok tahmin ettiğinizi zannediyorum d1 = open" d1_satırlar = d2 = open" d2_satırlar = for i in d2_satırlar if i in d1_satırlar printi Burada bir öncekinden farklı olarak if not i in d2_satırlar kodu yerine, doğal olarak, if i in d2_satırlar kodunu kullandığımıza dikkat edin. Dosyalar üzerinde yaptığımız işlemleri tamamladıktan sonra close metodu ile bunları kapatmayı unutmuyoruz Karakter Dizisindeki Karakterleri Sayma¶ Yukarıdaki örneklerde içerik karşılaştırmaya ilişkin birkaç örnek verdik. Şimdi yine bilgilerimizi pekiştirmek için başka bir konuya ilişkin örnekler verelim. Mesela elimizde şöyle bir metin olduğunu varsayalım Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcı tarafından 90’lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan, isminin Python olmasına aldanarak, bu programlama dilinin, adını piton yılanından aldığını düşünür. Ancak zannedildiğinin aksine bu programlama dilinin adı piton yılanından gelmez. Guido Van Rossum bu programlama dilini, The Monty Python adlı bir İngiliz komedi grubunun, Monty Python’s Flying Circus adlı gösterisinden esinlenerek adlandırmıştır. Ancak her ne kadar gerçek böyle olsa da, Python programlama dilinin pek çok yerde bir yılan figürü ile temsil edilmesi neredeyse bir gelenek halini almıştır. Yapmamız gereken bir istatistik çalışması gereğince bu metinde her harfin kaç kez geçtiğini hesaplamanız gerekiyor. Bunun için şöyle bir program yazabiliriz metin = """Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcı tarafından 90’lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan, isminin Python olmasına aldanarak, bu programlama dilinin, adını piton yılanından aldığını düşünür. Ancak zannedildiğinin aksine bu programlama dilinin adı piton yılanından gelmez. Guido Van Rossum bu programlama dilini, The Monty Python adlı bir İngiliz komedi grubunun, Monty Python’s Flying Circus adlı gösterisinden esinlenerek adlandırmıştır. Ancak her ne kadar gerçek böyle olsa da, Python programlama dilinin pek çok yerde bir yılan figürü ile temsil edilmesi neredeyse bir gelenek halini almıştır.""" harf = input"Sorgulamak istediğiniz harf " sayı = '' for s in metin if harf == s sayı += harf printlensayı Burada öncelikle metnimizi bir değişken olarak tanımladık. Ardından da kullanıcıya hangi harfi sorgulamak istediğini sorduk. Bu kodlarda tanımladığımız sayı adlı değişken, sorgulanan harfi, metinde geçtiği sayıda içinde barındıracaktır. Yani mesela metin 5 tane a harfi varsa sayı değişkeninin değeri aaaaa olacaktır. Sonraki satırlarda for döngümüzü tanımlıyoruz for s in metin metin içinde 's' adını verdiğimiz her bir öğe için if harf == s eğer kullanıcıdan gelen harf 's' ile aynıysa sayı += harf kullanıcıdan gelen bu harfi sayı değişkenine yolla Dediğimiz gibi, sayı değişkeni, sorgulanan harfi, metinde geçtiği sayıda barındırıyor. Dolayısıyla bir harfin metinde kaç kez geçtiğini bulmak için sayı değişkeninin uzunluğunu yazdırmamız yeterli olacaktır Dilerseniz yukarıdaki programı yazmak için daha farklı bir mantık da kullanabilirsiniz. Dikkatlice bakın metin = """Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcı tarafından 90’lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan, isminin Python olmasına aldanarak, bu programlama dilinin, adını piton yılanından aldığını düşünür. Ancak zannedildiğinin aksine bu programlama dilinin adı piton yılanından gelmez. Guido Van Rossum bu programlama dilini, The Monty Python adlı bir İngiliz komedi grubunun, Monty Python’s Flying Circus adlı gösterisinden esinlenerek adlandırmıştır. Ancak her ne kadar gerçek böyle olsa da, Python programlama dilinin pek çok yerde bir yılan figürü ile temsil edilmesi neredeyse bir gelenek halini almıştır.""" harf = input"Sorgulamak istediğiniz harf " sayı = 0 for s in metin if harf == s sayı += 1 printsayı Burada sayı değişkeninin ilk değeri 0 olarak belirledik. Döngü içinde de, sorgulanan harfin metin içinde her geçişinde sayı değişkeninin değerini 1 sayı artırdık. Dolayısıyla sorgulanan harfin metinde kaç kez geçtiğini bulmak için sayı değişkeninin son değerini yazdırmamız yeterli oldu. Dosya içindeki Karakterleri Sayma¶ Dilerseniz bir önceki örnekte kullandığımız metnin program içinde bir değişken değil de, mesela bir dosyadan okunan bir metin olduğunu varsayalım şimdi hakkında = open" encoding="utf-8" harf = input"Sorgulamak istediğiniz harf " sayı = 0 for karakter_dizisi in hakkında for karakter in karakter_dizisi if harf == karakter sayı += 1 printsayı Burada yaptığımız ilk iş elbette dosyamızı açmak oldu hakkında = open" encoding="utf-8" Bu komutla, adlı dosyayı UTF-8 kodlaması ile açtık. Daha sonra kullanıcıya, sorgulamak istediği harfi soruyoruz harf = input"Sorgulamak istediğiniz harf " Ardından da sorgulanan harfin dosyada kaç kez geçtiği bilgisini tutacak olan sayı adlı bir değişken tanımlıyoruz Sıra geldi for döngümüzü tanımlamaya for karakter_dizisi in hakkında for karakter in karakter_dizisi if harf == karakter sayı += 1 Bu döngüyü anlamakta bir miktar zorlanmış olabilirsiniz. Her zaman söylediğimiz gibi, Python’da bir kod parçasını anlamanın en iyi yöntemi, gerekli yerlere print fonksiyonları yerleştirerek, programın verdiği çıktıları incelemektir for karakter_dizisi in hakkında printkarakter_dizisi for karakter in karakter_dizisi if harf == karakter sayı += 1 Gördüğünüz gibi, ilk for döngüsünün hemen sonrasına bir print fonksiyonu yerleştirerek bu döngünün verdiği çıktıları inceliyoruz. Bu arada, amacımıza hizmet etmeyen satırları da yorum içine alarak etkisizleştirdiğimize dikkat edin. Çıktıya baktığımız zaman, şöyle bir durumla karşılaşıyoruz Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcı tarafından 90’lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan, isminin Python olmasına aldanarak, bu programlama dilinin, adını piton yılanından aldığını düşünür. Ancak zannedildiğinin aksine bu programlama dilinin adı piton yılanından gelmez. Guido Van Rossum bu programlama dilini, The Monty Python adlı bir İngiliz komedi grubunun, Monty Python’s Flying Circus adlı gösterisinden esinlenerek adlandırmıştır. Ancak her ne kadar gerçek böyle olsa da, Python programlama dilinin pek çok yerde bir yılan figürü ile temsil edilmesi neredeyse bir gelenek halini almıştır. Burada her bir satır ayrı bir karakter dizisidir. Eğer her bir satırın ayrı bir karakter dizisi olduğunu daha net bir şekilde görmek istiyorsanız repr adlı özel bir fonksiyondan yararlanabilirsiniz for karakter_dizisi in hakkında printreprkarakter_dizisi for karakter in karakter_dizisi if harf == karakter sayı += 1 Bu kodlar bu kez şöyle bir çıktı verir 'Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcı\n' 'tarafından 90’lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan,\n' 'isminin Python olmasına aldanarak, bu programlama dilinin, adını piton\n' 'yılanından aldığını düşünür. Ancak zannedildiğinin aksine bu programlama dilinin\n' 'adı piton yılanından gelmez. Guido Van Rossum bu programlama dilini, The Monty\n' 'Python adlı bir İngiliz komedi grubunun, Monty Python’s Flying Circus adlı\n' 'gösterisinden esinlenerek adlandırmıştır. Ancak her ne kadar gerçek böyle olsa\n' 'da, Python programlama dilinin pek çok yerde bir yılan figürü ile temsil\n' 'edilmesi neredeyse bir gelenek halini almıştır.' Bu çıktıya çok dikkatlice bakın. repr fonksiyonu sayesinde Python’ın alttan alta neler çevirdiğini bariz bir biçimde görüyoruz. Karakter dizisinin başlangıç ve bitişini gösteren tırnak işaretleri ve \n kaçış dizilerinin görünür vaziyette olması sayesinde her bir satırın ayrı bir karakter dizisi olduğunu daha net bir şekilde görebiliyoruz. Biz yazdığımız kodlarda, kullanıcıdan bir harf girmesini istiyoruz. Kullandığımız algoritma gereğince bu harfi metindeki karakter dizileri içinde geçen her bir karakterle tek tek karşılaştırmamız gerekiyor. input metodu aracılığıyla kullanıcıdan tek bir karakter alıyoruz. Kullandığımız for döngüsü ise bize bir karakter yerine her satırda bir karakter dizisi veriyor. Dolayısıyla mesela kullanıcı a’ harfini sorgulamışsa, ilk for döngüsü bu harfin karşısına Bu programlama dili Guido Van Rossum adlı Hollandalı bir programcın’ adlı karakter dizisini çıkaracaktır. Dolayısıyla bizim bir seviye daha alta inerek, ilk for döngüsünden elde edilen değişken üzerinde başka bir for döngüsü daha kurmamız gerekiyor. Bu yüzden şöyle bir kod yazıyoruz for karakter_dizisi in hakkında for karakter in karakter_dizisi ... Böylece iç içe iki for döngüsü oluşturmuş oluyoruz. İsterseniz bu anlattığımız şeyleri daha net görmek için yine print fonksiyonundan yararlanabilirsiniz hakkında = open" encoding="utf-8" harf = input"Sorgulamak istediğiniz harf " sayı = 0 for karakter_dizisi in hakkında for karakter in karakter_dizisi printkarakter if harf == karakter sayı += 1 printsayı karakter değişkenin değerini ekrana yazdırarak Python’ın alttan alta neler çevirdiğini daha net görebiliyoruz. Kodların geri kalanında ise, kullanıcının sorguladığı harfin, for döngüsü ile üzerinden geçtiğimiz karakter_dizisi adlı değişken içindeki karakterlerle eşleşip eşleşmediğini denetliyoruz. Eğer eşleşiyorsa, her eşleşmede sayı değişkeninin değerini 1 sayı artırıyoruz. Böylece en elimizde sorgulanan harfin metin içinde kaç kez geçtiği bilgisi olmuş oluyor. Son olarak da, ilk başta açtığımız dosyayı kapatıyoruz Nihayet bir konunun daha sonuna ulaştık. Döngüler ve döngülerle ilişkili araçları da epey ayrıntılı bir şekilde incelediğimize göre gönül rahatlığıyla bir sonraki konuya geçebiliriz. Değerli Bilgi Deresi Takipçileri bugün Python dilinde bir döngü türü olan while döngüsünü işleyeceğiz. İlgili VideoDÖNGÜLER Python dilinde while döngüsü nasıl kullanılır? sorusuna cevap vermeden önce döngüleri bir kez daha açıklayalım ve öyle devam edelim, Döngüler diğer dillerde olduğu gibi Python dilinde de işlemleri istenilen sayı kadar tekrar etmemize yarar, örneğin 10 kere adımızı ekrana yazdırmak istiyorsak veya bir kelimeyi doğru tahmin ettirmek istiyorsak bu işlemleri python’da while döngüsü ile kolaylıkla yapabiliriz. PYTHON DİLİNDE WHILE DÖNGÜSÜ NASIL KULLANILIR? Gelelim python dilinde while nasıl kullanılır? sorusunun cevabına. Bunu önce örneği yazıp daha sonra o örneği açıklayarak gitmek istiyorum i=0 whilei<10 printi i += 1 İlk olarak i adında bir değişken tanımlayarak ve ona başlangıç değeri vererek başlıyoruz, ardından while yazıp parantez içerisinde şartmantık cümlesi de diyebiliriz belirttikten sonra koyuyoruz ve alt satıra geçip bir tab boşluk bırakıyoruz “burası önemli o boşluk olmazsa while döngüsü algılanmaz”, tabi devamında yapılmasını istediğimiz işlem olan ekrana yazdırmayı yaptırıyoruz ve en son başlangıç değerimiz kaç kaç artacaksa onu belirtiyoruz. Bu işlem sayesinde ekrana 0 ile 10 arasındaki sayıları birer birer arttırıp yazdırdık. While kelimesinin anlamını bilmemiz işimizi kolaylaştırır peki bu kelimenin anlamlarında neler var “-iken, sırasında, rağmen” gibi anlamlar var yani programla konuşma yöntemimi uygularsak diyoruz ki şart gerçekleşirken alttaki işlemleri yap ve ardından i yi arttırınca bakıyorki şart bozulmadı o zaman birkez daha aynı olayı tekrarlıyor taki i 10 olup şartı gerçekleştirmeyince artık döngüden çıkyor ve alttaki işlemleri yapıyor. PYTHON DİLİNDE WHILE DÖNGÜSÜ İLE TAHMİN PROGRAMI Biraz önce yaptığımız gibi önce örneği verelim ardından açıklamasını yapalım meyveAdi = "Elma"whileTrue adi = input"Meyve Adı " ifadi == meyveAdi print"Doğru Tahmin" break else printYanlış Tahmin; Bu sefer başlangıç değerimiz bir kelime ve bu kelimenin adı Elma ardından while döngüsüne girerken True ile girdik yani direk döngüyü başlattık şartımız yok, ardından kullanıcıdan bir giriş istedik daha doğrusu tahmin istedik ve onu adi diye bir değişkene attık sıra geldi kullanıcın tahminin doğru olup olmadığını sorgulamaya onun içinde önceden öğrendiğimiz if yapısını kullandık ve eğer doğru ise break komutu ile işlemi sonlandırdık ama yanlış ise bi komut eklemedik sadece uyarı verdik bu sayede doğru olunca break sayesinde işlemi sonlandırdık ve döngüden çıktık ama yanlış ise sonlandırmadık yani döngü tekrara girdi bu sayede kullanıcı doğru tahmin edene kadar döngümüz çalışmaya devam edecek. Eğitim Setimizin YouTube Oynatma Listesine gitmek için tıklayınız. Bu dersimizde Python'da while döngüsünü göreceğiz. While döngüsüne dair örnekler de dersimizin içinde yer alacaktır. Ders11 While Döngüsü ve Break Deyimi Herkese merhaba, Python programlama dilinde döngüler konusuyla devam ediyoruz. Program içinde bazen tekrarlanmasını istediğimiz program bölümleri olabilir bu durumda döngüleri kullanılırız. Ders Öncesi Bir Not Döngülerin ne anlama geldiğini algoritmalar konusunda anlatıp, örnek algoritma ve akış şemaları uygulamaları yapmıştık. Göz atmak için Algoritma Ve Akış Şeması Konu Anlatım, Sorular Ve Cevapları 22 Soru 17 Sayfa Konusunu inceleyebilirsiniz. Bu dersimizde While döngüsüyle başlıyoruz. Genellikle döngülerde bir döngü değişkeni olur ve bu değişkenin aldığı değere göre döngü devam eder veya sonlanır. Örneğin bir işlemi 10 kez yaptırmak istersek, sayac isimli bir döngü değişkeni kullandığımızda sayac=10 olduğunda döngünün bitmesini bekleriz. Şimdi while göndüsünün kullanımına ve hemen sonrasında da örnek sorular ve çözümlere geçelim. while kosul koşul doğruysa yapılacak işlemler bloğu Örnek1 0'dan Sıfır 3'e kadar sayıları yazan programın kodlarını yazınız. Aşağıdaki örnekte i değişkeninin ilk değeri 0'dır. Ve i 'nin değeri 3ten küçük olduğu sürece while döngüsü çalışacaktır. print"While döngüsü çalışma mantığı" i=0 while i<3 printi i=1+i print"While döngüsü çalışma mantığı" i=0 while i<3 printi i=i+1 """ i=0 satırında başlangıç değeri olarak i değişkenine sıfır verdik. while i<3 satırında i değişkeninin değeri 3ten küçük olduğu sürece bu döngü çalışacaktır i=i+1 ifadesi döngü her çalıştığında i'nin değerini 1 artırmak için kullanıyoruz. """ Bu programın çıktısı aşağıdaki gibi olacaktır. While döngüsü çalışma mantığı 0 1 2 NOT i=i+1 ile i+=1 aynıdır. İstediğinizi kullanabilirsiniz. Örnek2 Kullanıcıya adını ve adını ekrana kaç kez yazdırmak istediğini soralım. Buna göre istediği kadar adını ekrana yazdıralım. adını söyle, kaç kez yazacağımı söyle, gerisine karışma isim=input"Adını yazarmısın " kackez=intinput"Kaç kez yazayım adını?" i=0 while i 3 break python'da while ifadesi nasıl yazılır myvariable = 10 while myvariable > 0 printmyvariable myvariable -= 1 döngü sırasında python A while loop is basically a "if" statement that will repeat itself It will continue iterating over itself untill the condition is False python_is_cool = True first_time = True while python_is_cool if first_time print"python is cool!" else first_time = False print"Done" The while loop can be terminated with a "break" statement. In such cases, the "else" part is ignored. Hence, a while loop's "else" part runs if no break occurs and the condition is False. Example to illustrate the use of else statement with the while loop counter = 0 while counter 10 prints number till 10 printnumber number += 1 İlgili sayfalarÖrneklerle ilgili sayfalar Diğer dillerde Bu sayfa diğer dillerde empty row .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. .................................................................................................................. Bu kategoride popülerPopüler kategori örnek sayfaları empty row

python dilinde while döngüsü örnekleri