3. Merhaba, küçük kaplumbağlar

Kendi programlarımız içinde kullanabileceğimiz Python modülleri, oldukça fazladır ve birçok önemli özellikler sunar. E-posta veya bir ev sayfasının içeriğini indirmek gibi. Bu bölümde bakacağımız modül, bize ekranda kaplumbağalar yaratmamamızı; bu kaplumbağaları kullanarak ekranda şekiller ve desenler çizmemizi sağlayacak.

Kamplumbağalar oldukça eğlendiricidir, fakat bu bölümün gerçek amacı: Biraz daha Python öğrenmek, hesaplamalı düşünmeyi geliştirmek veya “bir bilgisayar bilimcisi gibi düşünmeyi” öğrenmektir. Bu bölümde işlenen Python’un büyük bir kısmı daha sonra derinlemesine tekrar incelenecektir.

3.1. İlk kamplumbağa programımız

Bir kamplumbağa yaratan ve bununla bir dikdörtgen çizen birkaç satırlık Python programı yazalım. (İlk yarattığımız kamplumbağaya atayacağımız değişkeni ahmet olarak adlandıracağız. Daha önceki bölümdeki değişken isimlendirme kurallarını kullanarak eğer istersek farklı bir isimde seçebiliriz.)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 import turtle             # Kamplumbağalar yaratmamazı sağlar.
 wn = turtle.Screen()      # Kamplumbağalar için bir pencere aç (oyun alanı)
 yaratır.
 ahmet = turtle.Turtle()    # Bir tane kamplumbağa yarat ve bunu  ahmet'e
 ata

 ahmet.forward(50)          # ahmet'e 50 birim ilerlemesini söyle
 ahmet.left(90)             # ahmet'in 90 derece dönmesini söyle
 ahmet.forward(30)          # Dikdörtgenin ikinci kenarını tamamla.

 wn.mainloop()             # Kullanıcının pencereyi kapatmasını bekle.

Bu programı çalıştırdığınızda, aşağıdaki gibi yeni bir pencere çıkacaktır:

_images/tess01.png

Bu progamı anlayabilmemiz için birkaç şeyi açıklayalım:

İlk satır bize turtle isimli modülü Python’a yüklememizi söyler. Bu modül bize iki yeni farklı yeni tür kullanmamıza izin verir: Turtle ve Screen type. turtle.Turtle içindeki nokta bize, “Turtle türü turtle modülü içinde tanımlanmıştır” anlamını verir. ( Unutmayınız ki Python büyük harf ve küçük harf ayrımı yapar; bu yüzden, küçük harfle (t) başlayan modül ismi , büyük harfle başlayan Turtle modül isminden farklıdır. Şansımıza Turtle isimli bir modül Python’da yoktur.)

Eğer screen (ekran) denilen şeyi yaratır ve bunu açarsak (ekran yerine, pencere demeyi tercih edeceğim), bu pencereye wn değişkenini atar. Her pencerenin içinde çizim yapabileceğimiz alana kanvas (tuval) denir.

3’üncü satırda bir kamplumbağa oluştururuz. ahmet değişkeni bu kamplumbağaya işaret eder.

Bu üç satırı halllettikten sonra, kamplumbağımıza kanvas üzerinde çizim yaptırabiliriz.

5-7 satırlar arasında, ahmet nesnesini hareket ettiriyoruz ve döndürüyoruz. Biz bunu yaparken ahmet‘in yöntemlerini çalıştırıyoruz (C.n: yöntemi bir fonksiyon gibi düşünebilirsiniz.) ya da etkinleştiriyoruz. Bütün kamplumbağalar bütün bu komutlara nasıl cevap vereceğini biliyor.

Son satırında bir amacı vardır: wn değişkeni yukarıda gösterilen pencereye işaret eder. mainloop yöntemini etkinleştirdiğimizde, pencere bir kullanıcıdan bir eylem bekleyen konuma girer ( bu bir düğmeye basma, fareyi hareket ettirip, düğmeye basmak olabilir.) Kullanıcı pencereyi kapattığında program sona erecektir.

