⚠️ Bu portal eğitim amaçlıdır. İçerikler ticari amaçla kullanılamaz. Detaylı bilgi
3. Dönem BİL203U

Programlama II

Toplam 121 soru bulundu.

Ders Materyalleri

Programlama II - Tüm Sorular

Ünite 1

Soru 1

Python programlama dili ile ilgili olarak, aşağıdaki bilgilerden hangisi doğru değildir?

Seçenekler

A
Kullanımı ücretsizdir ve kaynak kodu GNU Genel Kamu Lisansı (GPL) altında kullanılmaktadır.
B
Platformlar arası bir programlama dilidir, tüm güncel işletim sistemlerinde çalıştırılabilir.
C
Bazı diğer diller gibi derleme (compilation) ve çalıştırma (execution) şeklinde ayrı adımları yoktur, yorumlayıcı tarafından satır satır çalıştırılır.
D
İsmini bir yılan türünden alır.
E
Ticari veri tabanı uygulamalarını destekler.
Açıklama:
Sayfa 2’te yer aldığı üzere Python programlama dili ismi, Monty Python’s Flying Circus isimli skeçleri yapan İngiliz komedi grubundan esinlenilerek verilmiştir ve sanıldığının aksine piton yılan türü yılanlarla ilgili değildir.
Çözün D şıkkıdır.

Soru 2

İşletim sistemi üzerinde bir terminal penceresi açarak “python” komutunun girilmesi durumunda, konsol ekranında güncel sürümünüz ve sürümün yayınlanma tarihini takiben “ >>>” karakterleri ile başlayan bir satır görülür. Açılan bu ekrana ne ad verilir?

Seçenekler

A
Immediate mode
B
Launchpad
C
Cmd
D
Metin editörü
E
Komut istemi
Açıklama:
Sayfa 5’te yer aldığı üzere “Eğer >>> şeklinde bir veri girişi istenen ekran karşımıza çıkıyorsa, derleyici açılmış demektir. Açılan bu ekrana “immediate mode” adı verilmektedir, …”
Çözüm A şıkkıdır.

Soru 3

Programlama dilinden bağımsız olarak, uygulama geliştirme için programcıya kod ipuçları, sözdizimi vurgulama ve denetleme, dosya gezgini vb. gibi yararlı özellikler barındıran, kodun daha hızlı ve kolay bir şekilde tamamlanmasını sağlayan yazılımlara ne ad verilir?

Seçenekler

A
Immediate mode
B
Tanımlayıcı
C
IDE - (Integrated Development Environment - Tümleşik Geliştirme Ortamı)
D
Anahtar kelime
E
Kod dokümantasyonu
Açıklama:
Sayfa 6’da belirtildiği üzere IDE, uygulama geliştirme için programcıya kod ipuçları, sözdizimi vurgulama ve denetleme, dosya gezgini vb. Gibi yararlı özellikler barındıran, kodun daha hızlı ve kolay bir şekilde tamamlanmasını sağlayan bir yazılımdır.”
Çözüm C şıkkıdır.

Soru 4

Python dilinde kullanılan tanımlayıcılar ile ilgili olarak aşağıdakilerden hangisi söylenemez?

Seçenekler

A
Anahtar kelimeler tanımlayıcı olarak kullanılamaz.
B
Bir tanımlayıcı bir rakamla başlayamaz.
C
Türkçe karakterler kesinlikle kullanılamaz.
D
Büyük ve küçük harfler ve rakamlar kullanılabilir.
E
Alt çizgi (_) karakteri kullanılabilir.
Açıklama:
Sayfa 8’de yer aldığı üzere “Python 3 sürümünden itibaren Unicode (UTF-8) desteği sağlamaktadır. Böylece hem verilerde hem de program içerisinde kullanılan değişken, metot ve sınıf isimlendirmelerinde Türkçe karakterler kullanılabilir.”
Çözüm C'dir.

Soru 5

Aşağıda görülen Python dilinde yazılmış kod satırında, “Eskişehir” değeri hangi değişkene atanmıştır?
sayi1, sayi2, metin1, metin2 = 56, 11, "Eskişehir", “Çorlu”

Seçenekler

A
sayi1
B
sayi2
C
metin1
D
metin1 ve metin2
E
Tüm değişkenler
Açıklama:
Sayfa 13’te belirtildiği üzere, Python dilinde “çoklu değer atama” yapılabilir. Virgülle ayrılmış olan değişkenlerin her biri, “=” işaretinden sonra gelen virgülle ayrılmış değerlerle eşleştirilmiş olup “Eskişehir” değeri “metin1” değişkenine atanmıştır.
Çözüm C şıkkıdır.

Soru 6

demetim = ( 1 , “papatya”, “yabani” )
listem = [ 1, “karanfil”, “kırmızı”, 11.25 ]
Python dilindeki Tuple (Demet) veri türü, farklı tipteki verilerin bir araya getirildiği List (Liste) veri tipine benzer bir yapıdır. Yukarıdaki kodda Tuple veri türünde “demetim” isimli değişken ve List veri tipinde “listem” isimli değişkenler tanımlanmıştır. Bu değişkenlerin tipleri göz önüne alıdığında, seçeneklerde yer alan kod parçalarından hangisi bir hata mesajı döndürecektir?

Seçenekler

A
print("demetim[1] = ", demetim[1])
B
demetim[1] = “kasımpatı”
C
print("demetim[0:2] = ", demetim[0:2])
D
print("listem [0:3] = ", listem [0:3])
E
listem[2]= “beyaz”
Açıklama:
Sayfa 17’de belirtildiği üzere “Tuple, farklı veri tiplerinin bir araya gelerek oluşturdukları veri tipine denir. Liste ile benzer sıralı bir öğe dizisidir. Tek farkları, Tuple’ın değişmez olmasıdır. Tuple’lar bir kez oluşturulduktan sonra değiştirilemez.” Aynı sayfada verilen örnekte de benzer bir işlemin “TypeError: 'tuple' object does not support item assignment” çıktısı ile sonuçlandığı gösterilmektedir.
Çözüm B şıkkıdır. tuple tipi değişkene ekleme, silme ve güncelleme yapamayız

Soru 7

en = 12
boy = “10”
yükseklik = “60”
hacim = en * boy * yükseklik
print("Odanın hacmi:",hacim)
Yukarıdaki kodda, en, boy ve yükseklik isimli değişkenlerin çarpılarak sonucun hacim değişkenine atandığı görülmektedir. Ancak bu işlem gerçekleştirilemeyecek ve sonucunda bir hata mesajı alınacaktır. Bunun sebebi nedir?

Seçenekler

A
Python dilinde rakamsal değerlerin tümü çift tırnak (“”) işareti içinde verilmelidir. En değişkeni bu şekilde tanımlanmamıştır.
B
Yükseklik değişken ismi Türkçe’ye özgü karakter olan ü harfini içerir.
C
Python dilinde çıkış işlemleri için (print) işlevi kullanılmaz.
D
Python dilinde çarpma işlemi için x karakteri kullanılmalıdır.
E
Python, aritmetik işlemler yaparken string (metin dizisi) türündeki değişkenlere örtülü (Implicit) tür dönüşümü uygulamaz.
Açıklama:
Sayfa 25’te Tablo 1.3’te * karakteri çarpma operatörü olarak verilmiştir.
Sayfa 8’de yer aldığı üzere “Python 3 sürümünden itibaren Unicode (UTF-8) itibaren değişken isimlerinde Türkçe karakter kullanmanın mümkün olduğu ifade edilmiştir.
Sayfa 15’te metin dizilerinin, tırnak işaretleri içinde gösterilen bitişik bir karakter kümesi olarak tanımlandığı söylenmektedir. Sayfa 22’de belirtildiği üzere “Verileri standart çıktı aygıtında yani ekranda görüntülemek için print() işlevini kullanırız.” Ancak sayfa 20’de anlatıldığı üzere, tırnak içerisinde metin dizisi olarak tanımlanmış nümerik değerlerin aritmetik olarak işlenebilmeleri için öncelikle açık (explicit) tür dönüştürme yapılmalıdır.
Çözüm E şıkkıdır.

Soru 8

en = 12
boy = 10
yükseklik = “60”
"""Programın doğru çalışması için eklenecek kod burada yer almalıdır."""
hacim = en * boy * yükseklik
Yukarıdaki kodda, en, boy ve yükseklik isimli değişkenlerin çarpılarak sonucun hacim değişkenine atandığı görülmektedir. Ancak bu işlem gerçekleştirilemeyecek ve sonucunda bir hata mesajı alınacaktır. Bu programın doğru çalışması için düzenlenmesi gereken kod parçası aşağıdakilerden hangisidir?

Seçenekler

A
en = str(en)
boy = str(boy)
B
en = int(en)
boy = int(boy)
C
en = str(en)
boy = str(boy)
yükseklik = int(yükseklik)
D
yükseklik = int(yükseklik)
E
yükseklik = str(yükseklik)
Açıklama:
Yükseklik değişkenine atanan 60 değeri turnak içine alınarak metin dizisi (string) türünde tanımlanmıştır. Sayfa 20’de anlatıldığı üzere, tırnak içerisinde metin dizisi olarak tanımlanmış nümerik değerlerin aritmetik olarak işlenebilmeleri için öncelikle açık (explicit) tür dönüştürme yapılmalıdır. yükseklik = int(yükseklik) biçiminde verilen kod ilgili satıra eklendiğinde programın doğru çalışması sağlanacaktır.
Çözüm D şıkkıdır. C ve D şıkkı aynı değildir. En ve boy un str ile işleme alınması onu sayısal değil karaktere dönüştürür. Bu durumda hata oluşur en uygun seçenek D dir yani yüksekliği sayıya çevirmektir.

Soru 9

“in” ve “”not in Python programlama diline özgü operatörlerdir. Bir dizide (string, list, tuple, set ve dictionary) bir değerin veya değişkenin bulunup bulunmadığını test etmek için kullanılan bu operatörlere ne ad verilir?

Seçenekler

A
Kimlik operatörü
B
Üyelik operatörü
C
Mantıksal operatör
D
Karşılaştırma operatörü
E
Arama operatörü
Açıklama:
Sayfa 29’da açıklandığı üzere bir dizide (string, list, tuple, set ve dictionary) bir değerin veya değişkenin bulunup bulunmadığını test etmek için kullanılan Python programlama diline özgü “in” ve “not in” operatörlerine üyelik operatörü adı verilir.
Çözüm B şıkkıdır.

Soru 10

