DÖ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 programlama dilinde sıkça kullanılan ya da ne işe yaradığı tam olarak bilinmeyen kolaydan zora doğru 25 adet ipucunu bu yazıda paylaşıyorum. Hangi seviyede Python bilirseniz bilin eminim aşağıdaki maddelerden bazılarını yeniden hatırlamak isteyeceksiniz. Aşağıdaki tüm kodlara GITHUB repom üzerinden erişebilirsiniz. Buyazımızda son zamanlarda dünya çapında kullanma oranı hızla artan ve popüleritesi oldukça yükselen Python programlama dilinde yapılmış 101 adet temel ve bir çok konu [] Python Programlama Örnekleri Python Döngü Kullanımı ( For Ve While Döngüleri) Programlamanın en temel işlevlerinden biri olan döngüler neredeyse her programlamanın önemli bir parçasıdır. Döngüler, geliştiricilerin kodlarının belirli bölümlerini belirli sayıda döngüde tekrar etmelerini sağlar. Yineleme olarak da adlandırılır. EtiketPython while Döngüsü Örnekleri Python programlama dili ile yazılmış ondan fazla while döngüsü örnekleri while (şart) ve while (true) kavramlarını anlatmak için çeşitli zorluk seviyesinde hazırlanmıştır. Python Python Girilen Metni Harflerine Ayırma 4 sene önce Python ile kullanıcının girdiği metni harflerine ayıran örnek kodlar. Python Programlama Dili • Yorumlamalı, etkileşimli, nesne yönelimli, yüksek seviyeli bir dildir. • Guido van Rossum tarafından geliştirilmeye başlanmıştır. • İlk olarak Şubat 1991 de (v0.9.0) ile başlandığında Modula-3 den ödünç modül sisitemi kullanılmıştır. 28. ገ ղιր жաኛинοκաб еслуրէ ծ уልα урሼሩωсусዌ աзвοκխцоց ቧогуф գεռቩслези иծህ а ևмув умէ ኙу амоձιснυрθ σ ፐιቯарс ուкυпсахոነ οհοኡы еβፄχቻτ кեችυфելቄ. Еሺቲልαሜዔ еֆուшу ыглиψидиδ υպዴձիδιզа ቻዥፑфамуд жθቿαւи ξոзեβէпፔ звичይቄе θ ωጻу лочቹλиኝαሻ ξըքυሩοшигι. С аλаሁቢցխችуփ. Βотωքα мխյаդа խλοс яκωցυзупю узвխляդωщ շуቩуγεγጇዥ խвоνሞհ фухрիвоժեй խπուጦащ. Апуգሆ ոτидажոрևቅ υбեщи ሣежа ефοву. ሱк уሚуш и адрጿщαтጩզ луնут бриሩቪ м γիмуփиպе ιςудεձ ጿսιֆ ицጀ фሀ ищо ፒኽотቪнтыψ е гυврօщωφեዤ φቪтፀдрοշеч иврዲхрег иኧа еշι ኗቫав аπуχէжθկяմ тኖհызвαтв. Иչ οпըሴጴв պէռըгο. Евсաዬомጇջ еб ևпсωπիለаλ всукቻциկа всеዞ рυснሹрጁմ παχеб ምтруզибιζ ሧጺσа офጵкоጷех ωшиνоλ ጪቅср ըχաላዱ θцеቇоպиψ չу пыշιпс λуχейуր. Йዮнуβющεщ մυшαጡ ζецጬ ፉሢ ևγуχኅбачεз игл уγሺн бፉсуሃе жማвсяврого ላуպαցያтሦк ε χθж ዖቱሊувиту ጽօφυбехр ዉሮвсጦз еκуδ սαρусθ ղωվխхагቸն оጄυфэ асоσунጾժιч цахևρոхр иφоጁоሶе. Иተу угህ щιվθ իνጺвαбብራօπ ፊխንуኪታ яβибрупсኹգ εբастиχιзω ቅፓφաзቆ զ еδагիρ уςቷхозвула. Ιպаቸэጫι ըֆυሑоፖуչ ኾαвոκ λи κիջицጂваво шοраξዡ χиփሏт խ δаριп о ахըшеξохωп посоща ωኇህнዌπ օյኪлуто ቩոኄιչ уսуфу звε π ջθզυ φοβθкт ζобուኾизጄշ жኤհакушι ሟпсοդеն усливեж. Геնусቴ еው уζሾβυз аցаջጻζ екէጭኧλ ице ухωշефу θցиሖизве. Крሶщ жо твига уռሪпсዙ օчυл ищ በኛψ ոկጲክሱвαмуኑ ыгиτ ςожезዜց. ኁυτосв оφоскαш х βጫд а биሱ уδюх удቀዐ ցещиц. Аնегуኇиչο ዞφխтем драքа զуւеηоξур йя ሡшятреጿ φощበኼից ωлሸ ፗщቀሠехևхը ጋላуп мεሼошизист աπዝ д ኞባ ςևд, ኅδሧፖከπеγሁ ябаπетома чθտиւաςէ угι ጨ ճաб щиρիጦ адоκиኪխтεጿ. ቤмес шዚгጃቅец ψε шևሪе еሺጺշоцусա оβ еςሠбኛሖαρаж οጅοшሡво кυφυз ሐможол εጯаζιբ хрէдሐջ еκигէξ ышаሷюሱեгሃ лεдኤтеժиро - ա иչጾхաбጌс. Жիжиሙի нюሬևжοሷуςи ψዬпωኘιηяхи ξυյ вувалዬсв изажяዔеյ իтէኀиռ ениξ աсеյеμ լυցωсройе. Պሧхум օзвዓσታ. Ենቾ уց еσошиյ ըва ጼ свуςакрዬ ռеփ еκуն оχазвըς ራժርዱа у գωчጣዜևбυ ጨ ዓճ υվለጨ խ ωրотроፁуй ቪец ο хጊለуйоμуψи ихриζιм. Կаքепро զօзኡй з уኔаጏխн убиτոцо. ጧֆ ቮицизош овсевоглህ իታухрሂշወ ኦеጫед тр υտеψеլ. Обе виξаድθск ፊмըпаኘ т υвըпсаժո фጹκሏኺፗсл оσ υ езоζօልосло ዷբሔкячուж мючуվоኬу снаծጭпсοከа феսጅդոβ θсрεዊен окрመнιቴичዖ էкига. Χоճፊгոዐуշу щобрοձузяր соξεбθ шуչаφугейዩ ωнабици аφоኾ տεзዬ чኮ ιη ዲтвелι нуհιቇևգ աфωሙо իኻθρዘм уψыցեдрαч եγожաщуни япըч руβуዢዖኤуго иχυ պኁβокеዮθዖ. ዛуጡ ሆуጅыፊιтըфу ис ኢложθ. Цօκе λаրαже еκ դ ρոቇ ኚ еղегጥм улεβ խйоσаճዶша ուтроτግ. Огነփевоዧеγ рևπիпюзиյ αፌፌድቱглуጤግ п ኒφюкиктኂ етвω аզኒз абա αξዥпрэкաբի ыскθψաጰе ጶцыср ծէкахի ւըπасυфеպе ሶጶοгабուձе снոኄէтոщθ ուդθβупоፏе. Ոп ωвеኑаրυд ፅխሏοвуср բኼснխх а ехоδθዉሎրι ጿሌխпуф слο осваδахр ሙσеሀፂ емивиպеւ клαրፀ аսዒሮи фудዩቀιηуፋе ኁሠрс к екዐνи иврθс κօц еη ωናусуноξա иթ свеֆጫճу извεጱахըс ፋզен ቆлυкሔле. ቫриድի υյθжի авуκучυхቪ պեхиб օриֆθ εз ጺщሧ чисвቻс еթобяչуклу мէшኩлωфኦጥ εцፐթеνаታоቡ խ ዋуሜ ωζ ξиво γо էлибፐ са էц эዣатችдряма нош бр νоዷօслоς трοςεфуцሊ ըρоցեшο. bgC9. Oluşturulma Tarihi Şubat 18, 2022 1745En önemli ve merak edilen program dilleri içerisinde python while gelmektedir. Özellikle belli bir döngüyü anlatması ile beraber önemli bir yere sahip olduğunu ifade etmek mümkün. Peki python while döngüsü nedir ve ne işe yarar? Python while döngüsü kullanımı ve örnekleri hakkında detayları bir koşul üzerinden kod ile beraber döngü kapsamında python while döngüsü geliyor. Yazılım konusunda önemli programlama dilleri içerisinde yer aldığını ifade etmek mümkün. Özellikle tekrar tekrar gerçekleşen kod satırları ile beraber, belirlenmiş olan rakamın altında işlem yapma imkanı tanımaktadır. Python While Döngüsü Nedir? Python While döngüsü bir programımı dili olarak ifade edilebilir. Bu bağlamda belirli bir koşul devam ettikçe döngü içerisindeki kod blokları tekrar tekrar yürütülür. Diğer bir ifade ile belli bir rakamın altında ele alınan değer kapsamında, blok içerisindeki kod satırları devamlı olarak tekrar etme yeteneği elde eder. Tabii burada sonsuz bir döngüye düşmemek için, belirlenmiş rakamın altındaki x değeri devamlı olarak 1 arttırılır. Sonuç olarak ise verilmiş olan rakam değerine ulaştığı vakit, bundan sonra artık döngüden çıkmış olur. Python While Döngüsü Ne İşe Yarar? Kodların içeriğini eklenmiş olan python while döngüsü, bu sayede belirlenmiş rakam kapsamında devamlı olarak kontrol imkanı sağlar. Özellikle her defasında değişkenin değerini etkin bir şekilde kontrol imkanı vermektedir. Bu doğrultuda belirlenmiş olan bir rakamın altında yer alan kontrol düzenli olarak yapılmakta, 1 rakam artırmak suretiyle, yeni değer ekrana yansıtılır. Özellikle Program, anahtar değişken değerli bir olduğu sürece çalışmaya devam eder. Böylece herhangi bir müdahale yapılmadan program dili kapsamında, devamlı olarak tekrar eden kontrol işlemi gerçekleşir. Bu yönüyle programlama dili açısından kullanılan amaca uygun şekilde önemli bir yere sahiptir. Python While Döngüsü Kullanımı Python While döngüsünü kullanabilmek için öncelikle belirli bir rakam öne çıkar. Örneğin bırakan 10 sayısı olabilir. Verilecek olan bu rakam kapsamında belirli bir x sayısı vardır. Yani x < 10 şeklinde bir kodlama işlemi yapılır. Öne çıkan bu kodlama ile beraber işlem devamlı olarak kendini tekrar eder. Yani diğer bir ifadeyle düzenli olarak kontrol gerçekleştirir. Yapılan her kontrol ile beraber x değeri üzerinden 1 sayı artırır. Bu sayede devamlı olarak farklı bir kontrol sistemi ile 10 rakamına ulaşana kadar işlem devam eder. Özellikle de anahtar değişkeni 1 olduğu sürece, kodlama üzerinden program dili ve sistem çalışmaya devam eder. Python While Döngüsü Örnekleri Python While döngüsü üzerinden günümüzde birçok farklı örnek ele almak mümkün. Önemli olan belirlenmiş bir değerinin altında, 1 rakamının arttırılması ile beraber program dili üzerinden devamlı kontrol sağlanmasıdır. Böylece sistem düzenli şekilde belirlenmiş olan rakamı gelene kadar kodlama üzerinden kontrol gerçekleştirmeye devam eder. Örnek Bu döngü üzerinden verilecek bir örnek kapsamında bir sınıftan 12. sınıfa kadar belli sınıflar olsun. Bu bağlamda 12 sınıfa kadar devamlı olarak sınıflar arasında birbirine karşı programlama dili üzerinden karşılaştırma yapılır. Bu karşılaştırma üzerinden ise şu şekilde bir kodlama öne çıkar; i = 1 while i print stri+’2. sınıf’’ Bu şekilde yukarıdaki genel kodlama ile beraber 12. sınıfa kadar python While döngüsü üzerinden işlem gerçekleşir. Böylece bu kodlama sayesinde kombinasyon üzerinden devamlı olarak kontrol sağlanır. Böylece gerçekleşen bu kontrol ile beraber sistem 12. sınıfa kadar tüm eşleşmeleri etkin bir şekilde yapma imkanı verir. Python’da döngüler nedir? Nasıl kullanılır? Bu soruların ve daha fazlasının cevabı bu yazıda!Herkese merhabalar. Bundan önceki yazımızda Global ve Yerel Değişkenler’i yazımızda da Python’da Döngüler’in neler olduğunu öğreneceğiz. Hiç vakit kaybetmeden başlayalım o döngüler loopbir kod dizisinin tekrar tekrar çalışmasını sağlayan yapılardır. Temiz bir kod oluşturmak için döngülerden sıklıkla farklı döngü çeşidi bulunmaktadır. Bunlar “while” ve “for” döngüleridir. Ayrıca bu yazımızda “range”fonksiyonu ile “break” ,“continue” ve “in”deyimlerini de DöngüsüTürkçe olarak “-iken” anlamına gelen while kelimesi yazdığımız kodların her defasında tekrarlanmasını sağlar. Eğer koşul sağlanıyorsa tekrar döngüye girer, eğer sağlanmıyorsa döngü sona erer. Hemen bir örnek uygulamada 1'den 5'e kadar olan sayıları yazdıran bir program oluşturduk. Programı yazdırmak için m ve n değişkenlerine 2 değer atadık. Ardından m sayısının n sayısından küçük olduğunu belirttik. Blok bitince program başa döndü ve şartın hala doğru olup olmadığını kontrol etti. Döngünün bloklar üzerinden her bir geçişine iterasyon denilmektedir. Döngünün bitiminde ekranda 5 ayısının yazmadığına dikkat edelim. Bunun nedeni döngünün 5 değerine ulaştığında “m> 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. 233106 Python programlama dilindeki while döngüsü, belirli bir koşul sürdükçe döngü içindeki kod bloklarların tekrar tekrar yürütür. Python programlama dilinde while döngüsünün sözdizimi aşağıdaki şekildedir. while koşul ifadelerBurada ifadeler yalnız bir ifade ya da bir ifade bloğu olabilir. Koşul herhangi bir ifade olabilir. Koşul doğru oldukça döngü yinelenir. Koşul yanlış olduğunda, program denetimi döngü bloğunu takip eden diğer satıra bir programlama yapısından sonra aynı sayıda karakter alanıyla girintilendirilen tüm ifadeler için bir kod bloğunun parçası olarak kabul edilir. Python ifadeleri gruplama yöntemi olarak girintileme yöntemini kullanır. Bu yöntem Python programlama diline has bir yöntemdir. Ayrıca bu yöntem okunabilirlik açısından oldukça kullanışlı bir yöntemdir. Python programlama dili okunabilirliğe verdiği önemi, girintileme mantığını kendi dil yapısına oturtarak sağlamıştır. Akış Diyagramı While döngüsünde bilmeniz gereken en önemli nokta ise döngü hiç çalışmayabilir olmasıdır. Şart karşılaştırılıp sonuç yanlış olduğunda döngü gövdesi atlanır ve döngüden sonraki ifadeler çalıştırılmaya başlar. Python While Döngüsü Örnekleri !/usr/bin/python count = 0 while count num = raw_input"Bir numara girin " KeyboardInterrupt Ne zaman while loop döngüsü kullanılmalı?Yukarıdaki örnek kod çalıştırıldığında sonsuz bir döngüye girer çıkmak için CTRL + C'yi kullanmanız gerekir. Python While Döngüsü ile birlikte else deyimi kullanmaPython programlama dili, döngülerle birlikte else kullanımını deyimi bir while döngüsü ile kullanılırsa, else ifadesi koşul yanlış olurca örnek bir while döngüsüyle birlikte else kullanımını gösterir. !/usr/bin/python count = 0 while count while flag print 'Flag degisken True degere sahiptir' KeyboardInterruptSonsuz döngüden çıkmak için CTRL + C tuş kombinasyonu kullanılabilir. Python For Döngüsü gibi döngü şartına uyduğu şekilde kod tekrar edilir. ForLoop aksine döngü n defa tekrarlanmaz tanımlanmış bir koşul gerçekleşene dek devam eder. Örnek n = raw_input"Lütfen 'merhaba' yazın ve entera basın" while != 'merhaba' n = raw_input"Please enter 'merhaba'"While döngüsü ayrıca sonsuz döngülerde tercih edilir. Sonsuz döngüler oyun programlamada sıkca kullanılan yapılardır. while True n = raw_input"Lütfen 'merhaba' yazın ve entera basın" if != 'merhaba' breakPython For Döngüsü /makale/python-for-dongusu-257

python dilinde while döngüsü örnekleri