Bir nesne farklı yöntemlere — birşey yapabilen şeyler— ve niteliklere (bazen özellik diye de isimlendirilir.) Örneğin, her kamplumbağa bir renk özelliğine sahiptir. ahmet.color("red") ise bir yöntem etkinleştirmesi ile, ahmeti ve çizimleri kırmızı yapacaktır. (Dikkat ediniz ki color‘un hecelenmesi Amerikan İngilizcesi gibidir. Ç.n: İngiliz İngilizcesinde color , colour diye yazılır.)

Kamplumbağ’nın rengi. pencere içindeki yeri, hangi yöne baktığı ve diğer özellikleri; kalemin çizgi genişliği gibi parçalar kamplumbağa’nın anlık durumudur. Benzer olarak, pencere nesnesinin bir rengi, başlık çubuğunda bir ismi, büyüklüğü ve ekran üzerinde bir yeri vardır. Bunlar, pencere nesnesinin durumunun bölümleridir.

Kamplumbağa ve pencere nesnesini değiştirmeye yarayan epeyce yöntem vardır. Biz şimdilik birkaçını göstereceğiz. Diğer önceki örnekten farklı olan satırları aşağıdaki programda yorumladık ( ve bu kamplumbağa için farklı bir değişken ismi kullandık.)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 import turtle
 wn = turtle.Screen()
 wn.bgcolor("lightgreen")      # Pencerenin rengini ayarla
 wn.title("Hello, tamer!")      # Pencerenin başlığını ayarla

 tamer = turtle.Turtle()
 tamer.color("blue")            # tamer'a rengini değiştirmesini söyle
 tamer.pensize(3)               # tamer'a kalem genişliğini ayarlamasını
 söyle

 tamer.forward(50)
 tamer.left(120)
 tamer.forward(50)

 wn.mainloop()

Bu programı çalıştırdığımızda yeni bir pencere ortaya çıkar ve bu pencereyi kapatana kadar ekranda kalmaya devam eder.

_images/tess02.png