x = 34
y = 26
# I
print('x > y is',x>y)
#II
print('x < y is',x
#III
print('x == y is',x==y)
#IV
print('x != y is',x!=y)
#V
print('x >= y is',x>=y)
#VI
print('x <= y is',x<=y)
Yukarıda sayısal değerler atanmış olan x ve y değişkenleri üzerinde, karşılaştırma operatörleri aracılığı ile işlemler gerçekleştirilmiştir. Bu işlemler, I’den VI’ya kadar numaralandırılmıştır. Buna göre hangi işlemler “FALSE” sonucunu döndürecektir?

Seçenekler

A
II, III ve VI
B
I, IV ve V
C
II ve IV
D
I ve V
E
Sadece V
Açıklama:
Soru sayfa 25-26’da yer alan örneğe dayanarak hazırlanmış olup ikinci, üçüncü ve altıncı mantıksal karşılaştırma komutlarının FALSE sonucunu döndürdüğü görülmektedir.
I. 34 büyüktür 26 TRUE
II. 34 küçüktür 26 FALSE
III. 34 eşittir 26 FALSE
IV. 34 eşit değildir 26
V. 34 büyük veya eşittir 26 TRUE
VI. 34 küçük veya eşittir 26 FALSE
Yanıt A şıkkıdır.

Ünite 2

Soru 1

sayılar = [11, 26, 20, 34, 42, 77, 55, 3, 4, 91];
Python programlama dili kullanılarak, yukarıdaki verilen sayılar isimli liste veri tipindeki değişkenin her bir elemanına 5 eklenmek istenmektedir. Bunu yapmak için hangi akış kontrolü yapısını kullanmak uygun olacaktır?

Seçenekler

A
If… else kontrolü
B
for döngüsü
C
pass deyimi
D
break deyimi
E
(range) fonksiyonu
Açıklama:
Sayfa 43’te belirtildiği üzere; Python’daki for döngüsü, bir dizi (list, tuple, string) veya diğer yinelenebilir/tekrarlanabilir nesneler üzerinde yineleme yapmak için kullanılır. Örnekteki liste değişkeninin her bir elemanına 5 eklemek, bu tür bir işlemdir.

Soru 2

Python programlama dili kullanarak bir sayı dizisi oluşturmak; örneğin 3’ten 30’a kadar üçer üçer ilerleyen sayılardan oluşan bir liste değişkeni yaratmak için kullanılabilecek en uygun komut hangisidir?

Seçenekler

A
If… else kontrolü
B
continue deyimi
C
pass deyimi
D
break deyimi
E
(range) fonksiyonu
Açıklama:
Sayfa 44’te belirtildiği üzere (range) fonksiyonu bir sayı dizisi oluşturmak için kullanılmaktadır.

Soru 3

sayılar = range(0, 10, 2);
Yukarıdaki range fonksiyonu ile oluşturulan sayılar isimli liste değişkeninin kaç elemanı vardır?

Seçenekler

A
10
B
20
C
2
D
5
E
0
Açıklama:
Sayfa 44’te anlatıldığı üzere range () fonksiyonunda başlangıç, bitiş ve adım değerleri de range (başlangıç, bitiş, adım) olarak tanımlanmaktadır. Adım değeri verilmezse varsayılan olarak 1 alınmaktadır. Verilen kodda başlangıç 0, bitiş 10 ve adım değeri 2 olarak verildiği için sayılar isimli liste dizisinin 5 elemanı olacaktır.

Soru 4

Şekildeki akış diyagramı Python programlama dilindeki hangi akış kontrolünü ifade etmektedir?Akış diyagramı

Seçenekler

A
for döngüsü
B
if… elif… else kontrolü
C
range fonksiyonu
D
while döngüsü
E
pass deyimi
Açıklama:
Şekil, Sayfa 46’da yer alan Şekil 2.5 ile benzerlik göstermekte olup while döngüsü akış
diyagramıdır.

Soru 5

Python programlama dilinde kod içerisinde bir ifade için yapılması gereken kontrol işlemleri sayıca fazla ise, C#, Java ve JavaScript gibi programlama dillerindeki switch deyimi if..else blokları yerine kullanılabilecek bir switch… case akış kontrolörü yoktur.
switch-case yapısı yerine Python programcıları aşağıdakilerden hangisini kullanırlar?

Seçenekler

A
iç içe if ifadeleri
B
sözlük eşleşmesi (dictionary mapping)
C
if...elif...else İfadesi
D
for...else döngüsü
E
break deyimi
Açıklama:
Sayfa 50’de anlatıldığı üzere, Python dilinde diğer dillerdeki switch-case kontrolü yerine, anahtar ve değer çiftlerinden oluşan sözlük (dictionary) veri tipinden faydalanan sözlük eşleşmesi (dictionary mapping) yöntemi kullanılmaktadır.

Soru 6

Python’daki for döngüsü, bir dizi (list, tuple, string) veya diğer yinelenebilir/tekrarlanabilir nesneler üzerinde yineleme yapmak için kullanılır. for döngüsünün dizi üzerindeki her bir tekrarına ne ad verilir?

Seçenekler

A
sözlük eşleşmesi (dictionary mapping)
B
geçiş (iterasyon)
C
sözdizimi
D
ad alanı (namespace)
E
liste
Açıklama:
Soruda yer alan tanım Sayfa 43’ten alınmış olup for döngüsünün dizi üzerindeki her bir tekrarına geçiş (iterasyon) adı verilir.

Soru 7

Python’un hazır fonksiyonlarından hangisi aracılığıyla bazı nesnelerin RAM’deki adresini alabiliriz?

Seçenekler

A
range()
B
print()
C
id()
D
len()
E
input()
Açıklama:
Sayfa 50’de ifade edildiği üzere id() fonksiyonu ile bazı nesnelerin RAM’deki adresini alabiliriz.

Soru 8

Python dilindeki id(), print() vb. gibi yerleşik işlevler programın herhangi bir bölümünde her zaman kullanılabilirler. Bu işlevler hangi ad alanı içinde yer alırlar?

Seçenekler

A
Genel (Global)
B
Yerel (Local)
C
Modül
D
Fonksiyon
E
Ön tanımlı (Built in)
Açıklama:
Sayfa 54’te tanımlandığı üzere yerleşik işlevler ön tanımlı ad alanında bulunurlar.

Soru 9


Yukarıdaki kod çalıştırıldığında 3 satırdan oluşan bir çıktı üretecektir. Aşağıdakilerden hangisi bu satırlardan biridir?

Seçenekler

A
Python dilini öğrenmek inanılmaz
B
Phyton ile yapabildiklerim muhteşem
C
Python ile çalışmak harika
D
Python ile çalışmak inanılmaz
E
Python dilini öğrenmek harika
Açıklama:
Sayfa 54’te anlatıldığı üzere, satır başlangıçlarına verilen girintilere bağlı olarak fonksiyonların ve bunlar içerisinde tanımlanan değişkenlerin ad alanları değişmektedir. Buna kodun üreteceği çıktı 3 satırdan oluşacak ve satırlar sırası ile “Python dilini öğrenmek muhteşem”, “Phyton ile yapabildiklerim inanılmaz” ve “Python ile çalışmak harika” şeklinde olacaktır.
Sadece “Python ile çalışmak harika” cümlesi seçenekler içerisinde yer almaktadır.

Soru 10

hayvanlar = ["Sarman", "Minnoş", "Tırmık", "Karabaş", "Pamuk"]
for isim in hayvanlar:
if isim == "Karabaş":
#boş bırakılan yer
print(isim)
Yukarıda verilen örnek Python kodunda, isim değişkenin değeri “Karabaş” değerine eşit olduğunda, ekrana yazdırmadan bir sonraki iterasyona devam etmesi için boş bırakılan yere aşağıdaki seçeneklerden hangisi gelmelidir?

Seçenekler

A
break
B
pass
C
else
D
continue
E
next
Açıklama:
Sayfa 49'da anlatıldığı gibi, Türkçe karşılığı devam anlamına gelen continue deyimi, bir döngü içindeyken kendisinden sonraki kodları çalıştırmadan, döngünün başına gelerek işleme bir sonraki eleman ile devam edilmesini sağlar. Yani break deyimindeki gibi döngü sonlandırılmaz, ancak bir sonraki döngü elemanı ile devam eder.

Soru 11

Bir problemin çözülmesinde izlenecek mantıklı ve ardışık şekilde gelen işlem dizisine ne ad verilmektedir?

Seçenekler

A
Akış kontrolü
B
Algoritma
C
Akış
D
Akış diyagramı
E
Kontrol elemanları
Açıklama:
Bir problemin çözülmesinde izlenecek mantıklı ve ardışık şekilde gelen işlem dizisine Algoritma denilmektedir. Algoritmanın da tüm dünya tarafından kabul edilmiş çeşitli semboller ile gösterilemesine de Akış Diyagramı adı verilmektedir. Akış diyagramları hazırlanırken kullanılması gereken kontrol elemanları vardır.

Soru 12

.......sayı > 0:
print("Pozitif sayı")
...... sayı == 0:
print("Sıfır")
........ :
print("Negatif sayı")
Yukarıda verilen örnek Python kodunda, bir sayının pozitif, negatif veya sıfır olup olmadığını kontrol ederek uygun bir mesaj göstermek için boş bırakılan yerlere sırasıyla aşağıdaki seçeneklerden hangisi gelmelidir?

Seçenekler

A
if else, elif, for
B
if, elif, else
C
if, else, elif
D
for, elif, else
E
for, else, elif
Açıklama:
Sayının pozitif, negatif veya sıfır olup olmadığını kontrol ederek uygun bir mesaj göstermek için yazılması gereken kod aşağıdaki gibidir. Bu nedenle boş bırakılan yerlere sırasıyla if, elif ve else gelmelidir.
if sayı > 0:
print("Pozitif sayı")
elif sayı == 0:
print("Sıfır")
else:
print("Negatif sayı")

Soru 13

for döngüsü sözdizimi ile ilgili olarak aşağıda verilen seçeneklerden hangisi doğrudur?

Seçenekler

A
for, işlem yapılacak her bir değeri diğerlerinden ayırır.
B
in, bir döngü başlatır.
C
değer, altındaki sekme ile belirtilmiş kod bloğunun çalıştırılma talimatını verir.
D
döngü gövdesi, döngünün her bir yenilemesinde sıradaki değeri alan geçici bir değişkendir.
E
liste, sıralı olarak üzerinde işlem tekrarı yapmak istenilen nesnedir.
Açıklama:
for döngüsündeki söz dizimini inceleyecek olursak;
for: Bir döngü başlatır
değer: Döngünün her bir yenilemesinde sıradaki değeri alan geçici
bir değişkendir
in: İşlem yapılacak her bir değeri diğerlerinden ayırır
liste: Sıralı olarak üzerinde işlem tekrarı yapmak istenilen nesnedir
İki nokta üst üste: altındaki sekme ile belirtilmiş kod bloğunun
çalıştırılma talimatını verir
döngü gövdesi: Tekrar edilerek yapılması istenen işlemlerin yazıldığı kod bloğudur.
Bu nedenle doğru seçenek E'dr.

Soru 14

print(list(range(3, 19, 2)))
Yukarıda verilen örnek Python kodu sonucunda elde edilecek kod çıktısı aşağıdaki seçeneklerin hangisinde doğru olarak verilmiştir?

Seçenekler

A
[3, 5, 7, 9, 11, 13, 15, 17, 19]
B
[3, 5, 7, 9, 11, 13, 15, 17, 19,21]
C
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
D
[3, 5, 7, 9, 11, 13, 15, 17]
E
[1, 17]
Açıklama:
print(list(range(3, 19, 2))) kodunun çıktısı [3, 5, 7, 9, 11, 13, 15, 17] şeklindedir. Bu nedenle cevap D seçeneğidir.

Soru 15

öğrenci_adı = 'Semra'
notlar = {'Handan': 90, 'Semra': 75, 'Kamil': 67}
Yukarıda verilen bilgileri kullanarak Python programında Semra'nın aldığı notu göstermek için kullanılacak kod aşağıdakilerin hangisinde yer almaktadır?

Seçenekler

A
for öğrenci else notlar:
if öğrenci == öğrenci_adı:
print(notlar[öğrenci])
B
for öğrenci in notlar:
if öğrenci == öğrenci_adı:
print(notlar[öğrenci])
C
list öğrenci in notlar:
for öğrenci == öğrenci_adı:
print(notlar[öğrenci])
D
for öğrenci in notlar:
else öğrenci == öğrenci_adı:
print(notlar[öğrenci])
E
for öğrenci in notlar:
while öğrenci == öğrenci_adı:
print(notlar[öğrenci])
Açıklama:
öğrenci_adı = 'Semra'
notlar = {'Handan': 90, 'Semra': 75, 'Kamil': 67} bilgilerini kullanarak Python programında Semra'nın aldığı notu göstermek için kullanılacak kod şöyledir:
for öğrenci in notlar:
if öğrenci == öğrenci_adı:
print(notlar[öğrenci])
Bu nedenle cevap B seçeneğidir.

Soru 16

while döngüsü ile ilgili olarak aşağıda verilen seçeneklerden hangisi yanlıştır?

Seçenekler

A
Test ifadesi (koşul) doğru olduğu sürece bir kod bloğu içindeki işlemleri tekrar etmek için kullanılır.
B
Döngü gövdesini çalıştırmadan önce koşulu test eder.
C
Bu döngü genellikle önceden kaç kez işlem tekrarı yapılacağı bilinmeyen durumlarda kullanılır.
D
while kod bloğunda yapılan işlemler, test ifadesinden yanlış değeri alınana kadar tekrar eder.
E
Diğer operatörlerde olduğu gibi, while döngüsünün gövdesi parantez işareti ile belirlenir.
Açıklama:
Python’daki while döngüsü, test ifadesi (koşul) doğru olduğu sürece bir kod bloğu içindeki işlemleri
tekrar etmek için kullanılır. Döngü gövdesini çalıştırmadan önce koşulu test eder. Bu döngü genellikle önceden kaç kez işlem tekrarı yapılacağı bilinmeyen durumlarda kullanılır. while kod bloğunda yapılan işlemler, test ifadesinden yanlış değeri alınana kadar tekrar eder. Diğer operatörlerde olduğu gibi, while döngüsünün gövdesi girinti ile belirlenir. Bu nedenle cevap E seçeneğidir.

Soru 17

for döngüsünde olduğu gibi, while döngüsünde de isteğe bağlı bir ......bloğu kullanılabilir. while döngüsündeki koşul Yanlış (False) olarak değerlendirilirse, ...... kısmı yürütülür. Ayrıca while döngüsü bir ........ deyimi ile sonlandırılabilir.
Yukarıda boş bırakılan yerlere sırayla gelmesi gerekenler aşağıdakilerin hangisinde verilmiştir?

Seçenekler

A
else, else, break
B
break, break, else
C
continue, continue, break
D
break, break, continue
E
continue, else, break
Açıklama:
for döngüsünde olduğu gibi, while döngüsünde de isteğe bağlı bir else bloğu kullanılabilir. while döngüsündeki koşul Yanlış (False) olarak değerlendirilirse, else kısmı yürütülür. Ayrıca while döngüsü bir break deyimi ile sonlandırılabilir. Bu nedenle cevap A seçeneğidir.

Soru 18

I. pass deyimi genellikle bir işlevi olmaması gereken fakat sözdizimi olarak bir ifade eklenmesi gereken durumlarda kullanılır.
II. else döngüsü, test ifadesi (koşul) doğru olduğu sürece bir kod bloğu içindeki işlemleri tekrar etmek için kullanılır.
III. Eğer kod içerisinde bir ifade için yapılması gereken kontrol işlemleri sayıca fazla ise, if..else blokları yerine switch deyimi kullanılabilir.
IV. break deyimi, döngünün başına gelerek işleme bir sonraki eleman ile devam edilmesini sağlar.
Yukarıda verilen maddelerden hangileri doğrudur?

Seçenekler

A
I ve II
B
I ve III
C
II ve IV
D
II ve III
E
I ve IV
Açıklama:
while döngüsü, test ifadesi (koşul) doğru olduğu sürece bir kod bloğu içindeki işlemleri tekrar etmek için kullanılır.pass deyimi genellikle bir işlevi olmaması gereken fakat sözdizimi olarak bir ifade eklenmesi gereken durumlarda kullanılır. Eğer kod içerisinde bir ifade için yapılması gereken kontrol işlemleri sayıca fazla ise, if..else blokları yerine switch deyimi kullanılabilir. continue deyimi ise, bir döngü içindeyken kendisinden sonraki kodları çalıştırmadan, döngünün başına gelerek işleme bir sonraki eleman ile devam edilmesini sağlar. Bu nedenle cevap B seçeneğidir.

Soru 19

-Aynı amaç için oluşturulmuş sınıflar, fonksiyonlar ve özellikleri bir çatı altında toplayan yapıya
verilen isimdir.
-İçerisine birbiri ile alakalı sınıf ve fonksiyonların konulmasına dikkat edilmesi gerekir.
Yukarıda verilen özellikler aşağıda verilen seçeneklerden hangisine aittir?

Seçenekler

A
Akış kontrolü
B
Alanadı (namespace)
C
Değişken kapsamı (scope)
D
Döngü
E
Algoritma
Açıklama:
Ad alanı ise, aynı amaç için oluşturulmuş sınıflar, fonksiyonlar ve özellikleri bir çatı altında toplayan yapıya verilen isimdir. Namespace içerisine birbiri ile alakalı sınıf ve fonksiyonların konulmasına dikkat edilmesi gerekir. Böylece aynı namespace içinde toplanan fonksiyonlar, ihtiyaç duyulan noktada koda eklenerek daha kolay yönetilebilir kod yazmada yardımcı olmaktadır. Her modül kendi global ve yalıtılmış ad alanını oluşturmaktadır. Böylece farklı modüllerde bulunabilecek aynı isim çakışmasının önüne geçilmektedir. Bu nedenle cevap B seçeneğidir.

Soru 20

Tanımlanmış çeşitli ad alanları olmasına rağmen, programın her bölümünden hepsine erişilemediği durumlarda hangi kavramı devreye girmektedir?

Seçenekler

A
Değişken kapsamı (scope)
B
Kontrol deneyimleri
C
Program akışı
D
switch case deyimi
E
pass deyimi
Açıklama:
Tanımlanmış çeşitli ad alanları olmasına rağmen, programın her bölümünden hepsine erişilemeyebilir. Bu durumda kapsam (scope) kavramı devreye girmektedir. Bu nedenle cevap A seçeneğidir.

Ünite 3

Soru 1

Python'da def anahtar kelimesi hangi amaçla kullanılmaktadır?

Seçenekler

A
Fonksiyon başlığının başlangıcını işaretleyen anahtar sözcüktür.
B
Fonksiyon başlığının sonunu işaretlemek için kullanılır.
C
Fonksiyon gövdesini oluşturan bir veya daha fazla geçerli python ifadesine verilen isimdir.
D
Fonksiyondan bir değer döndürmek için isteğe bağlı olarak kullanılabilen bir dönüş ifadesidir.
E
Fonksiyonun parametreleri ve fonksiyonun görevini açıklamak için isteğe bağlı yazılan açıklamaları içerir.
Açıklama:
Fonksiyonlar, belirli bir görevi yerine getiren kod bloklarına verilen isimdir. Fonksiyonlar, programları daha küçük ve modüler parçalara ayırmaya yardımcı olur. Program büyüdükçe fonksiyonlar, yazılan kodun daha düzenli ve yönetilebilir hale gelmesinde büyük rol oynamaktadır. Kod tekrarını önleyerek, kodun yeniden kullanılabilir hale getirilmesini sağlar.
Fonksiyon gibi bir tanımlama yapılmak istendiğinde def anahtar kelimesi kullanılmaktadır.
Fonksiyon Sözdizimi:
def fonksiyon_adı(parametre(ler)): """docstring""" kod bloğu

Soru 2

Aşağıdaki kodun çıktısı hangisidir?
def hesap(sayi): if sayi <=10 : return sayi else: return (sayi*2) print(hesap(10)) print(hesap(15))

Seçenekler

A
10
30
B
10
225
C
10
15
D
sayi
sayi*2
E
100
225
Açıklama:
Soru kökünde verilen hesap fonksiyonundaki return sözdizimi verilen sayının 10 ve 10'dan küçük olması durumunda sayıyı, diğer durumlarda sayının iki katını döndürmektedir.
def hesap(sayi): if sayi <=10 :
return sayi
else:
return (sayi*2)
print(hesap(10)) print(hesap(15))
Return ifadesi, bir fonksiyondan çıkmak ve fonksiyonun çağrıldığı yere geri dönmek için kullanılır.
return Sözdizimi:
return [ifade listesi]
Bu ifade, değer hesaplayan veya değer döndürülen bir ifade içerebilir. Deyimde ifade yoksa veya bir
fonksiyonun içinde return ifadesi bulunmuyorsa, fonksiyon None nesnesini döndürür.

Soru 3

Değişkenler ile ilgili aşağıdaki bilgilerden hangisi hatalıdır?

Seçenekler

A
Bir değişkenin kapsamı, bir programın değişkenin değer ataması yapılabildiği kısmıdır.
B
Bir fonksiyon içinde tanımlanan parametreler ve değişkenler fonksiyonun dışından erişilemez.
C
Bir değişkenin ömrü, değişkenin tanındığı, bellekte bulunduğu süreye denir.
D
Bir fonksiyon içindeki değişkenlerin ömrü, fonksiyonun yürütüldüğü süre kadardır.
E
Bir fonksiyon daha önce yapılan çağrılarından bir değişkenin değerini tutabilir.
Açıklama:
Kod:
def deneme_fonk(): x = 26
print("Fonksiyon içindeki x değeri:",x)
x = 34 deneme_fonk() print("Fonksiyon dışındaki x değeri:",x)
Kod Çıktısı:
Fonksiyon içindeki x değeri: 26
Fonksiyon dışındaki x değeri: 34
Burada x’in değerinin başlangıçta 34 olduğu görülmektedir. deneme_fonk() fonksiyonu, x’in değerini 26 olarak değiştirse de, fonksiyonun dışındaki değeri etkilememektedir. Bunun nedeni, aynı isimlere sahip olmalarına rağmen, farklı kapsamlarda tanımlı iki farklı değişken olmaları sebebiyledir. Fonksiyonun için- deki x değişkeni, fonksiyona özel olarak yerel tanımlanmış, dışarıdaki x değişkeni de genel tanımlanmış bir değişkendir. Ayrıca, fonksiyonun dışındaki değişkenler fonksiyonun içinden erişilebilir. Yani küresel bir kapsamları vardır.
<
Bir değişkenin kapsamı, bir programın değişkenin değer ataması yapılabildiği, yani yorumlayıcı tarafın- dan tanındığı kısmıdır. Bir fonksiyon içinde tanımlanan parametreler ve değişkenler fonksiyonun dışından görünmez yani erişilemez. Bu nedenle, yerel bir kapsamları vardır.
Bir değişkenin ömrü, değişkenin tanındığı, bellekte bulunduğu süreye denir. Bir fonksiyon içindeki değişkenlerin ömrü, fonksiyonun yürütüldüğü süre kadardır. Fonksiyondan dönüldüğünde yok edilirler. Bu sebeple, bir fonksiyon daha önce yapılan çağrılarından bir değişkenin değerini tutamaz.

Soru 4

Aşağıdaki kodda hangi fonksiyon türü kullanılmıştır?
def faktöriyel(x): if x == 1: return 1
else:
return (x * faktöriyel(x-1))
sayi = 5 print(sayi, "sayısının faktöriyel değeri: ", faktöriyel(sayi ))

Seçenekler

A
Özyinelemeli
B
Lambda
C
Anonim
D
Traceback
E
Dahili fonksiyon
Açıklama:
Soru kökünde verilen kodda, faktöriyel() kendini çağıran bir özyinelemeli fonksiyondur. Bu fonksiyonu pozitif bir tamsayı ile çağırdığımızda, her adımda sayıyı azaltarak özyinelemeli olarak kendini çağıracaktır. Her fonksiyon çağrısında, sayı bire eşit oluncaya dek, kendinden bir küçük sayının faktöriyeli ile çarpar.
Python’da bir fonksiyonun içerisinden diğer fonksiyonların çağrılabilmesinin yanında, fonksiyonun kendisini çağırması da mümkündür. Bu tür yapılar özyinelemeli fonksiyonlar olarak adlandırılır.
Özyineleme, bir şeyi kendi içerisinde tanımlama sürecidir. Daha kolay anlaşılması amacıyla fiziksel dünyadan bir örnek verebiliriz. Birbirine paralel olarak konumlan- dırılmış iki ayna olduğunu düşünelim. Aynaların arasına konulan herhangi bir nesne, özyinelemeli olarak her iki aynada da yansıyacaktır.

Soru 5

Aşağıdaki kodun çıktısı hangisidir?
sayı_listesi = [1, 5, 4, 6, 8, 11, 3, 12]
yeni_liste = list( filter( lambda x: ( x % 2 == 1 ) , sayı_listesi ) )
print(yeni_liste)

Seçenekler

A
[1, 5, 11, 3]
B
[6, 8, 11, 3]
C
[1, 4, 3, 12]
D
[1, 11, 3, 12]
E
[4, 6, 8, 12]
Açıklama:
Soru kökünde verilen kod bir listedeki elemanların sadece tek olanlarını filtrelemektedir. Buna göre doğru yanıt A seçeneğidir.
Python’daki filter() fonksiyonu, bir fonksiyonu ve bir listeyi argüman olarak alır. Fonksiyon, listedeki tüm öğelerle birlikte çağrılır ve fonksiyonun Doğru olarak değerlendirdiği öğeleri içeren yeni bir liste döndürür.
( x % 2 == 1 ) 2 ye bölümünden kalan 1 yani tek sayıları bulduğundan yeni liste tek sayıları içeren bir liste olacaktır.

Soru 6

Aşağıdaki kod ile ilgili seçeneklerden hangisi hatalıdır?
def a_fonk(): x = 10 def b_fonk(): global x x = 15 print("A fonksiyon çağrısından önce x:", x) b_fonk() print("B fonksiyon çağrısından sonra x:", x) a_fonk() print("Kod bloğunda x:", x)

Seçenekler

A
İç içe geçmiş b_fonk() fonksiyonu içinde global bir değişken tanımlanmıştır.
B
a_ fonk() fonksiyonu içinde, x’in global anahtar sözcüğün hiçbir etkisi yoktur.
C
a_fonk() fonksiyonunu çağırmadan önce ve sonra x = 10 olmaktadır.
D
a_fonk() fonksiyonunun dışında, x değişkeni x = 15 değerini almaktadır.
E
b_fonk() fonksiyonu içinde herhangi bir değişiklik yaparsak, değişiklikler a_fonk() dışında görünmez.
Açıklama:
b_fonk() fonksiyonu içinde herhangi bir değişiklik yaparsak, değişiklikler yerel kapsamın dışında, yani a_fonk() dışında görünür. E seçeceği hatalıdır.
Kod Çıktısı:
A fonksiyon çağrısından önce x: 10 B fonksiyon çağrısından sonra x: 15 Kod bloğunda x: 15 Örnek programda, iç içe geçmiş b_fonk() fonksiyonu içinde global bir değişken tanımlanmıştır. a_ fonk() fonksiyonu içinde, x’in global anahtar sözcüğün hiçbir etkisi yoktur.
a_fonk() fonksiyonunu çağırmadan önce ve sonra, x değişkeni yerel değişkenin değerini alır, yani x = 10 olmaktadır. a_fonk() fonksiyonunun dışında, x değişkeni b_fonk() fonksiyonunda tanımlanan değeri alır, yani x = 15 değerini almaktadır. Çünkü b_fonk() fonksiyonu (yerel kapsam) içinde global değişken oluşturmak için x için “global” anahtar sözcüğü ile kullanılmıştır.
b_fonk() fonksiyonu içinde herhangi bir değişiklik yaparsak, değişiklikler yerel kapsamın dışında, yani a_fonk() dışında görünür.

Soru 7

Aşağıdaki kod çıktısı hangi seçenekte doğru verilmektedir?

Seçenekler

A
Çıktı1: 1
Çıktı2: 1
B
Çıktı1: 2
Çıktı2: 2
C
Çıktı1: 1
Çıktı2: 2
D
Çıktı1: 2
Çıktı2: 1
E
Çıktı1: 1, 2
Çıktı2: 2
Açıklama:
Yerel olmayan (nonlocal) olarak tanımlanmış bir değişkenin değeri değiştirildiğinde, değişiklikler yerel (local) değişkende de görünür. Doğru seçenek B'dir.
Örnek kodda iç içe oluşturulmuş fonksiyon2() fonksiyonu bulunmaktadır. Yerel olmayan bir değişken oluşturmak için nonlocal anahtar kelimesi kullanılmaktadır. fonksiyon2(), fonksiyon1() fonksiyonunun kapsamında tanımlanır.

Soru 8

Python'da modüller ile ilgili bilgilerden hangisi hatalıdır?

Seçenekler

A
Modül, python koduna sahip bir dosyadır.
B
Dosya adı modül adı olarak kullanılır.
C
Modüller kodun yeniden kullanılabilirliğini sağlamaktadır.
D
Modülü kod içerisinde kullanabilmek için kullanılan “export" anahtar kelimesi kullanılır.
E
Python kodunu içeren bir dosya, örneğin: islemler.py, modül olarak adlandırılır ve modül adı “islemler” olur.
Açıklama:
Modülü kod içerisinde kullanabilmek için modüller “import” anahtar kelimesi ile koda dahil edilir.
Modül, python koduna sahip bir dosyadır. Kod, değişkenler, işlevler veya tanımlanmış sınıf biçiminde olabilir. Yani bir kod kütüphanesidir. Uygulamada kullanılacak fonksiyonları içerir. Dosya adı modül adı olarak kullanılır.
Python kodunu içeren bir dosya, örneğin: islemler.py, modül olarak adlandırılır ve modül adı “islemler” olur.
Büyük programları küçük yönetilebilir ve düzenlenmiş dosyalara bölmek için modüller kullanılmaktadır. Ayrıca, modüller kodun yeniden kullanılabilirliğini sağlamaktadır. İçeriklerini farklı programlara kopyalamak yerine en çok kullanılan fonksiyonlar bir modül içerisinde tanımlanabilir. Bu modülleri kullanabilmek için import anahtar kelimesi ile koda dahil edilirler.

Soru 9

Python programlama dilinde bir dizin yapısı altında toplanmış, birbiri ile bağlantılı, alakalı modüllere ne ad verilir?

Seçenekler

A
Paket
B
Değişken
C
Fonksiyon
D
Argüman
E
Sözdizimi
Açıklama:
Bilgisayar ortamında, benzer nesneler daha hızlı erişim ve kategorizasyon için genellikle aynı isimli kla- sör yapıları içerisinde saklanır. Örneğin tüm fotoğrafları bir klasör altında tutabiliriz. Python programlama dilinde de, bir dizin yapısı altında toplanmış, birbiri ile bağlantılı, alakalı modüllere paket adı verilmekte- dir. Dolayısıyla, paket modüllerden oluşan bir yapıdır.
Hazırladığımız program çok sayıda modülle büyüdüğü için benzer modülleri bir pakete, farklı modül- leri farklı paketlere yerleştiririz. Bu, bir projeyi (programı) yönetmeyi kolay ve kavramsal olarak net hale getirecektir.
Benzer şekilde, bir dizin alt dizinleri ve dosyaları içerebileceğinden, bir Python paketinin alt paketleri ve modülleri olabilir. Python’un bir yapıyı paket olarak kabul etmesi için, __init__.py adlı bir dosya içermelidir. Bu dosya boş bırakılabilir, ancak genellikle o paketin başlatma kodu bu dosyaya yerleştirilir.

Soru 10

Aşağıdaki kodun çıktısı hangisidir?

Seçenekler

A
16.0
4.0
4.0
B
256.0
16.0
16.0
C
256.0
256.0
16.0
D
256.0
16.0
4.0
E
4.0
4.0
1.0
Açıklama:
Çözüm açıklamasına göre doğru seçenek A'dır.
Python dilinde, modülü bir bütün olarak içe aktarmadan sadece ihtiyaç duyulan belirli fonksiyonları içe aktarabiliriz. Kod örneğinde matematik modülünden yalnızca sqrt özelliğini içe aktarıldı. Böyle durumlarda nokta operatörü kullanılmaz.

Soru 11

I. Belirli bir görev için hazırlanmış fonksiyonlardır.
II.Python dilinin kullanıma hazır çeşitli fonksiyonlarındandır.
III. Büyük bir programı küçük bölümlere ayırmaya yardımcı olur.
IV. Programın anlaşılması, bakımı ve hata ayıklaması zordur.
Kullanıcı tanımlı fonksiyonlar ile ilgili olarak yukarıda verilen maddelerden hangileri doğrudur?

Seçenekler

A
I ve II
B
II ve III
C
I ve III
D
II ve IV
E
III ve IV
Açıklama:
Kullanıcılar tarafından oluşturulan fonksiyonlardır. Belirli bir görev için hazırlanmış fonksiyonlar, kullanıcı tanımlı fonksiyonlar olarak adlandırılır. Python ile öntanımlı olarak gelen fonksiyonlara yerleşik, dahili fonksiyonlar denir. Kullanıcı tanımlı fonksiyonlar, büyük bir programı küçük bölümlere ayırmaya yardımcı olur, bu da programın anlaşılmasını, bakımını ve hata ayıklamasını kolaylaştırır. Büyük proje üzerinde çalışan programcılar, farklı fonksiyonlar yaparak iş yükünü bölebilir. Bu nedenle cevap C seçeneğidir.

Soru 12

I. Kodun temiz ve düzenli görünmesini sağlar.
II. Bu fonksiyonlarda hata ayıklamak kolaydır.
III. Bu fonksiyonlar az bellek ve zaman harcadıkları için verimlidir.
IV. Karmaşık bir görev daha basit alt problemlere bölünebilir.
Yukarıdakilerden hangileri özyinelemeli fonksiyonların avantajlarındandır?

Seçenekler

A
I ve II
B
II ve III
C
I ve IV
D
II ve IV
E
III ve IV
Açıklama:
Özyinelemeli fonksiyonlar, kodun temiz ve düzenli görünmesini sağlar. Karmaşık bir görev, özyineleme kullanılarak daha basit alt problemlere bölünebilir. Özyinelemeli fonksiyonlar, çok fazla bellek ve zaman harcadıkları için pahalıdır, verimsizdir. Özyinelemeli fonksiyonlarda hata ayıklamak zordur. Bu nedenle cevap C seçeneğidir.

Soru 13

Python’da normal işlevler ..... anahtar sözcüğü kullanılarak tanımlanırken, anonim işlevler .... anahtar sözcüğü kullanılarak tanımlanır.
Yukarıdaki ifadede boş bırakılan yerlere sırasıyla aşağıdakilerden hangisi gelmelidir?

Seçenekler

A
def, lambda
B
def, filter
C
map, def
D
list, map
E
map,filter
Açıklama:
Python’da normal işlevler def anahtar sözcüğü kullanılarak tanımlanırken, anonim işlevler lambda anahtar sözcüğü kullanılarak tanımlanır. Bu nedenle cevap A seçeneğidir.

Soru 14

I. filter() ve map() fonksiyonu, bir fonksiyonu ve bir listeyi argüman olarak alır.
II. Fonksiyon gövdesinde bildirilen bir değişken yerel olmayan değişken olarak adlandırılır.
III. Fonksiyonun dışında bildirilen bir değişken global değişkendir.
IV. Yerel kapsamı tanımlanmamış iç içe fonksiyonlarda yerel değişkenler kullanılır.
Yukarıda lambda/anonim fonksiyonlar ile ilgili olarak verilenlerden hangileri doğrudur?

Seçenekler

A
I ve II
B
I ve III
C
II ve III
D
II ve IV
E
I ve IV
Açıklama:
Python’da, fonksiyonun dışında veya global kapsamda bildirilen bir değişken, global değişken olarak isimlendirilir. Bu, global bir değişkene fonksiyonun içinden veya dışından erişilebileceği anlamına gelmektedir. Fonksiyon gövdesinde veya yerel kapsamda bildirilen bir değişken, yerel değişken olarak adlandırılır.Yerel kapsamı tanımlanmamış iç içe fonksiyonlarda yerel olmayan değişkenler kullanılır. Bu nedenle cevap B seçeneğidir.

Soru 15

-Python koduna sahip bir dosyadır.
-Kod, değişkenler, işlevler veya tanımlanmış sınıf biçiminde olabilir.
- Bir kod kütüphanesidir.
-Uygulamada kullanılacak fonksiyonları içerir.
-Büyük programları küçük yönetilebilir ve düzenlenmiş dosyalara bölmek için kullanılır.
Yukarıda özellikleri verilen yapıya ne ad verilmektedir?

Seçenekler

A
Modül
B
Fonksiyon
C
Paket
D
Paket yöneticisi
E
Akış kontrolü
Açıklama:
Modül, python koduna sahip bir dosyadır. Kod, değişkenler, işlevler veya tanımlanmış sınıf biçiminde
olabilir. Yani bir kod kütüphanesidir. Uygulamada kullanılacak fonksiyonları içerir. Dosya adı modül adı olarak kullanılır. Büyük programları küçük yönetilebilir ve düzenlenmiş dosyalara bölmek için modüller kullanılmaktadır. Bu nedenle cevap A seçeneğidir.

Soru 16

I. Aktarılan modüllerde yapılacak tüm işlemler, modülün eski adı üzerinden yapılmalıdır.
II. Bir modülün içindeki tanımlar, başka bir modüle import anahtar sözcüğü ile aktarılır.
III. Bir modül farklı bir isimlendirme ile programa aktarılabilir.
IV. Kod içerisinden de yeni verilen isim üzerinden “:” operatörüyle içerdiği fonksiyonlara erişilebilir.
Yukarıda Python'da modül yapısı ile ilgili olarak verilen ifadelerden hangileri doğrudur?

Seçenekler

A
I ve II
B
II ve III
C
I ve III
D
II ve IV
E
I ve IV
Açıklama:
Bir modülün içindeki tanımlar, başka bir modüle veya Python’daki etkileşimli yorumlayıcıya aktarılabilir. Bunu yapmak için import anahtar sözcüğü kullanılmaktadır. Python’da bir modül, farklı bir isimlendirme ile programa aktarılabilir. Kod içerisinden de yeni verilen isim üzerinden “.” operatörü vasıtasıyla içerdiği fonksiyonlara erişilebilir. Artık yapılacak tüm işlemler, modülün yeni adı üzerinden yapılmalıdır. Eski modül adının bir geçerliliği yoktur. Bu nedenle cevap B seçeneğidir.

Soru 17

Python'da paket yapısı ile ilgili olarak aşağıda verilen ifadelerden hangisi yanlıştır?

Seçenekler

A
Python’un bir yapıyı paket olarak kabul etmesi için, __init__.py adlı bir dosya içermelidir.
B
Paket modüllerden oluşan bir yapıdır.
C
Nokta (.) operatörü kullanılarak paketlerden modüller içe aktarılır.
D
Paket yapısında en az 3 adet dosya bulunmalıdır.
E
Paketler içe aktarılıken, modül arama yoluna benzer şekilde sys.path içinde tanımlanan dizinler listesini kontrol edilir.
Açıklama:
Python’un bir yapıyı paket olarak kabul etmesi için, __init__.py adlı bir dosya içermelidir. Nokta (.) operatörü kullanılarak paketlerden modüller içe aktarılır. Python, paketleri içe aktarırken, modül arama yoluna benzer şekilde sys.path içinde tanımlanan dizinler listesini kontrol eder. Bu nedenle cevap D seçeneğidir.

Soru 18

Python dilinde uygulama geliştirenler, kendi hazırladıkları paketleri diğer kullanıcılarının da erişimine
açabilmektedir. Bu paylaşılan Python paketlerinin yüklenebilmesi amacıyla ortak bir yükleyici oluşturulmuştur. Bu paket yükleme ortamına ..... adı verilmektedir.
Yukarıda boş bırakılan yere aşağıdakilerden hangisi gelmelidir?

Seçenekler

A
Paket yöneticisi (pip)
B
Paket yapısı
C
Akış yapısı
D
Modül yapısı
E
Fonksiyonlar
Açıklama:
Python dilinde uygulama geliştirenler, kendi hazırladıkları paketleri diğer kullanıcılarının da erişimine
açabilmektedir. Bu paylaşılan Python paketlerinin yüklenebilmesi amacıyla ortak bir yükleyici oluşturulmuştur. Bu paket yükleme ortamına “pip” adı verilmektedir. Pip’in “Pip installs Python” ya da “Pip installs packages” şeklinde açılımları mevcuttur. Bu nedenle cevap A seçeneğidir.

Soru 19

I. Python geliştiricileri dışında hazırlanmış ve kullanıcıların hizmetine sunulmuş araçlardır.
II. Bu paketleri kullanabilmek için kurulumlarının yapılması gerekmektedir.
III. Bilgisayarda Python kurulum klasörü altında bulunan lib klasöründen erişilebilir.
IV. Python kurulumu sırasında gelen, kütüphanesinde bulunan paketlerdir.
Yukarıda verilen ifadelerden hangileri üçüncü şahıs paketleri için doğrudur?

Seçenekler

A
I ve II
B
II ve III
C
I ve IV
D
II ve IV
E
I ve III
Açıklama:
Bu paketler, Python geliştiricileri dışında hazırlanmış ve kullanıcıların hizmetine sunulmuş araçlardır. Bu paketler, standart paketler gibi gelmediğinden, kullanabilmek için kurulumlarının yapılması gerekmektedir. Bu nedenle cevap A seçeneğidir.

Soru 20

I. Paket oluşturmak için, Python kodlarını içeren .py uzantılı dosyaları bir klasör altında toplanmalıdır.
II.Paket klasörünü içeri aktardıktan sonra eklenen klasörün gerçekten bir paket olup olmadığı __ path__ ve __package__ niteliklerini kullanarak test edilir.
III. __path__ niteliği sadece paketlerde mevcuttur.
IV. __package__ niteliği bir pakette test edildiğinde boş bir metin döndürecektir.
Paket oluşturma ile ilgili verilen bilgilerden hangisi yanlıştır?

Seçenekler

A
Yalnız I
B
Yalnız II
C
Yalnız III
D
Yalnız IV
E
I ve II
Açıklama:
Paket oluşturmak için, Python kodlarını içeren .py uzantılı dosyaları bir klasör altında toplanması yeterlidir. Böylece klasör adını taşıyan bir paket elde edilecektir.Paket klasörünü içeri aktardıktan sonra eklediğimiz klasörün gerçekten bir paket olup olmadığını __ path__ ve __package__ niteliklerini kullanarak test edebiliriz. __path__ niteliği sadece paketlerde mevcuttur. __package__ niteliği de eğer bir pakette test edilirse paket ismini, bir modülde test edilirse de boş bir metin döndürecektir. Bu nedenle cevap D seçeneğidir.

Ünite 4

Soru 1

Python dilinde kayan noktalı (float) sayı veri tipi, ondalık sayılar işlemek için kullanılır. Ancak bu veri tipi ile yapılan işlemler beklenenden farklı sonuçlar verebilir. Örneğin 1,1 ve 2,2 sayılarının toplamının 3,3 değerini eşit olması bekleriz, ancak bu değerleri kayan noktalı sayı veri tipinde toplarsak, Python sonucun 3,3’e eşit olmadığını söyler. Bunun sebebi aşağıdakilerden hangisidir?

Seçenekler

A
Python dilinin kendine özgü yapısı
B
Python dilinin hatalı bir şekilde geliştirilmiş olması
C
Bilgisayarların ikili sayı sisteminden kaynaklanan donanımsal kısıtlamaları
D
Python dilinin bilgisayarın donanımını doğru kullanamaması
E
Bilgisayarın kapasitesinin Python dilini çalıştırmak için yetersiz kalması
Açıklama:
Sayfa 101 “Bilgisayarın yalnızca iki tabanındaki sayıları (0 ve 1) anlaması nedeniyle, kayan noktalı sayıların bilgisayar donanımında ikili tabanda kesirler olarak uygulandığı görülmektedir. … bu durum Python’da bir hata değildir, sadece bilgisayar donanım sınırlamasıdır.”

Soru 2

Python dilinde kayan noktalı (float) sayı veri tipi, ondalık sayılar işlemek için kullanılır. Ancak bu veri tipi ile yapılan işlemler beklenenden farklı sonuçlar verebilir. Örneğin 1,1 ve 2,2 sayılarının toplamının 3,3 değerini eşit olması bekleriz, ancak bu değerleri kayan noktalı sayı veri tipinde toplarsak, Python sonucun 3,3’e eşit olmadığını söyler.
Bu durumun önüne geçmek için, söz konusu toplama işlemindeki sayılar hangi veri tipinde ifade edilmelidir?

Seçenekler

A
Float
B
Decimal
C
Fraction (kesir)
D
Math
E
Int (tam sayı)
Açıklama:
Sayfa 101 Sayfa 101 “Bilgisayarın yalnızca iki tabanındaki sayıları (0 ve 1) anlaması nedeniyle, kayan noktalı sayıların bilgisayar donanımında ikili tabanda kesirler olarak uygulandığı
görülmektedir. … Bu sorunu aşmak için Python ile birlikte gelen ondalık modülü yani “decimal” kullanılabilir.”

Soru 3

film=["Barış Akarsu Merhaba", "Müjdemi İsterim", "Müstakbel Damat", "Tamirhane", "Hep Yek 5"]
Aşağıda yer alan Python kod satırlarından hangisi, yukarıdaki filmler listesi içerisinden birini rastgele olarak seçerek film ismini döndürür?

Seçenekler

A
print(random.shuffle(film))
B
print(random.random())
C
print(random.choice(film))
D
print(random.randrange(0, 4))
E
print(film)
Açıklama:
Sayfa 104’te verilen örnekte de görüldüğü üzere,
print(random.choice( dizi )) şeklinde verilen bir komut
“Dizi” isimli liste nesnesi içerisinde yer alan değerlerler içerisinden rastgele bir değer döndürür.

Soru 4

import random
film=["Barış Akarsu Merhaba", "Müjdemi İsterim", "Müstakbel Damat", "Tamirhane", "Hep Yek 5"]
Aşağıda yer alan Python kod satırları, yukarıdaki film isimli liste nesnesinden rastgele bir film adını sonuç olarak döndürmektedir. Seçeneklerden hangisi, bu kod parçası ile aynı işlevi yerine getirmez?
rastgele_film = random.choice(film)
print(rastgele_film)

Seçenekler

A
random.shuffle(film)
rastgele_film = film[0]
print(rastgele_film)
B
rastgele_film = film [random.randrange(0, 4)]
print(rastgele_film)
C
random.shuffle(film)
print(film)
D
print(film [random.randrange(0, 4)])
E
random.shuffle(film)
print(film[0])
Açıklama:
C'de verilen kod diğerleri gibi film isimli liste nesnesinden rastgele bir sonuç döndürmek yerine, listede yer alan nesnelerin sırasını karıştırarak tümünü birden sonuç olarak döndürür. Sayfa 104 ve Sayfa 105’e yer alan örneklerin anlaşılması ile bu sorunun çözümü mümkündür.

Soru 5

film=["Barış Akarsu Merhaba", "Müjdemi İsterim", "Müstakbel Damat", "Tamirhane", "Hep Yek 5", “Niloya”, “Aya Sihirli Yolculuk”, “Karlar Kraliçesi ve Prenses”, “Aslan Hürkuş Görevimiz Gökbey”]
Yukarıdaki film isimli liste nesnesinde, “Niloya” ile başlayıp listenin sonuna kadar yer alan filmler, çocuklara yönelik, diğerleri ise yetişkinlere uygun filmlerdir. Aşağıdaki kod parçalarından hangisi ile bu listeden yetişkin ve çocuk filmlerinin ayrıldığı iki ayrı liste nesnesi oluşturulmuştur?

Seçenekler

A
cocuk_film=film[5:]
yetiskin_film= film[0:5]
B
cocuk_film=film[0:5]
yetiskin_film= film[5:8]
C
cocuk_film = film[0:5]
del film[0:5]
yetiskin_film= film [5:8]
D
film.reverse()
cocuk_film= film[0:4]
yetiskin_film= film[0:5]
E
cocuk_film=film[5])
yetiskin_film=film[1])
Açıklama:
A'daki kod satırları, çocuklara ve yetişkinlere yönelik filmleri doğru olarak iki ayrı değişkene atar. “Film” isimli listenin 6 sıradaki 5 indeksli elemanı olan “Niloya” ile başlayıp en sona kadar tüm elemanlar “cocuk_film” isimli liste nesnesine, 0 indeksli birinci eleman olan "Barış Akarsu Merhaba" ile başlayıp 4 indeksli beşinci eleman olan "Hep Yek 5" dahil diğer elemanlar “yetişkin_film” isimli liste nesnesine aktarılır. Sayfa 107’deki Liste Dilimleme/Bölme başlığı altında benzer işlemler anlatılmaktadır. Diğer seçeneklerde yer verilen “del” deyimi sayfa 109’da Liste Elemanlarını Silme başlığında, reverse ise Tablo 4.2’de açıklanmaktadır.

Soru 6

Demet (Tuple) ve Liste (List) Python dilindeki birden fazla eleman içerebilen veri tipleridir ve üzerlerinde benzer işlemler gerçekleştirilebilir. Bu veri tiplerinin her ikisi için de kullanılamayan işlem hangisidir?

Seçenekler

A
Negatif indeksler yolu ile elemanlarına erişilebilir.
B
Üzerlerinde yineleme döngüsü (for) işlemleri gerçekleştirilebilir.
C
Dilimleme operatörü (:) kullanılarak içlerindeki bir grup elemana erişilebilir.
D
del anahtar kelimesi ile tamamen silinebilirler.
E
İçindeki elemanların bazıları silinebilirler.
Açıklama:
Sayfa 118’de anlatıldığı üzere demet (tuple) tipi veriler istelerden farklı olarak, değişmez yapılardır. Bu, bir demetin elemanları atandıktan sonra değiştirilemeyeceği ya da silinemeyeceği anlamına gelmektedir. Sayfa 114’te de “Demetlerde silme, ekleme, indeks değiştirme gibi işlemlere izin verilmez.” denmektedir.

Soru 7

yaban_demeti = "menekşe", "leylak", "sümbül", "gelincik", "nergis"
cicekci_demeti = "gül", "karanfil", "zambak", "lale"
karisik_demet = cicekci_demeti + yaban_demeti
Yukarıda Python programlama dilinde, yaban_demeti ve cicekci_demeti isimleri ile paketlenmiş iki demet (tuple) tipi nesne yer almaktadır. Bu nesnelere dayanarak karisik_sepet nesnesi oluşturulmuştur.
Buna göre, seçeneklerde verilen kod ve çıktı eşleşmelerinin hangisi hatalıdır?