Bu programı genişletelim ...

  1. Komut satırından kullanıcıya pencerenin rengini soracak şekilde programı değiştirin. Kullanıcının cevabının bir değişken içinde saklamalı ve kullanıcının isteğine göre pencerenin rengini değiştirebilmelidir. (İpucu: İzin verilen renklerin isimlerini http://www.tcl.tk/man/tcl8.4/TkCmd/colors.htm adresinden bulabilirsiniz. Bu sayfa bazı garip isimler ile renkleri isimlendirmektedir. Sıcak pembe “HotPink” ve şeftali esintisi “peach puff”)
  2. Kullanıcının, ali’nin rengini değiştirebilmesine izin verecek benzer değişiklikleri yapın.
  3. tamer’ın kaleminin genişliği için benzer değişikleri yapın. Yardım: diyalog ekranınız kullanıcıdan aldığı cevabı karakter dizisi olacak döndürecektir, fakat tamer‘in pensize (genişlik) yöntemi kullanıcıdan int (tamsayı) bir değişken bekler. Bu yüzden, pensize‘ın değerini kullanmadan önce onu string’den int’e çevirmeniz gerekecek.

3.2. Örneklemeler – Kamplumbağa sürüleri

Bir program içinde birçok farklı tamsayı olabileceği gibi, birçok kamplumbağa’da olabilir. Bunlardan herbirine örnek (instance) denir. Her örnek’in kendine ait nitelikleri (özellikleri ) ye yöntemleri vardır. Böylece, ahmet siyah ince bir kalem ile çizebilir ve kanvas üzerinde bir konum üzerinde olabilir, bunun gibi tamer‘de kalın bir pembe ile kendi yönünde gidebilir.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 import turtle
 wn = turtle.Screen()         # Pencereyi ve özelliklerini oluştur.
 wn.bgcolor("lightgreen")
 wn.title("Ahmet ve Tamer")

 tamer = turtle.Turtle()       # tamer'i ve ona ait özellikleri oluştur.
 tamer.color("hotpink")
 tamer.pensize(5)

 ahmet = turtle.Turtle()       # ahmet'i oluştur.

 tamer.forward(80)             # tamer'e eşkenarlı üçgen çizdir.
 tamer.left(120)
 tamer.forward(80)
 tamer.left(120)
 tamer.forward(80)
 tamer.left(120)               # üçgen'i tamamla.

 tamer.right(180)              # tamer'i kendi çevresinde 180 derece
 döndür.
 tamer.forward(80)             # onu origin'den uzaklaştır.

 ahmet.forward(50)             # ahmet'e kara çizdir.
 ahmet.left(90)
 ahmet.forward(50)
 ahmet.left(90)
 ahmet.forward(50)
 ahmet.left(90)
 ahmet.forward(50)
 ahmet.left(90)

 wn.mainloop()

Aşağıdaki şekil, ahmet‘in dikdörtgeni tamamladığında ve tamer‘ın da üçgeni tamamladığındaki resmi göstermektedir.

_images/tess03.png

Burda bazı Bir bilgisayar bilimcisi gibi nasıl düşünülür gözlemleri:

  • Bir tam çemberde 360 derece vardır. Bir kamplumbağ’nın yaptığı bütün dönüşleri bir araya getirirsek, dönüşler sırasında hangi adımlar olmuşsa olsun, biz kolayca bunların 360 derecenin katları olup olmadığını anlayabiliriz. ahmet ilk anda yaratıldığında hangi yöne işareti ediyorsa, en son halinin de aynı yöne işaret ettiğini bize gösterir. Geometri’nin geleneklerine göre, oluşturulan kurbağaların yönleri doğuya 0 derece yönlenir.
  • ahmet‘in son dönüşünü yapmayabilirdik, fakat bu pek tatmin edici olmayabilirdi. Eğer bize kare veya dikdörtgen gibi kapalı şekiller çizilmesi sorulursa, başladığı ilk durumdaki yöne bakması ve bütün dönüşlerini tamamlamış olması iyi bir fikirdir. Bu, küçük programların büyük programlara çevrilmesinı ve bu programların insanlar tarafından daha kolay anlaşılmasını sağlar.
  • tamer ile aynısını yaptık: O, bir üçgen çizdi ve 360 derece tam dönüş yaptı. Daha sonra kendi çevresinde 180 derece döndürdük ve onu kenera çektik. 18’inci satır bile programcının akıl yürütmesi hakkında bir verir. Daha geniş anlamda, tamer‘in üçgen çizme eylemi (12-17 satırlar) ve başlangıç noktasından uzaklaşması ( 19 ve 20’inci satırlar ) biraraya toplanmıştır.
  • Programdaki yorumlar kullanılmasının başlıca nedeni düşünce yapımızı ve büyük fikirlerimizi kaydetmektir. Bunlar her zaman kodun içinde açık olmayabilir.
  • Sürünüz için iki kamplumbağa yeterli olmayabilir. Burdaki önemli fikir: İhtiyacınız olduğu kadar kamplumbağ yaratabilmeniz için, turtle modülü size bir fabrika verir. Her örneklemenin kendisine ait durum ve davranışları vardır.

3.3. for döngüsü

Bir kare çizmek bile, oldukça sıkıcıydı. Hareket etme ve dönme adımlarını dörtkere açıkça tekrar etmek zorunda kaldık. Eğer bir altıgen, sekizgen veya 42 kenarı olan bir poligon çizmek isteseydik, bu çok daha kötü olurdu.

Bir kodu alıp onu tekrar ettirmek (döngüye koymak) programların temel yapı taşıdır.

Python’un for döngüsü bunu bizim için çözer. Örneğin, arkadaşlarımızın herbirini partimize davet edecek bir e-posta göndermek istiyoruz. Henüz nasıl e-posta göndereceğimizi bilmiyoruz, şimdilik herbir arkadaşımız için bir mesajı ekranda yazacağız.

1
2
3
4
for f in ["Ahmet","Aysun","Burak","Ayşe","Zeki","Temel","Perihan"]:
    davet = "Merhaba " + f + ".  lütfen Cumartesi günü partime gelin."
    print(davet)
# daha fazla kod buraya eklenebilir.

Bu kodu çalıştırdığımızda, aşağıdaki çıktı gibi olur:

Merhaba Ahmet.  lütfen Cumartesi günü partime gelin.
Merhaba Aysun.  lütfen Cumartesi günü partime gelin.
Merhaba Burak.  lütfen Cumartesi günü partime gelin.
Merhaba Ayşe.  lütfen Cumartesi günü partime gelin.
Merhaba Zeki.  lütfen Cumartesi günü partime gelin.
Merhaba Temel.  lütfen Cumartesi günü partime gelin.
Merhaba Perihan.  lütfen Cumartesi günü partime gelin.
  • 1’inci satırdaki for‘un önündeki f değişkenine döngü değişkeni denir. Biz burada değişken olarak f harfini kullandık, siz isterseniz bir başka harf veya kelime de kullanabilirsiniz.
  • 2. ve 3. satırlar döngü gövdesini oluşturur. Döngü gövdesi her zaman girintili yazılır. Herbir girinti, gövde içindeki her bir satırı tam olarak belirler.
  • Herbir tekrak‘da veya döngüyü her geciş‘te ilk yapılan şey, işlenecek madde kalıp kalmadığını kontrol etmektir. Eğer işlenecek hiçbir madde kalmamış ise (bu sonlandırma koşulu olarak isimlendirilir) döngü sonlandırılır. Program yürümeye gövde bitiminden sonraki satırlardan devem eder( bu durumda, 4’üncü satırdaki yorumdan sonraki satır.)
  • Eğer daha işlenecek maddeler varsa, listede sonra gelen maddeye işaret edecek şekilde döngü değişkeni güncellenir. Bu durum şu anlama gelir: Döngü gövdesi üzerinden 7 kez yürü ve her yürümede f değişkeni farklı bir arkadaşa atamasını yap.
  • Döngünün içindeki gövde üzerinden her yürüme sonunda, Python for deyimine geri döner. Daha fazla madde kalıp kalmadığı kontrol edilir; eğer listenin içinde işlenecek daha madde varsa, f değişkeni sonraki maddeye işaret eder.

3.4. For döngüsünün yürütme akışı

Program çalışırken, Python hangi çümlenin işleneceğini takip eder. Biz buna programın yürütme akışının kontrol akışı diyeceğiz. insanlar programı çalıştırdıklarında, sıradaki her bir cümleye parmağıyla işaret eder. Kontrol akışını, “Python’un hareket eden parmağı” olarak düşünebilirsiniz.

Şimdiye kadar program akışının yukarıdan aşağıya doğru satır satır olduğunu görmüştük. For döngüsü bunu değiştirir.

for döngüsünün akış diyagramı

Eğer bir akış diyagramı çizersek, kontrol akışını gözünde canlandırmak ve anlamak daha kolay olur. Bu şekil, for deyiminin kesin basamaklarını ve nasıl yürüdüğünü göstermektedir.
_images/flowchart_for.png

3.5. Döngü bizim kamplumbağa programımızı basitleştirir

Bir kare çizmek için, aynı şeyi dört kere yapmamız gerekebilir— kamplumbağayı hareket ettir ve döndür. ahmet‘in bir karenin dört kenarını çizmesini sağlamak için 8 satır yazdık. Yalnızca 3 satır kullanarak, aynı şeyi yapabiliriz.

1
2
3
for i in [0,1,2,3]
    ahmet.forward(50)
    ahmet.left(90)

Bazı gözlemler:

  • Bazı satırlardan tasarruf etmemiz kolaylık olmasına rağmen, bu çok önemli değildir. Bundan çok daha önemlisi, kendini tekrarlayan bir kalıp bulduk ve kalıbı tekrar kullanmak için programımızı yeniden düzenledik. Bu kalıpları bulmak ve bu kalıplar etrafında programımızı düzenlemek hesaplamalı düşünmede can alıcı yetenektir.

  • [0,1,2,3] değerleri döngü gövdesinin 4 kere yürütülmesi için verilmiştir. Biz herhangi dört değerde kullanabilirdik, fakat bunlar genelde kullanılan değerlerdir. Gerçekte o kadar yaygındırlar ki, Python’un kendine ait range fonksiyonu vardır.

    1
    2
    3
    4
    for i in range(4):
        # i=0, sonra 1, sonra 2 ve 3 için gövde yürütülür (çalıştırılır.)
    for x in range(10):
        #  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]'ın herbir değerini x'e atar.
    
  • Bilgisayar programcıları saymaya 0’dan başlamayı severler.

  • range fonksiyonu, for içideki döngü değişkeni için bir değerler dizisi oluşturur. Her zaman 0’dan başlarlar ve yurakıdaki durumlar için 4 ve 10’u bu diziye dahil etmezler.

  • ahmet‘in en son dünüşünde 360 dereceyi tamamlaması için yaptığımız küçük kurnazlık bize şimdi karşılığını verdi. Eğer bunu yapmamış olsaydık, karenin dördüncü kenarı için döngüyü kullanamamış olacaktık. Diğer kenarlardan farklı bir durum oluşacaktı. Mümkün olduğunca kodumuzu özel bir durum için değil, genel bir motife uyacak şekilde yazmaya çalışmalıyız.

Birşeyi dört kere tekrar etmek için, iyi bir Python programcısı şunu yapacaktı:

1
2
3
for i in range(4):
    ahmet.forward(50)
    ahmet.left(90)

tamer'in de eşkenar üçgen çizmesi için for döngüsünü de kullanabilir. Bu programda hangi değişikleri yapmanız gerektiğini görebilmeniz gerekir.

Fakat şimdilik, eğer aşağıdaki değişikliği yapsaydanız, ne görürdünüz.

1
2
3
4
for c in ["yellow", "red", "purple", "blue"]:
    ahmet.color(c)
    forward(50)
    ahmet.left(90)

Değişken listeyede atanabilir. Böylece listeler yalnızca for döngüsü için değil, daha genel durumlar için kullanılabilir. Yukarıdaki kode şu şekilde yazılabilir:

1
2
3
4
5
6
# Assign a list to a variable
clrs = ["yellow", "red", "purple", "blue"]
for c in clrs:
    ahmet.color(c)
    ahmet.forward(50)
    ahmet.left(90)

3.6. Birkaç tane daha kamplumbağa yöntemleri (fonksiyonları)

Kamplumbağ yöntemleri negatif açı veya uzaklık kullanabilir. Örneğin, tamer.forward(-100) tamer’i geriye doğru hareket ettirecek ve tamer.left(-30) ise tamer’i sağ döndürecektir. Ayrıca, bir çemberde 360 derece olduğundan, onu 30 derece sola döndürmek, tamer‘i aynı yöne çevirecek ve bu sanki onu 330 derece sağ’a çevirmek ile aynı anlama gelecektir (Ekrandaki canlandırmayı kullanarak, tamer‘in saat yönününde mi yoksa saat yönünün tersin de mi hareket ettiğini söyleyebileceksiniz.)

Bu size, hem sağa hem de sola dönme yöntemlerinin ikisine birden ihtiyacınız olmadığını aklınıza getirir. Aynı zamand backward yöntemi de vardır (Eğer biraz uçuk iseniz, ahmet.backward(-100) komutunu ahmet‘i ileriye hareket ettirmek için kullanabilirsiniz).

Bizim konumuzda yapıyı ve aralarındaki bağlantıları daha iyi anlamak, Bilgisayar bilimcisi gibi düşünmenin bir parçasıdır. Eğer kamplumbağalar ile oynayacaksak, geometri ve sayı düzlemi hakkında basit temel konulara bir göz atmak; sol, sağ, ileri, geri, negatif ve pozitif açılar arasındaki bağlantıları farketmek iyi bir başlangıç olabilir.

Kamplumbağ kalemi çizgi çizmek için kullanabileceği gibi( pendown: kalem aşağı) , isterse kullanmayabilir de (penup: kalem yukarı) . Bu, kamplumbağanın çizgi çizmeden başka yerlere hareket etmesine olanak verir. Bu yöntemler:

1
2
3
ahmet.penup()          # kalem kaldırıldı.
ahmet.forward(100)     # Çizgi çizilmeden ahmet'i hareket ettirir.
ahmet.pendown()        # kalem yeniden konuldu.

Her kamplumbağaya farklı bir şekil verebiliriz. Halihazırda tanımlanmış yöntemler: arrow, blank, circle, classic, square, triangle, turtle bunlardan birkaçıdır.

1
ahmet.shape("turtle")
_images/alex06.png

Kamplumbağanın canlandırmasını (animasyon) hızlandırabilir veya yavaşlatabiliriz ( Canlandırma, kamplumbağanın ne kadar hızlı döneceğini veya ileri hareket edeceğini kontrol eder.) Hızlandırma ayarlamaları 1 (en yavaş) ve 10 (en hızlı) arasında ayarlanabilir. Eğer biz hızı 0’a ayarlarsak, bunun özel bir anlamı vardır: Canlandırma yapma ve en hızlı gidebileceğin kadar hızlı git.

1
ahmet.speed(10)

Kamplumbağa kendi ayakizini kanvas üzerinde oluşturabilir ve başka bir yere hareket ettiğinde bu ayakizi kalacaktır. Kalem yukarı (penup) olsa bile, iz bırakma çalışır.

Bu yeni özellikleri gösteren bir örnek yapalım:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import turtle
wn = turtle.Screen()
wn.bgcolor("lightgreen")
tess = turtle.Turtle()
tess.shape("turtle")
tess.color("blue")

tess.penup()                # This is new
size = 20
for i in range(30):
   tess.stamp()             # Leave an impression on the canvas
   size = size + 3          # Increase the size on every iteration
   tess.forward(size)       # Move tess along
   tess.right(24)           #  ...  and turn her

wn.mainloop()
_images/tess07.png

Dikkatli olun! Kaçkere döngü gövdesi yürütüldü? Ekranda kaç tane kamplumbağa resmi görüyorsunuz. Bir tanesi hariç bütün ekranda gördüğünüz kamplumbağa izleri stamp yönergesi tarafından oluşturulmuştur. Fakat program yalnızca bir tane kamplumbağa örneklemesi içerir. Hangisinin gerçek tamer olduğunu bulabilir misiniz? (İpucu: Eğer emin değilseniz, for döngüsünden sonra tamer‘in rengini değiştiren bir satırlık kod yazın; veya kalemi aşağıya indiren ve çizgi çizen, veya onun şeklini değiştiren bir kod yazın.)

3.7. Glossary

nitelik, özellik (attribute)
Belirli bir nesneye ait olan durum veya özellik. Örneğin, tamer bir renge sahiptir. Renk burda tamer nesnesinin bir özelliğidir.
kanvas (tuval)
Çizimin gerçekleştiği pencere yüzeyi
kontrol akışı
Sonraki bölümdeki yürütme akışına bakınız.
for döngüsü
Döngü içindeki gövdede bulunan ifadeleri tekrarlamayı kolaylaştıran Python deyimi.
döngü gövdesi
Döngü içinde içeriye girintilenmiş ifadeler. Döngü içindeki ifadelerin içeriye doğru girintilenmesi, bir gruplandırmayı ifade eder.
döngü değişkeni
for döngüsü içinde kullanılan değişken. Döngü’nün herbir tekrarında farlı bir değere işaret eder.
örnek
Bir sınıfa ait olan nesne. ahmet ve tamer kamplumbağa sınıfının farklı örnekleridir.
yöntem
Bir nesne ile ilişiklendirilen fonksiyon. Bir yöntemi çağırıldığında veya etkinleştirildiğinde, nesne buna karşılık verir. Örneğin, tess.forward(100)` dediğimizde, forward bir yöntemdir.
çağırmak
Bir nesneye ait yöntemler vardır. Çağırmak fiilini kullanarak, bu yöntemi etkinleştirdiğimizi ifade ederiz. Bir yöntemi çağırmak için, yöntemden sonra, içinde bir komut içeriği olan bir çift parantez () koyarız. Örneğin tamer.forward(), forward yönteminin çağırılmasıdır.
modül
Diğer Python programları içinde kullanılmak amacıyla Python tanımlamaları ve komutlarını tutan dosya. import deyimi kullanarak, modül’ün içeriği diğer programlara açık hale getirilir.
nesne
Bir değişkenin işaret edebileceği şey. Bu bir ekran penceresi veya yarattığımız bir kamplumbağa olabilir.
range (aralık)
Bir tamsayı dizisi yaratmak için Python’da tanımlanmış fonksiyon. Bir ifadeyi belirli bir sayıda yürütmek istediğimizde, yazdığımız for döngüsü için yararlı bir fonksiyondur.
sonlandırma koşulu
Bir döngü içindeki gövdedeki ifadelerin yürütmesini durduran koşuldur. Örneğin bu koşul; Bu bölümde gördüğümüz for döngüsü içinde, döngü değişkenine artık atayacağımız daha fazla madde kalmadığında oluşur.

3.8. Alıştırmalar

  1. `` Biz Python’un kamplumbağlarından hoşlanırız`` cümlesini 1000 kere yazan program yazınız.

  2. Cep telefonunuza ait 3 tane özellik ve 3 tane yöntem veriniz.

  3. Aşağıdaki çıktıyı yazan for döngüsü yazın:
    Ocak yılın bir ayıdır.
    Şubat yılın bir ayıdır.
    ...
  4. tamer kamplumbağınız yüzünü doğuya doğru 0 derecee ile çevirmiş olsun. Eğer tamer.left(3645) komutu verirsek, tamer ne yapar ve hangi yöne doğru bakar?

  5. xs = [12, 10, 32, 3, 66, 17, 42, 99, 20] şeklinde bir atama yaptığınızı düşünelim.

    1. Herbir sayıyı yeni bir satırda ekrana yazdıran bir döngü yazın.
    2. Herbir sayıyı ve onun karesini yeni bir satırda ekrana yazdıran bir döngü yazınız.
    3. Listedeki bütün sayıları toplayıp, sonucu toplam değişkenine atayan bir döngü yazınız. Bu sayıları toplamadan önce toplam değişkenini 0 sayısına atayın. Döngü tamamlandıktan sonra, toplam‘ı yazdırın.
    4. Listedeki bütün sayıların çarpımlarını yazdırın.
  6. Aşağıdaki düzgün çokgenleri for döngüsü kullanarak kamplumbağaya çizdiriniz ( düzgün çokgen her kenarı ve her açısı aynı olan demektir.)

    • Eşkenar üçgen
    • Kare
    • Altıgen
    • Sekizgen
  7. Bir sarhoş karson rastgele bir dönüş yapıyor ve 100 adım atıyor; daha sonra yeniden rastgele dönüş yapıyor ve 100 adım atıyor; ve bu böyle devam ediyor. Bir sosyal bilim öğrencisi, 100 adım alınmadan herbir dönüş öncesi bu açıları kaydediyor. Onun deneysel veriler: [160, -43, 270, -97, -43, 200, -940, 17, -86]. Kamplumbağayı kullanarak sarhoş arkadaş tarafından alınan yolu çiziniz.

  8. Yukarıdaki programı zenginleştirin: Sarhoş korsan etrafta gezindikten sonra, yöneldiği yönü söyleyen bir program yazınız ( Onun 0 dereceden başladığını farzedin.)

  9. Eğer 18 kenarı olan bir düzgün çokgen çizerseniz, kamplumbağa her köşede kaç derecelik bir açıyla dönmelidir?

  10. Aşağıdaki herbir satırı, Python’un etkileşimli komut satırından girerek ne yapacağını tahmin ediniz ve sonucu kaydediniz:

    >>> import turtle
    >>> wn = turtle.Screen()
    >>> tess = turtle.Turtle()
    >>> tess.right(90)
    >>> tess.left(3600)
    >>> tess.right(-90)
    >>> tess.speed(10)
    >>> tess.left(3600)
    >>> tess.speed(0)
    >>> tess.left(3645)
    >>> tess.forward(-100)
    
  11. Aşağıdaki şekli çizen bir Python programı yazınız:

    _images/star.png

    İpucu:

    • Cep telefonunuzu sanki bir kamplumbağaymış gibi bir kağıt parçası üzerinde hareket ettirip, döndürün. Yıldızı tamamlamadan önce, telefonunuzun kaçkere tam dönüş yaptığını gözlemleyiniz. Herbir tam dönüş 360 derece olduğundan, cep telefonunuzun kaç derece döndürüldüğünü bulabilirsiniz. Yıldızda 5 köşe olduğündan, bunu beşe bölerseniz kamplumbağanızı her köşede kaç derece döndürdüğünüzü bulabilirsiniz.
    • Eğer kamplumbağanızın görünmesini istemiyorsanız onu görünmez yapabilirsiniz. Eğer kalem aşağıda ise hala çizim yapmaya devam edecek. Bu yöntem tamer.hideturtle() ile çağrılır. Kamplumbağayı yeniden görünür yapmak istiyorsanız, tamer.showturtle()‘ı kullanın.
  12. Aşağıdaki şekle benzer bir yüz çizecek program yazınız.

    _images/tess_clock1.png
  13. Bir kamplumbağa yaratınız ve bu kamplumbağayı bir değişkene atayınız. Bu değişkenin tipini komut satırından sorunuz. Ne cevap alıyorsunuz?

  14. Kamplumbağaların hangi takıma aittirler? Kamplumbağa’nın Anadolu’da yaşayan cinsine ne denir?

  15. Python hangi takıma aittir? Bir yıla mıdır? Zehirli midir?