Seçenekler

A
# Değer olarak 9 döndürür
print(len(karisik_demet))
B
# Değer olarak “sümbül” döndürür
print(karisik_demet[-3])
C
# Değer olarak “karanfil” döndürür
print(karisik_demet[1])
D
# Değer olarak “lale” döndürür
print(karisik_demet[-1])
E
# Değer olarak “gelincik” döndürür
print(karisik_demet[-2])
Açıklama:
D seçeneğinde verilen sonuç hatalıdır. karisik_demet nesnesinin ilk 4 elemanı cicekci_demeti nesnesinin elemanları olan “gül”, “karanfil”, “zambak”, “lale” olup diğer elemanlar sırası ile yaban_demeti nesnesinin elemanları olan “menekşe”, “leylak”, “sümbül”, “gelincik”, “nergis” olacaktır. -1 negatif indeksi “lale” değil “nergis” değerini döndürür.

Soru 8

Python dilindeki dize (string) veri tipine ilişkin olarak aşağıdakilerden hangisi söylenemez?

Seçenekler

A
“+” operatörü ile iki veya daha fazla dize birleştirilebilir.
B
İndeks kullanılarak bir dize nesnesinin içinde yer alan bir harf değiştirilebilir.
C
Bir harf grubunun bir dizede yer alıp almadığı “in” anahtar kelimesi ile test edilebilir.
D
len() yerleşik fonksiyonu ile kaç karakterden oluştuğu belirlenebilir.
E
for döngüsü kullanılarak dize değişkeni üzerinde yineleme yapılabilir.
Açıklama:
“İndeks kullanılarak bir dize nesnesinin içinde yer alan bir harf değiştirilebilir.” önermesi hatalıdır. Sayfa 124’te belirtildiği ve örnekle açıklandığı üzere, “Dizeler de tıpkı demetler gibi değişmezdir. Bir dizenin elemanları atandıktan sonra değiştirilemeyeceği anlamına gelmektedir.”.

Soru 9

Elimizde, 3 farklı çiçekçi dükkanında satılan çiçek türlerinin yer aldığı listeler bulunmaktadır. Bazı çiçek türleri birden fazla dükkanda satılmaktadır. Örneğin her üç dükkanda da gül satışı yapılmakta, hem birinci ve hem de üçüncü dükkanda lale bulunmaktadır.
Python dili ile geliştirdiğimiz uygulamada, her bir dükkanda yer alan çiçek türlerini ayrı ayrı bilmemiz, ama aynı zamanda tüm çiçekçilerde satılan çiçeklerin yer aldığı bir ortak çoklu eleman veri nesnesi oluşturmamız gerekmektedir. Bu nesnede her çiçek türü bir kez yer almalıdır.
Buna göre, çoklu eleman içeren veri tiplerinden hangisi, çiçekçilerde satılan çiçekleri içeren çoklu elemanlı veri nesnelerini oluşturmak için en uygun veri tipidir?

Seçenekler

A
Liste (list)
B
Dize (string)
C
Demet (tuple)
D
Küme (set)
E
Sözlük (Dictionary)
Açıklama:
Yukarıdaki sorunun en kolay çözümü “Küme” veri tipi kullanılmasıdır. union() metodu kullanılarak her bir çiçekçi dükkanı için ayrı ayrı oluşturulan küme tipindeki çoklu elemanlı veri nesneleri birleştirildiğinde, birden fazla dükkanda satılan çiçeklerin yinelenmediği bir küme oluşmuş olur. Union () metoduna sayfa 136’da yer alan Tablo 4.4’te yer verilmiştir. Sayfa 149’a ise “Küme, sıralanmamış bir öğeler topluluğudur. Her küme elemanı benzersizdir yani tekrar etmemeli ve değiştirilemez olmalıdır.” denerek aynı elemanın bir kümede birden fazla tekrarlanamayacağı ifade edilmiştir.

Soru 10

kardesler = [{'isim': Neriman', 'yaş': 21},{'isim': Firuzan', 'yaş': 19},{'isim': Altan', 'yaş': 17},{'isim': İlhan', 'yaş': 15},{'isim': Şafak', 'yaş': 12}]
Yukarıdaki değişkende, Python programlama dili veri tiplerinin hangileri kullanılmıştır?

Seçenekler

A
Demet (tuple) ve dize (string)
B
Liste (list) ve sözlük (dictionary)
C
Sadece liste (list)
D
Sadece sözlük (dictionary)
E
Sadece demet (tuple)
Açıklama:
Cevap “Liste (list) ve sözlük (dictionary)”
Kardesler = [], sayfa 105’te tanımlandığı şekli ile Liste (list) tipi bir değişkendir. Listenin virgülle ayrılmış her bir elemanı, örneğin {'isim': Neriman', 'yaş': 21}, sayfa 109’da tanımlandığı şekli ile anahtar-değer çiftlerinden oluşan sözlük (Dictionary) tipinde değişkenlerdir.

Ünite 5

Soru 1

dosya = open("metin_dosyası.txt",'w+')
Python programlama dilinde yukarıdaki kod satırı kullanılarak açılan dosyada yapılabilecek işlemler ile ilgili olarak hangisi söylenemez?

Seçenekler

A
Açılan dosya okunabilir.
B
Açılan dosyaya yazma işlemi yapılabilir.
C
Dosya metin (text) modunda açılmıştır.
D
Dosya mevcut değilse yaratılır.
E
Dosya silinir.
Açıklama:
Sayfa 160 Tablo 5.1’de belirtildiği üzere +, dosyayı okuma ve yazma güncellemesi için açar.
“w” ise “Yazmak için bir dosya açar. Mevcut değilse yeni bir dosya oluşturur veya dosya varsa içeriğini siler, sıfırlar.” Dosya varsayılan mod olan text modunda açılmıştır.

Soru 2

harita.bmp isimli dosya bir resim dosyasıdır. Hangi kod satırında bu dosyayı Python programlama dilinde açmak için en uygun yöntem kullanılmaktadır?

Seçenekler

A
harita = open("harita.bmp")
B
harita = open("harita.bmp", "r+")
C
harita = open("harita.bmp", "b")
D
harita = open("harita.bmp", "x")
E
harita = open("harita.bmp", "w")
Açıklama:
Cevap harita = open("harita.bmp", "b")
harita.bmp bir resim dosyası olduğu için binary veri içerir. Komutta belirtilen “b” modu, Sayfa 160 Tablo 5.1’de belirtildiği üzere dosyayı ikili (binary) modda açar. Yine sayfa 160’te belirtildiği üzere “Bu mod, resim veya yürütülebilir dosyalar (exe uzantılı) gibi metin olmayan dosyalarla
uğraşırken kullanılacak moddur.” Bu tür veri içeren dosyalarda işlem yapmak için bu modu kullanmak uygun olacaktır.

Soru 3

with open("metin_dosyası.txt",'w',encoding = 'utf-8') as dosya:
dosya.write("Python sınavı\n")
Yukarıdaki kodun ilk satırında yer alan “with…” deyiminin dosya işleminde kullanım sebebi nedir?

Seçenekler

A
“with…” ifadesinin içindeki bloktan çıkıldığında dosyanın kendiliğinden kapatılması sağlanır.
B
“with…” ifadesi sayesinde belirtilen dosya yoksa oluşturulur.
C
“with…” ifadesi ile dosyaya yazılanların varolan dosyanın içeriğine eklenmesi sağlanır.
D
“with…” ifadesi ile dosyanın tüm içeriği silinir yeni içerikler boş dosyaya eklenir.
E
“with…” ifadesi, dosyaya yazma işlemi yapabilmek için zorunludur.
Açıklama:
Cevap: “with…” ifadesinin içindeki bloktan çıkıldığında dosyanın kendiliğinden kapatılması sağlanır.
Sayfa 161’de belirtildiği üzere “Bir dosyayı kapatmanın en iyi yolu “with” deyiminin kullanılmasıdır. “with” deyimi sayesinde, with ifadesinin içindeki bloktan çıkıldığında dosyanın kapatılması sağlanmaktadır. Ayrıca close() fonksiyonu dahili olarak çağrıldığı için tekrar çağrılmasına gerek duyulmaz.”

Soru 4

istiklalMarsi.txt dosyası, İstiklal Marşı’mızın ilk iki kıtasını içermektedir. Buna göre aşağıdaki kod Python’da çalıştırıldığında, hangi sonuç döndürülür?
with open("istiklalMarsi.txt",'r',encoding = 'utf-8') as dosya:
print(dosya.readline(6))

Seçenekler

A
Korkma
B
sancak
C
Korkma, sönmez bu şafaklarda yüzen al sancak;
D
Sana olmaz dökülen kanlarımız sonra helâl,
E
Kim bu cennet vatanın uğruna olmaz ki fedâ?
Açıklama:
Cevap: Korkma
Tablo 5.2’de (sayfa 163) açıklandığı şekli ile “Dosyadan satırların bir listesini okuyarak döndürür.” Parametre belirtilmişse en fazla parametrede belirtilen bayt/ karakter okur. Sorudaki print(dosya.readline(6)) satırı dosyadaki ilk 7 bayt ile ifade edilen Korkma harflerini döndürecektir.

Soru 5

Python ile yaptığımız dosya işlemlerinin hangi dizinde gerçekleştiğini bilmek için, programın mevcut çalışma dizini (Current Working Directory - CWD) bilgisine ihtiyaç duyarız. Bu bilgi nasıl elde edilir?

Seçenekler

A
“with” deyiminin kullanılması ile
B
“try… finally” bloğu kullanılarak
C
“os” modülünün “chdir()” yöntemi kullanılarak
D
“shutil” modülü içindeki “rmtree()” yöntemi kullanılarak
E
“os” modülünün “getcwd()” yöntemi kullanılarak
Açıklama:
Cevap: “os” modülünün “getcwd()” yöntemi kullanılarak
Sayfa 164’te belirtildiği üzere, “Programın mevcut çalışma dizini (Current Working Directory - CWD), os modülünün getcwd() yöntemi kullanılarak elde edilebilir.”

Soru 6

Python ile yaptığımız dosya işlemleri, programın mevcut çalışma dizini (Current Working Directory - CWD) klasöründe gerçekleştilir. Mevcut çalışma klasörünü D sürüsündeki “Temp” klasörü olarak belirlemek için aşağıdaki kod satırlarından hangisi kullanılmalıdır?

Seçenekler

A
os.getcwd(“D:\Temp”)
B
os.cwd(“D:\Temp”)
C
os.chdir(“D:\Temp”)
D
os.mkdir(“D:\Temp”)
E
os.rmdir(“D:\Temp”)
Açıklama:
Cevap:
os.chdir(“D:\Temp”)
Sayfa 165’te belirtildiği üzere “Mevcut çalışma dizini (CWD) değiştirmek için os.chdir() yöntemi kullanılmaktadır.”

Soru 7

Python dilinin için “shutil” modülü içindeki rmtree() metodu, parametre olarak mevcut çalışma dizini (CWD) içerisindeki bir dizin ismi verilerek kullanıldığında, ne sonuç verir?

Seçenekler

A
İsmi verilen dizinin içeriğini listeler.
B
İsmi verilen dizini içerisinde yer alan dosyalar ile beraber siler.
C
İsmi verilen dizinin içerisindeki dosyaları siler.
D
İsmi verilen dizinin bir kopyasını üretir.
E
İsmi verilen dizini mevcut çalışma dizini (CWD) olarak belirler.
Açıklama:
Cevap: İsmi verilen dizini içerisinde yer alan dosyalar ile beraber siler.
Sayfa 167’de belirtildiği üzere “boş olmayan bir dizini kaldırmak için “shutil” modülü içindeki rmtree() metodu kullanılabilir.”

Soru 8

Python dilinin için os modülü içinde yer alan rmdir() yöntemi aşağıdaki durumların hangisinde bir hata mesajı döndürmeden işlemi gerçekleştirebilecektir?

Seçenekler

A
Parametre olarak ismi verilen bir dosyayı ve içindeki verileri silme
B
Parametre olarak ismi verilen bir dizini ve içindeki dosyaları silme
C
Mevcut çalışma dizinini (CWD) silme
D
Parametre olarak ismi verilen içi boş bir dizini silme
E
Parametre olarak ismi verilen boş bir dosyayı silme
Açıklama:
Cevap:
Parametre olarak ismi verilen boş bir dizini silme
Sayfa 167’de yer alan örnekte görüldüğü üzere os.rmdir() metodu
mevcut çalışma dizinini (CWD) içerisindeki bir dizini silmek için kullanılmaktadır. Ancak parametre olarak verilen dizin içerisinde başka dizinler ya da dosyalar var ise, bir OSError hatası döndürmektedir.

Soru 9

Python programlama dilinin izin vermediği işlemlerin yapılmaya çalışılması istisnalar oluşturabilir. Bu gibi durumlarda programda bir hata oluştuğunda, bir şeyler ters gittiğinde hata yakalayabilmek için ne kullanılır?

Seçenekler

A
try, except ve finally işlevleri
B
os modülü yöntemleri
C
shutil modülü yöntemleri
D
locals()[‘__builtins__’] fonksiyonu
E
sys.exit() fonksiyonu
Açıklama:
Cevap: try, except ve finally işlevleri
Sayfa 171’de belirtildiği üzere “Programda bir hata oluştuğunda, bir şeyler ters gittiğinde hata yakalayabilmek için try, except ve finally işlevleri kullanılmaktadır.”

Soru 10

Python programlama dilinde, mod alma ya da bölme işleminin ikinci işleneni sıfır olması hangi yerleşik istisnanın tetiklenmesine sebep olur?

Seçenekler

A
UnicodeError
B
ZeroDivisionError
C
RuntimeError
D
FloatingPointError
E
MemoryError
Açıklama:
Cevap: ZeroDivisionError
Sayfa 170’te yer alan Tablo 5.3’te belirtildiği üzere ZeroDivisionError, “Mod alma ya da bölme işleminin ikinci işleneni sıfır olduğunda tetiklenir”. Ayrıca sayfa 172’de yer alan örnekte ve açıklamasında da, liste isimli listedeki 0 değerinin “ZeroDivisionError” hatasına sebep olduğu belirtilmektedir.

Ünite 6

Soru 1

Aşağıdakilerden hangisi,nesne yönelimli programlamada sınıfın içinde tanımlanmış fonksiyonlari ifade eder?

Seçenekler

A
metotlar
B
class
C
nesne
D
kalıtım
E
kod çıktısı
Açıklama:
Metotlar, nesne yönelimli programlamada sınıfın içinde tanımlanmış fonksiyonları ifade eder.

Soru 2

Aşağıdakilerden hangisi, mevcut bir sınıfın özellikleri ve davranışları değiştirilmeden yeni bir sınıfın oluşturulmasıni ifade eder?

Seçenekler

A
metot
B
kalıtım
C
class
D
data
E
kod çıktısı
Açıklama:
Kalıtım, mevcut bir sınıfınözellikleri ve davranışları değiştirilmeden yeni bir sınıfın oluşturulmasıni ifade eder.

Soru 3

Aşağıdakilerden hangisi nesne yönelimli programlama kullanılarak nesne ve metotlara erişim kısıtlamasıni ifade eder?

Seçenekler

A
class
B
alt sınıf
C
kapsülleme
D
metot
E
data
Açıklama:
Kapsülleme (encapcsulation), nesne yönelimli programlama kullanılarak nesne ve metotlara erişim kısıtlamasıni ifade eder.

Soru 4

Aşağıdakilerden hangisi, farklı veri türleri, sınıflar için ortak bir arabirim kullanmayı ifade eder?

Seçenekler

A
data
B
sınıf
C
kapsülleme
D
Çok biçimlilik (polymorphism)
E
kod
Açıklama:
Çok biçimlilik (polymorphism), farklı veri türleri, sınıflar için ortak bir arabirim kullanmayı ifade eder.

Soru 5

Python dilinde sınıf tanımlamaları aşağıdaki hangi anahtar kelimesi ile baslar?

Seçenekler

A
object
B
int
C
library
D
include
E
class
Açıklama:
Python dilinde sınıf tanımlamaları class anahtar kelimesi ile başlar.

Soru 6

Aşağıdakilerden hangisi python programlama dilinde özel fonksiyon olduğunu gosterir?

Seçenekler

A
çift altçizgi ile başlayan fonksiyonlar
B
class tanımı içindekiler
C
bütün nesneler
D
iki adet " ile ifade edilen sözcükler
E
include ile başlayan kodlar
Açıklama:
Çift altçizgi ile başlayan fonksiyonlar, python programlama dilinde çzel fonksiyon olduğunu gösterir.

Soru 7

Aşağıdakilerden hangisi nesne ve özellik silme işlemi gerçekleştirir?

Seçenekler

A
def
B
del
C
print
D
altçizgi
E
çift altçizgi
Açıklama:
del kullanılarak nesne ve özellik silme işlemi gerçekleşir.

Soru 8

Python programlama dilinde bir sınıf boş bırakılacak ise aşağıdaki anahtar kelimelerden hangisi kullanılır?

Seçenekler

A
del
B
class
C
pass
D
def
E
altçizgi işareti
Açıklama:
Python programlama dilinde bir sınıf boş bırakılacak ise, pass anahtar kelimesi kullanılır.

Soru 9

Aşağıdakilerden hangisi python dilinde veri kapsülleme (data encapsulation) işlemi için yapılması zorunlu bir işlemdir?

Seçenekler

A
datanın ayrı bir dosyada tutulması
B
datanın ziplenmesi
C
yazılan programın tar.gz formatında saklanması
D
özellik adından önce çift altçizgi eklenmesi
E
python kodlarının sadece ssh ile erişilebilir olması
Açıklama:
Özellik adından önce çift altçizgi eklenmesi, python dilinde veri kapsülleme (data encapsulation) işlemi için yapılmasi zorunludur.

Soru 10

Python progragramlama dilinde bellek ayırma ve belleği serbest bırakma / temizleme işlemleri için aşağıdakilerden hangisi yapılır?

Seçenekler

A
del komutu verilir
B
class private olarak tanımlanır
C
def için alt çizgi kullanılır
D
bu islem için ayrıca bir program yazılır
E
herhangi bir özel işleme gerek yoktur, python dilinde otomatik olarak yapılır
Açıklama:
Python progragramlama dilinde bellek ayırma ve belleği serbest bırakma / temizleme işlemleri için herhangi bir özel işleme gerek yoktur, python dilinde otomatik olarak yapılır.

Ünite 7

Soru 1

MySQL sürücüsünün doğru bir şekilde kurulup kurulmadığı aşağıdaki kodlardan hangisi ile kontrol edilebilir?

Seçenekler

A
import mysql.connector
B
data mysql.connector
C
import mysql.connector.connect
D
mysql.connector.python
E
data mysql.connector. python
Açıklama:
MySQL sürücüsünün doğru bir şekilde kurulduğu da şu kod ile kontrol edilebilir. Kod: import mysql.connector Kod çalıştırıldığında bir hata alınmıyorsa, kurulum başarılı bir şekilde gerçekleşmiş ve MySQL sürücüsü bilgisayarınıza yüklenmiş demektir.

Soru 2

MySQL veritabanında kod yazarken kullanılacak bir veritabanı oluşturmak için hangi komutun çalıştırılması gerekmektedir?

Seçenekler

A
CREATE NEW DATA
B
CREATE DATABASE
C
IMPORT DATA
D
IMPORT DATABASE
E
CREATE LOCALHOST
Açıklama:
MySQL veritabanında kod yazarken kullanılacak bir veritabanı oluşturmak için “CREATE DATABASE” komutu çalıştırılması gerekmektedir.

Soru 3

MySQL veritabanında uretim isimli bir tablo oluşturulduğunu varsayalım. Tablo oluşturulduktan sonra bu tabloya yeni bir sütun ilave edileceği zaman hangi komut kullanılır?

Seçenekler

A
cursor.execute ("ALTER TABLE uretim ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")
B
"""CREATE TABLE uretim (
id INT AUTO_INCREMENT PRIMARY KEY,
isim VARCHAR(30)
NOT NULL,
soyisim
VARCHAR(30),
birim VARCHAR(50),
pozisyon INT,
dogum_tarihi DATETIME
)"""
C
cursor.execute ("ADD CIRCLE uretim ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")
D
"""CREATE TABLE uretim (
id INT AUTO_INCREMENT PRIMARY KEY,
isim VARCHAR(30)
NOT NULL,
)"""
E
veritabani.close()
Açıklama:
Eğer tablo zaten oluşturulmuş ise, tabloya yeni bir sütun ilave etmek için ALTER TABLE komutu kullanılır.

Soru 4

Veritabanındaki tablolara tekli veya çoklu veri kaydı yapabilmek için aşağıdaki komutlardan hangisi kullanılır?

Seçenekler

A
sql = "INSERT INTO calisan(isim, soyisim, birim) VALUES (%s, %s, %s)"
B
sql = "EXECUTE INTO calisan(isim, soyisim, birim) VALUES (%s, %s, %s)"
C
sql = "INSERT DATA calisan(isim, soyisim, birim) VALUES (%s, %s, %s)"
D
sql = "EXECUTE DATA calisan(isim, soyisim, birim) VALUES (%s, %s, %s)"
E
sql = "EXECUTEMANY calisan(isim, soyisim, birim) VALUES (%s, %s, %s)"
Açıklama:
“INSERT INTO” anahtar sözcüğü ile başlayan komut, MySQL sunucusuna yapılacak işlem hakkında bilgi vermektedir. Zorunlu bir ifade olmakla birlikte, kendisinden sonra işlem yapılacak tablo adının gelmesi gerekmektedir. Ardından veri girilmesi istenilen tablodaki sütun adları istenilen sırayla tanımlanır. “VALUES” anahtar sözcüğünden sonra da, verilen sütun isim ve veri türlerine göre sıra uyumu gözetilerek, verilerin girilmesi beklenmektedir.

Soru 5

Veritabanındaki tablolardan veri çekme, filtreleme, veri güncellemesi ve verilerin silinmesi işlemleri esnasında veri tabanı sorgusu hangi komut kullanılarak yapılır?

Seçenekler

A
SELECT
B
WHERE
C
INSERT
D
INSERT INTO
E
SEARCH
Açıklama:
Veritabanındaki tablolardan veri çekerken kimi zaman bir filtreye ihtiyaç duyulur. Böylece sorgu sonucu dönecek veri setinin boyutu küçülerek aranan verinin daha hızlı bulunması sağlanmaktadır. Ayrıca filtreleme, veri güncellemesi ve verilerin silinmesi işlemlerinde de kullanılmaktadır. Veritabanı sorgusunda “WHERE” komutu kullanılarak sorgu yapılmaktadır.

Soru 6

sql = "SELECT id, isim, soyisim FROM calisan WHERE birim LIKE '%ma%'" cursor.execute( sql )
Yukarıdaki örnek kod dikkate alındığında aşağıdaki kod çıktılarından hangisinin ekranda görünmesi beklenir?

Seçenekler

A
(11, 'KEVSER', 'URUÇ', 'Ulaştırma')
B
(11, 'KEVSER', 'URUÇ', 'İletişim')
C
(11, 'KEVSER', 'URUÇ', 'Eğitim')
D
(11, 'KEVSER', 'URUÇ', 'Sağlık')
E
(11, 'KEVSER', 'URUÇ', 'Denetim')
Açıklama:
filtreleme yaparken, aranmak istenen ifade kayıtların başında, içinde veya sonunda olabilir. Böyle durumlar için de joker karakteri olarak “%” sembolü kullanılmaktadır. “%” karakteri aranan ifadenin hem başına hem de sonuna konulduğunda, ifadeden önce ve sonra ne gelirse gelsin ama bu ifadeyi içersin anlamına gelmektedir. Örnek kodda, birim verisinin içinde “ma” geçen kayıtların listesi istenmiş ve ULAŞTIRMA kelimesinin içinde "ma" hecesi yer aldığından doğru yanıt A şıkkıdır.

Soru 7

Tablo verilerinde istenilen filtreleme sonucunu, istenilen sütuna göre artan veya azalan düzende sıralama yapmak için hangi ifade kullanılır?

Seçenekler

A
EXECUTE
B
ADD
C
SELECT
D
WHERE
E
ORDER BY
Açıklama:
Tablo verilerinde istenilen filtreleme sonucunu, istenilen sütuna göre artan veya azalan düzende sıralama yapmak için ORDER BY ifadesi kullanılmaktadır. ORDER BY ifadesi, varsayılan değer olarak ASC (ASCENDING) artan şekilde sıralamaktadır. Sonucun azalan şekilde sıralanması için de DESC (DESCENDING) anahtar sözcüğü kullanılmaktadır.

Soru 8

cursor.execute( "DELETE FROM calisan WHERE birim = %s", ("Muhasebe",) )
Yukarıda yer alan örnek kodda hangi kısım yazılmazsa tabloda yer alan verilerin tamamı silinir?

Seçenekler

A
cursor.execute ()
B
cursor.execute
C
()
D
WHERE
E
,) )
Açıklama:
WHERE şartının eklenmediği bir DELETE komutu, tablodaki tüm verileri silecektir.

Soru 9

import mysql.connector
veritabani = mysql.connector.connect(
host="localhost",
user="kullanıcı_adı",
password="kurulum_şifresi",
database="personel" )
cursor = veritabani.cursor()
sql = "DROP TABLE IF EXIST calisan"
cursor.execute( sql )
Yukarıda yer alan bir kod yazıldığında aşağıdaki işlemlerden hangisi yapılmak istenmiştir?

Seçenekler

A
Veri tabanında var olan bir tablodan veri çağırmak.
B
Veri tabanında var olan bir tabloyu silmek.
C
Veri tabanında var olan bir tabloyu güncellemek.
D
Veri tabanında var olan bir tablodaki verileri küçükten büyüğe sıralamak.
E
Veri tabanında var olan bir tablodaki verileri büyükten küçüğe sıralamak.
Açıklama:
Veri tabanında var olan bir tabloyu silmek için DROP TABLE komutu kullanılmaktadır.

Soru 10

SELECT sütun1, sütun2,...
FROM tablo1
LEFT JOIN tablo2 ON koşul
Söz dizimi için aşağıdakilerden hangisi söylenebilir?

Seçenekler

A
Tablo1 ve Tablo 2'deki verileri döndürmektedir.
B
Tablo1 ile ortak olmayan verileri hariç tutarak, Tablo2’deki verileri döndürmektedir.
C
Tablo2 ile ortak olmayan verileri hariç tutarak, Tablo1’deki verileri döndürmektedir.
D
Tablo1 ve Tablo2'deki verileri birbirinden ayırmaktadır.
E
Tablo1 ve Tablo2'deki verileri birleştirmektedir.
Açıklama:
Join ve Inner Join komutları aynı şekilde çalışmaktadır. Tabloların kesişim elemanlarını döndürür.
Söz Dizimi:
SELECT sütun1, sütun2,...
FROM tablo1
JOIN tablo2 ON koşul;
veya
SELECT sütun1, sütun2,...
FROM tablo1
INNER JOIN tablo2 ON koşul;
Left Join: Tablo2 ile ortak olmayan verileri hariç tutarak, Tablo1’deki verileri döndürmektedir.
Söz Dizimi:
SELECT sütun1, sütun2,...
FROM tablo1
LEFT JOIN tablo2 ON koşul;

Soru 11

Python programlama dili ile birlikte kullanılabilen MySQL nedir?

Seçenekler

A
Veritabanı yönetim sistemidir.
B
Veritabanı sürücüsüdür.
C
Veri tablosudur.
D
Veri girişi arayüzüdür.
E
Veri bağlantısı arayüzü komutudur.
Açıklama:
CEVAP: Veritabanı yönetim sistemidir.
Sayfa 225 “MySQL, piyasada kullanılan en popüler açık kaynak kodlu veritabanı yönetim sistemlerinden (DBMS) biridir.”
Sayfa 248 “MySQL veritabanı ilişkisel veritabanı yönetim sistemidir (RDBMS).”

Soru 12

Python programlama dilinin MySQL programı ile ilişkisi ile ilgili olarak hangi seçenek doğrudur?

Seçenekler

A
MySQL bir Python sürücüsüdür.
B
Python ile üzerinde işlem yapılacak veriler, MySQL ile depolanan veriler olabilir.
C
MySQL ile üzerinde işlem yapılacak veriler, Python ile depolanan veriler olabilir.
D
MySQL ile depolanacak verilere erişmek için Python mutlaka gereklidir.
E
Python ile depolanan veriler üzerinde MySQL ile işlem yapılır.
Açıklama:
CEVAP: Python ile üzerinde işlem yapılacak veriler, MySQL ile depolanan veriler olabilir.
Sayfa 225 “MySQL, piyasada kullanılan en popüler açık kaynak kodlu veritabanı yönetim sistemlerinden (DBMS) biri dir. Çoğu yazılım veriler üzerinde işlem yapması gerektiği için, Python gibi programlama dilleri bu veri kaynakları na erişmek ve depolamak için araçlar sağlamaktadır.”

Soru 13

Çoğu yazılım veriler üzerinde işlem yapması gerektiği için, programlama dilleri bu veri kaynaklarına erişmek ve depolamak için araçlar sağlamaktadır.
Aşağıdakilerden hangisi Python programlama dilinde MySQL ile hazırlanmış veri kaynaklarına erişim için kullanılan sürücü paketlerinden biridir?

Seçenekler

A
Cursor Execute
B
Primary Key
C
MySQL Connector
D
Inner Join
E
Python DB API
Açıklama:
CEVAP: MySQL Connector
İLGİ: Sayfa 225 “Python, MySQL veritabanına ulaşabilmek için bir MySQL sürücüsüne ihtiyaç duymaktadır. Bu ünitede, sürücü olarak “MySQL Connector” kullanılarak kod örnekleri hazırlanacaktır.”
Sayfa 241 “Python, MySQL veritabanına ulaşabilmek için bir MySQL sürücüsüne ihtiyaç duymaktadır. Bu sürücülerden biri de “MySQL Connector” ‘dır.”

Soru 14

import mysql.connector
veritabani = mysql.connector.connect(
host="localhost",
user="kullanıcı_adı",
password="kurulum_şifresi"
)
cursor = veritabani.cursor()
veritabanı_komut= “ ”
cursor.execute("veritabani_komut")
Yukarıda verilen kod parçasında, Python programlama dili içerisinden MySQL Connector sürücüsü kullanılarak bir veri bağlantısı nesnesi yaratılmıştır. Son satırda yer alan execute metodu kullanılarak “kitabevi” isimli bir veritabanı yaratmak için, veritabanı_komut değişkeninin değeri olarak ne yazılmalıdır?

Seçenekler

A
SELECT DATABASE kitabevi
B
CREATE TABLE kitabevi
C
SELECT TABLE kitabevi
D
CREATE DATABASE kitabevi
E
CREATE kitabevi
Açıklama:
CEVAP: CREATE DATABASE kitabevi
İLGİ Sayfa 226-227 Veritabanı Oluşturma kısmında anlatıldığı üzere, Python üzerinden “CREATE DATABASE veritabanıAdı” şeklinde komut vererek bir MySQL veritabanı oluşturulabilir.

Soru 15

calisanTablosu = """CREATE TABLE calisan (
id INT AUTO_INCREMENT PRIMARY KEY,
isim VARCHAR(30) NOT NULL,
soyisim VARCHAR(30),
birim VARCHAR(50),
pozisyon INT,
dogum_tarihi DATETIME
)"""
Yukarıda yer alan kod parçası, Python programlama dili içerisinden MySQL Connector kullanılarak bağlanılan Personel isimli veri tabanına “calisan” isimli bir tablo eklemek üzere yazılmıştır. Kodun ikinci satırında yer alan ifadenin işlevi nedir?

Seçenekler

A
Tabloya erişim önceliği tanımak
B
Tabloda sadece tam sayı (integer) biçiminde verilerin kaydedilmesini sağlamak
C
Tabloyu benzersiz kılmak
D
Tabloya eklenen verileri listelemek
E
Tabloya eklenen her bir kayıt için benzersiz bir birincil anahtar oluşturmak
Açıklama:
CEVAP: Tabloya eklenen her bir kayıt için benzersiz bir birincil anahtar oluşturmak
Sayfa 229 Birincil Anahtar (Primary Key) başlığı altındaki örnekte de verildiği üzere, “ … tabloya eklenen her bir kayıt için benzersiz bir anahtar, değer içeren bir sütun da oluşturulmalıdır. Bu sütuna birincil anahtar adı verilmektedir ve sütunda tutulacak veri de “INT AUTO_INCREMENT PRIMARY KEY” ifadesiyle tanımlanmaktadır.”

Soru 16

calisanTablosu = """CREATE TABLE calisan (
id INT AUTO_INCREMENT PRIMARY KEY,
isim VARCHAR(30) NOT NULL,
soyisim VARCHAR(30),
birim VARCHAR(50),
pozisyon INT,
dogum_tarihi DATETIME
)"""
cursor.execute(calisanTablosu)
Python programlama dili içerisinden MySQL Connector kullanılarak bağlanılan bir veritabanında aşağıdaki komutla “calisan” isimli bir tablo oluşturulmuştur. Bu tabloya “tcKimlikNo” isimli bir sütun eklemek için aşağıdaki komutlardan hangisi kullanılmaldır?

Seçenekler

A
cursor.execute("ALTER TABLE calisan ADD COLUMN tcKimlikNo BIGINT(11)")
B
cursor.execute("SELECT TABLE calisan ADD COLUMN tcKimlikNo BIGINT(11)")
C
cursor.execute("INSERT calisan ADD COLUMN tcKimlikNo BIGINT(11)")
D
cursor.execute("UPDATE calisan ADD COLUMN tcKimlikNo BIGINT(11)")
E
cursor.execute("INNER JOIN calisan ADD COLUMN tcKimlikNo BIGINT(11)")
Açıklama:
CEVAP: cursor.execute("ALTER TABLE calisan ADD COLUMN tcKimlikNo BIGINT(11)")
Sayfa 229’da belirtildiği üzere “Eğer tablo zaten oluşturulmuş ise, tabloya yeni bir sütun ilave etmek için ALTER TABLE komutu kullanılır.”

Soru 17

Python programlama dili ile MySQL veritabanı üzerine tek bir seferde çok sayıda kayıt girişi yapmak için cursor nesnesi ile beraber kullanılan komut hangisidir?

Seçenekler

A
execute
B
executemany
C
fetchall
D
fetchone
E
rowcount
Açıklama:
CEVAP: cursor.executemany
Sayfa 231’de belirtildiği üzere “Çoklu kayıt girişinde de benzer şekilde veriler oluşturulmakta ve “execute” metodu, “executemany” ile değiştirilmektedir.”

Soru 18

Aşağıda, Python programlama dili ile MySQL veritabanı üzerinde kayıt işlemleri yapmak üzere cursor metodu için kullanılan bazı komutlar, açıklamalar ile eşleştirilerek verilmiştir. Seçeneklerden hangisindeki açıklama ve komut eşleştirmesi hatalıdır?

Seçenekler

A
executemany - “insert” sorgusu ile bir kerede birden fazla veri satırı eklemek için kullanılır.
B
fetchall - “select” sorgusu sonucu veritabanından okunan tüm satırları döndürür.
C
fetchone - “select” sorgusu sonucu veritabanından okunan ilk satırı döndürür.
D
rowcount - En son çalıştırılan SQL sorgusundan etkilenen kayıt sayısını döndürür.
E
execute - “select” sorgusu sonucu veritabanından okunan tüm satırları siler.
Açıklama:
CEVAP: execute - “select” sorgusu sonucu veritabanından okunan tüm satırları siler.” seçeneği hatalıdır.
Sayfa 231 “Kod içerisinde kullanılan cursor(), satırlar üzerinde sırayla işlem yapmaktadır. Veritabanına girilmesi istenen verilerin kaydedilmesi için de veritabani.commit() metodu kullanılmaktadır.”
Sayfa 231 “Çoklu kayıt girişinde de benzer şekilde veriler oluşturulmakta ve “execute” metodu, “executemany” ile değiştirilmektedir.”
Sayfa 232 “gibi, cursor.execute() kullanılarak komut çalıştırılacak ve cursor.fetchall() ile tablodan alınan veriler bir liste şeklinde döndürülecektir.”
Sayfa 234 “Ayrıca cursor.fetchone() metodu ile sorgu sonucunda gelen ilk satırın verisi alınabilir.”
Sayfa 231, 232, 239, 241 Örneklerde rowcount komutuna yer verilmiştir.

Soru 19

sql = "SELECT id, isim, soyisim, birim FROM calisan WHERE isim LIKE %s "
arama = ("%ER%",)
cursor.execute( sql, arama )
Yukarıda, Python programlama dili ile MySQL veritabanı üzerinde yapılan sorguyu içeren bir kod parçası yer almaktadır. Sorgu sonucunda ismi içerisinde yanyana “ER” harflerinin bulunan kişiler döndürülecektir.
Görüldüğü üzere, sorgu ve parametre değerlerini ayırarak sorgu yapılmıştır. Bunun başlıca sebebi nedir?

Seçenekler

A
Kodun yazılmasını ve okunmasını kolaylaştırmak.
B
SQL injection ile ortaya çıkabilecek sorunlara karşı korunmak.
C
Verilerin kullanıcılar tarafından yanlışlıkla silinmesine engel olmak.
D
Gereken durumlarda SQL injection yapılmasına olanak sağlamak.
E
Kodun güncellenmesi gereken durumlarda kolaylık sağlamak.
Açıklama:
CEVAP: SQL injection ile ortaya çıkabilecek sorunlara karşı korunmak.
Sayfa 236 “Örnek kodda, SQL Injection işlemini engellemek amacıyla sorgu ve parametre değerlerini ayrırarak sorgu yapılmıştır.”
Sayfa 236 “SQL Injection denilen kavram, yaygın bir web korsanlığı türüdür ve gerekli önlemlerin alınmadığı durumlarda, veri kaybı, kullanıcı ele geçirme gibi can sıkıcı sonuçlara neden olabilir.”

Soru 20

Python programlama dili ile MySQL veritabanı üzerinde yapılan sorgularda, veritabanındaki veriyi değiştiren INSERT, UPDATE, DELETE gibi işlemlerde mutlaka kullanılması gereken bir metod bulunmaktadır. Bu metod kullanılmadığı takdirde veri tabanında bir değişiklik olmayacaktır. Veritabanı bağlantı nesnesi üzerinde etkili olan bu metod nedir?

Seçenekler

A
commit()
B
execute()
C
executemany()
D
fetchall()
E
cursor()
Açıklama:
CEVAP: commit
Sayfa 231 “Veritabanına girilmesi istenen verilerin kaydedilmesi için de veritabani.commit() metodu kullanılmaktadır.”
Sayfa 239 “veritabani.commit() metodu çağrılmadan tablo üzerinde yapılan işlemler veritabanında güncellenmeyecektir.”

Soru 21

Python programlama dili ile MySQL veritabanı üzerinde yapılan bir sorguda, iki ayrı tablodaki veri ilişkili sütunlara göre birleştirilerek erişmek istenmektedir. Bunun için hangi yapısal sorgulama dili (SQL) komutu kullanılmalıdır?

Seçenekler

A
LIMIT
B
GROUP BY
C
ORDER BY
D
JOIN
E
ALTER TABLE
Açıklama:
CEVAP: JOIN
Sayfa 243 “JOIN komutu ile iki veya daha fazla tablonun verileri, aralarındaki ilişkili sütunlara göre birleştirilir.”

Ünite 8

Soru 1

egitim_projesi/
manage.py
egitim_projesi/
__init__.py
settings.py
urls.py
wsgi.py
Yukarıda bir web uygulaması geliştirmek için öncelikle egitim projesi adlı bir proje oluşturulmuştur. Yukarıdaki komutlardan hangisi bu sitedeki linkleri kontrol eden, tüm bağlantıları ve metotları yönlendiren ana işlevdir?

Seçenekler

A
egitim_projesi
B
__init__.py
C
settings.py
D
urls.py
E
wsgi.py
Açıklama:
Oluşturulan projenin yapısını inceleyecek olursak;
proje_adı klasörü sadece iki tane nesne içeren proje kapsayıcısıdır.
manage.py: Bu dosya, proje ile komut satırı aracılığıyla iletişim kurmak için hazırlanmış yerel bir Django-admin’dir. Veritabanı senkronizasyonu, geliştirme sunucusu başlatma gibi görevleri gerçekleştirmeye yarayan komut satırı yardımcı programıdır.
proje_adı (egitim_projesi): Alt klasördür ve projedeki gerçek Python paketidir. Dört adet dosya içermektedir.
__init__.py: Bu dosya olduğu için, bu klasör bir paket olarak kabul edilir. settings.py: Adından da anlaşılacağı gibi, bu dosya projedeki tüm ayarları yönetmektedir.
urls.py: Sitedeki linkleri kontrol eden, tüm bağlantıları ve metotları yönlendiren ana işlevdir.
wsgi.py: Proje WSGI (Web Server Gateway Interface) üzerinden sunulması gerekiyorsa, uyumlu web sunucular için bir giriş noktası görevi görmektedir.

Soru 2

Django’da arayüzler aşağıdaki dosyalardan hangisinde oluşturulmalıdır?

Seçenekler

A
webapp/views.py
B
'django.contrib.admin'
C
'django.contrib.auth'
D
webapp/settings.py
E
webapp/ur.py
Açıklama:
Django’da arayüzler, webapp/views.py dosyasında oluşturulmalıdır.

Soru 3

Bir projenin ayarlarının tutulduğu settings.py dosyası içinde tanımlı TEMPLATES ayarlarına yeni oluşturulan templates klasörü tanımlanması aşamasında aşağıdaki kodlardan hangisine gereksinim vardır?

Seçenekler

A
'BACKEND': 'django.template.backends.django.DjangoTemplates',
B
'DIRS': [os.path.join(BASE_DIR,'templates')],
C
'APP_DIRS': True,
D
'OPTIONS': {
E
'context_processors': [
Açıklama:
Projenin ayarlarının tutulduğu settings.py dosyası içinde tanımlı TEMPLATES ayarlarına da yeni oluşturulan templates klasörü tanımlanmalıdır. Bu dosya içerisine eklenmesi gereken satır ‘DIRS’: [os. path.join(BASE_DIR,’templates’)], şeklindedir.

Soru 4

url parametrelerinde kullanılabilecek veri türü metin ise hangi Url dönüştürücü tipi kullanılmalıdır?

Seçenekler

A
veri:veri
B
algg:veri
C
slug:veri
D
int:veri
E
str:veri
Açıklama:
Şablon dosyalara parametre gönderilebilmektedir. Bu parametreler öncelikle url yönlendirmesi yapılan “urls.py” dosyasına eklenmeli ve sonrasında, “views.py” dosyasına da ilgili parametreyi alan bir metot tanımlanmalıdır. Parametrelerin gösterileceği şablon dosyalar da, templates klasörü altında oluşturulmalıdır. Eğer gönderilecek veri bir sayı ise, urls.py dosyasına url parametresi olarak , veri bir metin ise de şeklinde girilmelidir. Tablo 8.1’de, url parametrelerinde kullanılabilecek veri türleri detaylı olarak gösterilmektedir.

Soru 5

web sitesinde oluşturulan html dosyalara parametreler, url üzerinden gönderilmektedir. Buna göre aşağıdakilerden hangisi mesaj_goster şablonu için "mesajınız: eğitim ücretleri alındı" görüntüsünü elde edeceğimiz url'dir?

Seçenekler

A
http://127.0.0.1:8000/webapp/mesaj_goster/Kargo%20zaman%C4%B1nda%20gelmedi
B
http://127.0.0.1:8000/webapp/sayi_goster/26020
C
http://127.0.0.1:8000/webapp/mesaj_goster/Egitim%20ucretleri%C4%B1%20alindi
D
http://127.0.0.1:8000/webapp/mesaj_goster/26020
E
http://127.0.0.1:8000/webapp/mesaj zamani_goster/26020
Açıklama:
Oluşturulan html dosyalara parametreler, url üzerinden gönderilmektedir. Sırasıyla iki şablonun parametre ile çağrılmasını inceleyelim. sayi_goster şablonu için kullanılacak url: http://127.0.0.1:8000/webapp/sayi_goster/26020 mesaj_goster şablonu için kullanılacak url: http://127.0.0.1:8000/webapp/mesaj_goster/Egitim%20ucretleri%C4%B1%20alindi

Soru 6

BSD özgür yazılım lisansı ile lisanslanmış, açık kaynak kodlu, Python dili için dizayn edilmiş yüksek seviyeli bir web uygulaması geliştirme platformu .............dır.
Yukarıdaki boşluğu aşağıdakilerden hangisi doğru bir şekilde tamamlar?

Seçenekler

A
MVT
B
Django
C
SQL Injection
D
WSGI
E
HTML
Açıklama:
Django, BSD yani özgür yazılım lisansı ile lisanslanmış, açık kaynak kodlu, Python dili için dizayn edilmiş yüksek seviyeli bir web uygulaması geliştirme platformudur. Adını caz gitaristi Django Reinhardt’dan almıştır. Kurulumu ve kullanımı oldukça basit olan Django’nun temel hedefi, karmaşık yapıdaki web uygulamalarının kullanımını daha kolay bir hale getirmektir. Modülerlik, tekrar kullanılabilirlik ve hızlı bir geliştirme ortamı sunmak üzere tasarlanmıştır.

Soru 7

Projede herhangi bir problem olup olmadığı hangi kod ile bulunabilir?

Seçenekler

A
python manage.py makemigrations
B
python manage.py migrate
C
python manage.py check
D
python manage.py sort
E
python manage.py delete
Açıklama:
Proje içerisindeki tüm modelleri tarayarak migration dosyalarını oluşturan komut şu şekildedir: python manage.py makemigrations. Oluşturulan migration dosyalarının çalıştırılarak veritabanı ile eşleştirilerek güncellenmesi için çalıştırılan komut şu şekildedir: python manage.py migrate. Projede herhangi bir problem olup olmadığı aşağıdaki kod yardımıyla kolayca bulunabilir. python manage.py check.

Soru 8

CRUD, veritabanındaki bir tablo üzerinde aşağıdaki işlemlerden hangisini gerçekleştiremez?

Seçenekler

A
Oluşturma
B
Alma
C
Güncelleme
D
Betimleme
E
Silme
Açıklama:
Django, kurulum ve bağımlılık sorunu olmadan hızlı bir şekilde web uygulaması oluşturmaya izin veren bir web geliştirme platformu sunmaktadır. MVT (Model Görünüm Şablon) mimarisini temel alarak CRUD (Oluştur Al Güncelle Sil) işlemlerini gerçekleştirir. CRUD, veritabanındaki bir tablo üzerinde Oluşturma, Alma, Güncelleme ve Silme işlemlerini gerçekleştirmek anlamına gelmektedir.

Soru 9

  1. Verileri işlemeye hazır hale getirmek için hazırlamak ve yeniden yapılandırmak
  2. Veriler için HTML formları oluşturmak
  3. İstemciden gönderilen form ile verileri almak ve işlemek
  4. Verileri Silmek
Yukarıdakilerden hangisi Django'nun form işlemleri arasında yer almaz?

Seçenekler

A
Yalnız I
B
Yalınız IV
C
I-II
D
II-III
E
I-II-III
Açıklama:
Django, Django formlarında tanımlanan alanları HTML veri giriş alanları ile eşleştirir. Django, formlarla ilgili üç farklı çalışma yapmaktadır: • Verileri işlemeye hazır hale getirmek için hazırlamak ve yeniden yapılandırmak • Veriler için HTML formları oluşturmak • İstemciden gönderilen form ile verileri almak ve işlemek.

Soru 10

Aşağıdakilerden hangisi CRUD'un "Alma" işlemini açıklamaktadır?

Seçenekler

A
Veritabanındaki bir tabloda yeni kayıtlar oluşturma veya ekleme
B
Mevcut girdileri bir liste olarak okuma, elde etme, arama, görüntüleme veya belirli bir kaydı ayrıntılı olarak çağırma
C
Veritabanındaki bir tablodaki mevcut girişleri güncelleme veya düzenleme
D
Veritabanındaki bir tablodaki mevcut girişleri silme, devre dışı bırakma veya kaldırma
E
Otomatik olarak her tablo için id alanı ekleme
Açıklama:
CRUD, veritabanındaki bir tablo üzerinde Oluşturma, Alma, Güncelleme ve Silme işlemlerini gerçekleştirmek anlamına gelmektedir.
Alma işlemi: Mevcut girdileri bir liste olarak okuma, alma, arama veya görüntüleme (Liste Görünümü) veya belirli bir kaydı ayrıntılı olarak alma (Ayrıntılı Görünüm)

Soru 11

Python dili için dizayn edilmiş olan Django içi hangisi söylenemez?

Seçenekler

A
Özgür yazılım (BSD) lisansı ile lisanslanmıştır.
B
Açık kaynak kodludur.
C
Yüksek seviyeli bir web uygulaması geliştirme platformudur.
D
SQL Injection gibi güvenlik açıkları içerir.
E
Adını bir caz gitaristinden alır.
Açıklama:
CEVAP: SQL Injection gibi güvenlik açıkları içerir.
Sayfa 255 “Geliştiricilerin siteler arası komut dosyası çalıştırma, csrf ve tıklama hırsızlığının yanında SQL Injection gibi güvenlik hatalarından korunmasına yardımcı olmaktadır.” denilmektedir. Bu sebeple “SQL Injection gibi güvenlik açıkları içerir.” denemez. Diğer seçenekler aynı sayfadan alınmıştır.

Soru 12

Python dili için dizayn edilmiş olan Django platformunda oluşturulan bir projede, proje dizininde yer alan “wsgi.py” dosyasının işlevi nedir?

Seçenekler

A
Bu dosya olduğu için, bu klasör bir paket olarak kabul edilir.
B
Bu dosya projedeki tüm ayarları yönetmektedir.
C
Sitedeki linkleri kontrol eden, tüm bağlantıları ve metotları yönlendiren ana işlevdir.
D
Gerektiğinde uyumlu web sunucular için bir giriş noktası görevi görmektedir.
E
Bu dosya bir görünüm şablonudur.
Açıklama:
CEVAP: Gerektiğinde uyumlu web sunucular için bir giriş noktası görevi görmektedir.
Sayfa 256 “wsgi.py: Proje WSGI (Web Server Gateway Interface) üzerinden sunulması gerekiyorsa, uyumlu web sunucular için bir giriş noktası görevi görmektedir.”

Soru 13

Python dili için dizayn edilmiş olan Django platformunda arayüz (view) olarak adlandırılan yapılar ile ilgili olarak hangisi söylenemez?

Seçenekler

A
Web isteği (web request) alır ve web yanıtı (web response) döndürür.
B
Web sayfalarının oluşturulması için kullanılır.
C
Döndürülen yanıt sadece HTML biçiminde olabilir.
D
Sayfa olarak görüntülenmesi için bir URL ile eşleştirilmesi gerekir.
E
Projenin views.py dosyasında içerisine tanımlanarak oluşturulmalıdır.
Açıklama:
CEVAP: Döndürülen yanıt sadece HTML biçiminde olabilir.
Sayfa 256 “ ... yanıt, bir XML belgesi, CSV dosyası, 404 hatası, ses dosyası, web sayfasının HTML içeriği gibi farklı içerikler olabilir.” Buna göre “Döndürülen yanıt sadece HTML biçiminde olabilir.” seçeneği hatalıdır. Diğer seçenekler aynı bölümde verilen bilgilerden oluşturulmuştur.

Soru 14

def html_footer(request):
return render(request, "footer.html", {})
Python dili için dizayn edilmiş olan Django platformunda yapılmış bir projede, view.py dosyası içerisinde, sitede yapılacak bakım çalışmalarında kullanmak üzere bir şablon (template) olarak oluşturulan “bakim.html” dosyası için oluşturulan html_bakim metodu tanımlanmıştır. bakim.html dosyası, projede yer alan “templates” isimli bir klasörde yer almaktadır.
Buna göre, “bakim.html” içeriğinin web üzerinden erişilerek görüntülenebilmesi aşağıdakilerden hangisi yapılmalıdır?

Seçenekler

A
“settings.py” dosyası içinde tanımlı TEMPLATES ayarlarında düzenleme yapılmalıdır.
B
“settings.py” dosyası şablonların oluşturulduğu “templates” klasörü altına konulmalıdır.
C
“settings.py” dosyası üzerinde herhangi bir düzenleme yapmaya gerek yoktur.
D
Sadece “settings.py” içerisinde “bakim.html” şablonu tanımlanmalıdır.
E
“settings.py” ve “urls.py” dosyalarında “bakim.html” şablonu tanımlanmalıdır.
Açıklama:
CEVAP: “settings.py” dosyası içinde tanımlı TEMPLATES ayarlarında düzenleme yapılmalıdır.
Sayfa 258’de verilen örnekte görülen "hello.html" yerine “bakim.html” konarak soru hazırlanmıştır.

Soru 15

Python dili için dizayn edilmiş olan Django platformunda oluşturulan şablon dosyalara parametre göndermek de mümkündür. Aşağıdakilerden hangisi parametre olarak kullanılabilecek veri tiplerinden birisi değildir?

Seçenekler

A
slug
B
int
C
Str
D
date
E
uuid
Açıklama:
Cevap: date
Date veri tipi Sayfa 261 Tablo 8.1’de yer alan veri tiplerinden biri değildir.

Soru 16

Python dili için dizayn edilmiş olan Django platformunda yapılmış bir projede, Web tarayıcısına “http://127.0.0.1:8000/webapp/posta_kodu/07050” adresi verildiğinde, “templates” klasöründe yer alan “posta_kodu.html” dosyasının içinde {{pk}} etiketi ile tanımlanmış ilgili alanda “07050” değerinin gösterilmesi amaçlanmaktadır.
Bunun için projeye eklenmesi gereken kodlardan biri şu şekildedir:
path('posta_kodu/', views.posta_kodu, name='posta_kodu')
Bu kod hangi dosyaya eklenmelidir?

Seçenekler

A
views.py
B
setings.py
C
urls.py
D
manage.py
E
posta_kodu.html
Açıklama:
CEVAP: urls.py
“Sayfa 260 ve 262’de verilen örneklerde, views.py içerisinde şablon (view) olarak tanımlanan dosyaların çalıştırılabilmesi urls.py dosyasında yer alan “urlpatterns” değikenine path() fonksiyonu ile eklendikleri görülmektedir. Soruda anlatılan durum, Sayfa 262-263’te yer alan “mesaji_goster” şablonu ile benzerdir. “

Soru 17

Python dili için dizayn edilmiş olan Django platformunda yapılmış bir projede, Web tarayıcısına “http://127.0.0.1:8000/webapp/posta_kodu/07050” adresi verildiğinde, “templates” klasöründe yer alan “posta_kodu.html” dosyasının içinde {{pk}} etiketi ile tanımlanmış ilgili alanda “07050” değerinin gösterilmesi amaçlanmaktadır.
Bunun için projeye eklenmesi gereken kodlardan biri şu şekildedir:
def sayi_goster(request, pk):
return render(request, "posta_kodu.html", {'pk' : pk})
Bu kod hangi dosyaya eklenmelidir?

Seçenekler

A
views.py
B
setings.py
C
urls.py
D
manage.py
E
posta_kodu.html
Açıklama:
CEVAP: views.py
“Sayfa 260 ve 262’de verilen örneklerde, views.py içerisinde şablon (view) olarak yapılan tanımların benzer şekilde eklendikleri görülmektedir. Soruda anlatılan durum, Sayfa 262-263’te yer alan “mesaj_goster” şablonu ile benzerdir. “

Soru 18

Python dili için dizayn edilmiş olan Django platformunda kullanılan model nesnesi ile ilgili olarak aşağıdakilerden hangisi söylenemez?

Seçenekler

A
Veritabanında tablo veya koleksiyonu temsil eden bir sınıftır.
B
django.db.models.Model’den kalıtım yoluyla türetilir.
C
Veritabanında her tablo için id alanı otomatik olarak eklenmektedir.
D
models.py dosyası içinde tanımlanırlar.
E
Model ile yaratılan tablo model ile aynı adı taşımak zorundadır.
Açıklama:
CEVAP: Model ile yaratılan tablo model ile aynı adı taşımak zorundadır.
Sayfa 264 “Meta sınıfında tanımlanan “db_table” özelliği ile de, veritabanında oluşturulacak olan tablonun adı, programcı tarafından istenildiği gibi isimlendirilebilmektedir.”

Soru 19

Python dili için dizayn edilmiş olan Django platformunda, models.py dosyası üzerinde bir model tanımlanması yapıldıktan sonra makemigrations ve migrate komutları çalıştırılır.
Bu komutlar ile ilgili olarak hangisi yanlıştır?

Seçenekler

A
“makemigrations” komutu çalıştırılmazsa modelde yapılan değişiklikler veritabanına yansımaz.
B
“makemigrations” komutu proje içerisindeki tüm modelleri tarayarak migration dosyalarını oluşturur.
C
“migrate” komutu çalıştırılmazsa modelde yapılan değişiklikler veritabanına yansımaz.
D
“migrate” komutu veritabanını günceller.
E
Komutların hangi sıra ile çalıştırıldığının bir önemi yoktur.
Açıklama:
CEVAP: Komutların hangi sıra ile çalıştırıldığının bir önemi yoktur.
Sayfa 265 Models dosyasında yapılan tüm değişiklikler için öncelikle makemigration sonra da migrate komutu çalıştırılarak veritabanı güncellenmelidir. Bunun haricinde başka bir tablo güncelleme komutu yazılmasına gerek yoktur.

Soru 20

Python dili için dizayn edilmiş olan Django platformunda modellerin sağladığı kolaylık nedir?

Seçenekler

A
Veritabanı işlemleri için SQL sorgusu yapma gereğini ortadan kaldırır.
B
Bir XML belgesi, CSV dosyası, web sayfasının HTML içeriği gibi farklı içerikler döndürebilir.
C
URL üzerinden parametre gönderilebilmektedir.
D
Veritabanında tablo veya koleksiyonu temsil edebilmektedirler.
E
Modelde yapılan değişiklikler veritabanına anında yansıtılmaz.
Açıklama:
CEVAP: Veritabanı işlemleri için SQL sorgusu yapma gereğini ortadan kaldırır.
Sayfa 281 “Model, veritabanı işlemlerinin yapıldığı, tablo ve alan bilgilerinin tutulduğu
sayfalardır. Kullanıcı için arka planda CRUD işlemlerini gerçekleştirdiği için SQL sorguları yazılmasına gerek kalmaz.” Bu çalışma biçim sayfa 266-267’de verilen örnekten de çıkarsanabilir.

⚠️ Telif Hakkı Bildirimi: Bu portaldaki sorular telif hakkı içerebilir. İçerik yalnızca ders çalışma amaçlı hazırlanmış olup, ticari amaçlı kopyalanması veya çoğaltılması hak sahibi tarafından yasal yükümlülükler getirebilir.

Telif hakkı bildirimleri için GitHub Issues bölümünü kullanabilirsiniz. Bildirim üzerine ilgili içerik 7 iş günü içerisinde kaldırılacaktır.