- Python, genel amaçlı, yüksek seviyeli bir programlama dilidir. Python, okunması ve yazması kolay olan basit sözdizimi ile öne çıkar. Python açık kaynak kodludur ve tüm platformlarda (Windows, Linux, MacOS vb.) kullanılabilir.
Python'da herhangi bir değeri saklamak için değişkenler kullanılır. Değişkenlerin isimlendirilmesi için bazı kurallar vardır:
- Değişken ismi sayı ile başlayamaz.
- Değişken isimleri harf, sayı ve alt çizgi (_) içerebilir.
- Değişken isimleri büyük/küçük harf duyarlıdır.
Python'da kullanılan temel veri tipleri şunlardır:
- Integer (Tam Sayı): Tamsayılar, pozitif veya negatif tam sayılardır.
- Float (Ondalık Sayı): Ondalık sayılar, noktadan sonra rakamlar içeren sayılardır.
- String (Metin): Metinler, tek tırnak ('') veya çift tırnak ("") içinde yazılan karakter dizileridir.
- Boolean (Mantıksal): Mantıksal veri tipi, sadece True (Doğru) veya False (Yanlış) değerlerini alabilir.
x = 5
y = -10
pi = 3.14
x = 2.5
name = "Ali"
surname = 'Yılmaz'
is_sunny = True
is_raining = False
Python'da koşullar ve döngüler, programların belirli şartlara göre çalışmasını sağlar.
- If-Else Koşulu: Belirli bir şart sağlandığında, programda belirli bir işlem yapılmasını sağlar. If-else koşulu, programlama dilinde temel yapı taşlarından biridir.
- For Döngüsü: Belirli bir sayıda tekrar etmek istediğimiz işlemleri gerçekleştirmek için kullanılır.
- While Döngüsü: Belirli bir şart sağlandığı sürece tekrar etmek istediğimiz işlemleri gerçekleştirmek için kullanılır.
x = 5
if x > 0:
print("x pozitif")
else:
print("x negatif veya sıfır")
for i in range(5):
print(i)
i = 0
while i < 5:
print(i)
i += 1
Fonksiyonlar, bir veya daha fazla işlemi gerçekleştirmek için kullanılan kod bloklarıdır. Fonksiyonlar, programlama dilinde modüler tasarımı sağlar ve kodun tekrar kullanılabilirliğini arttırır.
def greet(name):
print("Merhaba, " + name)
greet("Ahmet")
Python, nesne tabanlı programlama (OOP) kavramlarını da destekler. OOP, programların daha kolay anlaşılır, yönetilebilir ve genişletilebilir hale getirilmesini sağlar.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print("Merhaba, ben " + self.name)
p1 = Person("Ali", 25)
p1.greet()
x = 7
if x % 2 == 0:
print("Çift sayı")
else:
print("Tek sayı")
print(x + y)
n = 5
faktoriyel = 1
for i in range(1, n+1):
faktoriyel *= i
print(faktoriyel)
x = 7
asalMi = True
for i in range(2, x):
if x % i == 0:
asalMi = False
break
if asalMi:
print("Asal sayı")
else:
print("Asal sayı değil")
liste = [1, 2, 3, 4, 5]
toplam = 0
for eleman in liste:
toplam += eleman
print(toplam)
kelime = "Python"
ters_kelime = ""
for harf in kelime:
ters_kelime = harf + ters_kelime
print(ters_kelime)
import random
sayi = random.randint(1, 100)
while True:
tahmin = int(input("Tahmininizi girin: "))
if tahmin < sayi:
print("Daha yüksek bir sayı söyleyin.")
elif tahmin > sayi:
print("Daha düşük bir sayı söyleyin.")
else:
print("Tebrikler! Sayıyı doğru tahmin ettiniz.")
break
liste = [1, 2, 3, 3, 4, 5, 5]
tekrarlar = []
for eleman in liste:
if liste.count(eleman) > 1 and eleman not in tekrarlar:
tekrarlar.append(eleman)
print(tekrarlar)
n = 10
fibonacci = [0, 1]
for i in range(2, n):
sayi = fibonacci[i-1] + fibonacci[i-2]
fibonacci.append(sayi)
print(fibonacci)
Python'da nesne tabanlı programlama kavramlarını kullanarak, daha anlaşılır, yönetilebilir ve genişletilebilir kodlar yazabiliriz. Bu bölümde, Python'da nesne tabanlı programlama kavramlarını örnek kod bloklarıyla açıklayacağız.
Sınıflar, Python'da nesne tabanlı programlamanın temel yapı taşlarından biridir. Sınıflar, bir nesnenin özelliklerini (attributes) ve yöntemlerini (methods) tanımlayan bir çeşit şablon olarak düşünülebilir.
# Sınıf tanımı
class Araba:
def __init__(self, marka, model, yil):
self.marka = marka
self.model = model
self.yil = yil
def bilgileri_goster(self):
print("Marka:", self.marka)
print("Model:", self.model)
print("Yıl:", self.yil)
# Nesne oluşturma
araba1 = Araba("Renault", "Clio", 2015)
# Nesne yöntemlerine erişim
araba1.bilgileri_goster()
Yukarıdaki örnekte, Araba adında bir sınıf tanımladık. Sınıfın özellikleri marka, model ve yıl olarak tanımlandı. init() fonksiyonu, sınıftan nesne oluşturulduğunda özelliklerin nasıl tanımlanacağını belirler.
Ayrıca, sınıfın metodlarından biri olan bilgileri_goster() fonksiyonu, oluşturulan nesnenin özelliklerini ekrana yazdırır.
Kalıtım, nesne tabanlı programlamada bir sınıftan yeni bir sınıf oluşturma yöntemidir. Kalıtım sayesinde, bir sınıfın özelliklerini ve yöntemlerini başka bir sınıfın da kullanmasını sağlayabiliriz.
# Sınıf tanımı
class Hayvan:
def __init__(self, isim, tur):
self.isim = isim
self.tur = tur
def bilgileri_goster(self):
print("İsim:", self.isim)
print("Tür:", self.tur)
# Kalıtım alınan sınıf
class Kedi(Hayvan):
def miyavla(self):
print("Miyav!")
# Nesne oluşturma
kedi1 = Kedi("Tekir", "Siyam")
# Kalıtım alınan sınıfın yöntemlerine erişim
kedi1.bilgileri_goster()
# Kendi yöntemlerine erişim
kedi1.miyavla()
Yukarıdaki örnekte, Hayvan adında bir sınıf tanımladık. Bu sınıfın özellikleri isim ve tür olarak tanımlandı. init() fonksiyonu, sınıftan nesne oluşturulduğunda özelliklerin nasıl tanımlanacağını belirler.
Kedi adında bir sınıf oluşturduk ve bu sınıf, Hayvan sınıfından kalıtım aldı. Kedi sınıfı, Hayvan sınıfının özelliklerini ve yöntemlerini kullanabilir. Ayrıca, Kedi sınıfına, miyavla() adında bir yöntem ekledik.
Polimorfizm, nesne tabanlı programlamada aynı adı taşıyan ancak farklı işlevleri olan yöntemlerin kullanımıdır. Polimorfizm, bir sınıfın farklı durumlarda farklı işlevler görebilmesini sağlar.
# Sınıf tanımı
class Sekil:
def alan_hesapla(self):
pass
# Alt sınıflar
class Dikdortgen(Sekil):
def __init__(self, genislik, yukseklik):
self.genislik = genislik
self.yukseklik = yukseklik
def alan_hesapla(self):
return self.genislik * self.yukseklik
class Ucgen(Sekil):
def __init__(self, taban, yukseklik):
self.taban = taban
self.yukseklik = yukseklik
def alan_hesapla(self):
return (self.taban * self.yukseklik) / 2
# Nesne oluşturma
sekil1 = Dikdortgen(5, 10)
sekil2 = Ucgen(8, 6)
# Polimorfizm
sekil_listesi = [sekil1, sekil2]
for sekil in sekil_listesi:
print(sekil.alan_hesapla())
Yukarıdaki örnekte, Sekil adında bir sınıf tanımladık. Bu sınıf, alan_hesapla() adında bir yöntem içeriyor. Ancak bu yöntem, henüz tanımlanmadı.
Dikdortgen ve Ucgen adında iki alt sınıf oluşturduk. Her iki alt sınıf da Sekil sınıfından kalıtım aldı ve alan_hesapla() yöntemini farklı şekillerde tanımladı.
Nesne oluşturduktan sonra, Dikdortgen ve Ucgen nesnelerini sekil_listesi adında bir liste içinde topladık. Ardından, bu liste üzerinde bir döngü oluşturarak, her nesnenin alanını hesaplayıp ekrana yazdırdık. Bu işlem sırasında, polimorfizm özelliğinden yararlandık.
Yukarıdaki örnekler, Python'da nesne tabanlı programlama kavramlarını örnek kod bloklarıyla açıklamaktadır. Nesne tabanlı programlama, kodların daha anlaşılır, yönetilebilir ve genişletilebilir hale getirilmesini sağlar.
Bu Repo konu anlatmaya yönelik bir Repo'dur. Sadık Turan sayesinde öğrendiğim ve faydalı gördüğüm Python dosyalarını, alakalı linkleri buraya atmaya çalışacağım.
Geniş bir şekilde konuyu öğrenmek için güzel kaynak:
Hem ingilizce hem de python bilgisi için çok yararlı kaynak:
x = 6
result = 5 < x < 10 #True değeri döner.
#ve
result = x > 5 and x < 10 #True
#veya
result = x > 5 or x % 2 == 0 #True, and olursa False olur.
#not
result = not(x > 5) #False
#x, 5-10 arasında olan bir çift sayı mı?
result = x > 5 and x < 10 and x % 2 == 0 #True döner
result = x < 5 and x < 10 and x % 2 == 0 #False döner
print(result)
1- Girilen bir sayınıin 0-100 arasında olup olmadığını kontrol ediniz.
sayi = float(input('sayı: '))
result = sayi > 0 and sayi <= 100
print(f'Sayı 0-100 arasında mı: {result}') #14 için==> Sayı 0-100 arasında mı: True çıktsını verir.
2- Girilen bir sayınıin pozitif sayı olup olmadığını kontrol ediniz.
sayi = int(input('sayı: '))
result = sayi > 0 and sayi % 2 == 0
print(f'Girilen sayı çift sayı mı: {result}')
3- Email ve parola bilgileri ile giriş kontrolü yapınız.
email = '[email protected]'
password = 'abc123'
girilenmail = input('Email: ')
girilenpassword = input('Password: ')
result = (girilenmail == email) and (girilenpassword == password)
print(f'Uygulamaya giriş başarılı mı: {result}')
4- Girilen 3 sayıyı büyüklük olarak karşılaştırınız.
from sys import float_info
from this import d
from typing import final
a = int(input('a: '))
b = int(input('b: '))
c = int(input('c: '))
result = a>b and a>c
print(f'a en büyük sayıdır: {result}')
result = b>a and b>c
print(f'b en büyük sayıdır: {result}')
result = c>a and c>b
print(f'c en büyük sayıdır: {result}')
#En büyük sayı True değeri döner geri kalanı ise False değeri döner.
5- Kullanıcıdan 2 vize (%60) ve final (%40) notunu alıp ortalama hesaplayın
#Eğer ortalama 50 ve üstündeyse geçti değilse kaldı yazdırın
a-) Ortamalama 50 olsa bile final notu en az 50 olmalıdır
b-) Finalden 70 alındığında ortalamanın önemi olmasın.
vize1 = float(input('Vize 1: '))
vize2 = float(input('Vize 2: '))
final1 = float(input('Final: '))
ortalama = (((vize1 + vize2)/2)*0.6 + final1*0.4)
result = (ortalama > 49) and (final1 > 49)
print(f'Ortalama: {ortalama} Geçme durumunuz: {result}')
6- Kişinin ad, kilo ve boy bilgilerini alıp kilo indekslerini hesaplayın
Formül: (Kilo / boy uzunluğunun karesi)
Aşağıdaki tabloya göre kişi hangi gruba girmektedir.
0-18.4 => Zayıf
18.5-24.9 => Normal
25.0-29.9 => Fazla Kilolu
30.0-34.9 => Şişman (Obez)
name = input('Adınız: ')
kg = float(input('Kilonuz: '))
hg = float(input('Boyunuz: ')) #Boy 1.73 şeklinde yazılmalıdır.
index = (kg) / (hg ** 2)
zayif = index >= 0 and index <= 18.4
normal = index > 18.4 and index <= 24.9
kilolu = index > 24.9 and index <= 29.9
obez = index > 29.9
print(f'{name} kilo indeksin: {index} ve kilo değerlendirmen zayıf: {zayif}')
print(f'{name} kilo indeksin: {index} ve kilo değerlendirmen normal: {normal}')
print(f'{name} kilo indeksin: {index} ve kilo değerlendirmen kilolu: {kilolu}')
print(f'{name} kilo indeksin: {index} ve kilo değerlendirmen obez: {obez}')
#Eğer Kilo:62 ve Boy:1.73 yazarsak normal: True olarak dönecektir.
##Identify Operator: is
#x = y = [1, 2, 3]
#z = [1, 2, 3]
#print(x==y) #True
#print(x==z) #True
#print(x is y) #True değer döner
#print(x is z) #False değer döner çünkü değerlere bakmaz x ve y nin kendisine bakar.
x =[1,2,3]
y =[2,4]
del x[2] #x içindeki 3 silinir.
y[1] = 1 #y içindeki 4 1 olarak değişir.
y.reverse()
print (x==y) #True değeri döner çünkü elemanları x değerlerine çevirdik.
print(x is y) #False değer döner.
#Membership Operator: in
x = ['apple', 'banana']
print('banana' in x) #'banana' liste içinde var mı: True değerini döner.
name = 'Çınar'
print('a' in name) #True döner yani 'a' değeri Çınar içerisinde bulunur.
print('a' not in name) #False değerini döner 'a' değeri Çınar stringinde bulunur.
if 3 > 2:
print('HoşGeldin...') #Yazar.
if 3 > 3:
print('HoşGeldin...') #False olduğu için yazdıramaz.
isLoggedin = True
if isLoggedin:
print('aaaa') #'aaaa' değerini döndürür. Fakat 'False' yaparsak değer dönmez.
username = 'memo'
password = '1234'
isLoggedin = username=='memoo' and password=='1234'#Yanlış yazdırdık
if isLoggedin:
print('Şifre Doğru hoşgeldin.') #Hatalı bilgiler girilince burayı atlar.
else:
print('Bilgileriniz yanlış') #Hatalı bilgiler olduğu için burayı basar.
if (username=='memo') and (password=='1234'): #Kullanıcı adı ve şifre dpğru ise print içindeki ifadeyi basar.
print('Şifre Doğru hoşgeldin.')
#Eğer kullanıcı Hangisinin doğru olmadığını öğrenmek isterse
if (username=='memo'):
if (password =='1234'):
print('Şifre ve Kullanıcı adı doğru.') #Kullanıcı adı ve Parola doğru ise bu bloğu yazdırır.
else:
print('Parolanız yanlış.') #Parola eğer yanlış olursa bir if 'password' bloğuna geçer ve else bloğu çalışır.
x = int(input('x: '))
y = int(input('y: '))
if x > y:
print('x y den büyük') #10 a 9 girilince if bloğu çalışır.
elif x==y:
print('x y eşit') #9 a 9 değerler girilince elif bloğu çalışır.
else:
print('y x den büyük') #8 a 9 girilince else bloğu çalışır.
num = int(input('sayı: '))
if num > 0:
print('Sayı pozitif') #(20) girilince bu blok çalışır
elif num < 0:
print('Sayı Negatif') #(-20) girilince bu blok çalışır
else:
print('Sayı sıfır') #(0) girilince bu blok çalışır
#1- Kullanıcıdan isim, yaş ve eğitim bilgilerini isteyip ehliyet alabilme #durumunu kontrol ediniz. Ehliyet alma kosulu en az 18 ve eğitim durumu #lise ya da üniversite olmalıdır.
from unicodedata import name
isim = input('isminiz: ')
yas = int(input('Yaşınız: '))
egitim = input('Eğitim: ')
#if (yas > 18) and (egitim == 'lise' or egitim =='üniversite'):
# print('Ehliyet alabilirsiniz.') #Yaş 18 den büyük ve eğitimin lise veya üniversite olması gerekmektedir.
#else:
# print('Ehliyet alamazsınız.')
#Ehliyetin neyden dolayı alınamadığını öğrenmek için
if (yas > 18):
if (egitim == 'lise' or egitim =='üniversite'):
print(f'{isim} Ehliyeti alabilirsin.') #Yaş 18 den büyük ve eğitimin lise veya üniversite olması gerekmektedir.
else:
print(f'{isim} Eğitim durumunuzdan dolayı ehliyet alamazsın.')
else:
print(f'{isim} yaşınızdan dolayı ehliyet alamazsınız.')
#2- Bir öğrencinin 2 yazılı bir sözlü notunu alıp hesaplanan ortalamaya göre
# not aralığına karşılık gelen not bilgisini yazdırınız.
# 0 - 24 => 0
# 25-44 => 1
# 45-54 => 2
# 55-69 => 3
# 70-84 => 4
# 3 85-100 => 5
yazili1 = int(input('1.Yazılı: '))
yazili2 = int(input('2.Yazılı: '))
sozlu = int(input('Sözlü: '))
ortalama = (yazili1 + yazili2 + sozlu)/3
if ortalama >= 0 and ortalama < 25:
print(f'Ortalamanız : {ortalama} notunuz: 0')
elif ortalama >=25 and ortalama < 45:
print(f'Ortalamanız : {ortalama} notunuz: 1')
elif ortalama >=45 and ortalama < 54:
print(f'Ortalamanız : {ortalama} notunuz: 2')
elif ortalama >= 55 and ortalama < 69:
print(f'Ortalamanız : {ortalama} notunuz: 3')
elif ortalama >= 70 and ortalama < 84:
print(f'Ortalamanız : {ortalama} notunuz: 4')
elif ortalama >= 85 and ortalama <=100:
print(f'Ortalamanız : {ortalama} notunuz: 5')
else:
print('Yanlış bilgi girdiniz.')
#3- Trafiğe çıkış tarihi alınan bir aracın servis zamanını aşağıdaki bilgilere göre hesaplayinız.
# 1. Bakım => 1. yıl
# 2. Bakım => 2. yıl
# 3. Bakım => 3. yıl
# ** Süre hesabını alınan gün, ay, yıl bilgisine göre gün bazlı hesaplayınız
# *** datetime modülünü kullanmanız gerekiyor.
# (simdi) - (2018/8/1) => gün
import datetime #Modül Kullanma
tarih = input('Aracınız hangi tarihte trafiğe çıktı (2019/8/9): ')
tarih = tarih.split('/')
#print(tarih[0]) #2019
#print(tarih[1]) #8
#print(tarih[2]) #9 oalrak yazdırır.
trafigecikis = datetime.datetime(int(tarih[0]),int(tarih[1]),int(tarih[2]))
simdi = datetime.datetime.now() #datetime.now() modülü kodun derlendiği anın saat ve tarihini yazdırır.
fark = simdi - trafigecikis #Aradan geçen zamanın ne kadar olduğunu hesaplamak için farkı alındı.
days = fark.days
if days <= 365:
print('1.Servis Aralığı ')
elif days > 365 and days <= 365*2:
print('2.Servis Aralığı ')
elif days > 365*2 and days <= 365*3:
print('3.Servis Aralığı')
else:
print('Hatalı süre') #Eğer girilen süre üzerinden 365*3 gün geçerse bunu yazar.
''' 1- Girilen bir sayının 0-100 arasında olup olmadığını kontrol ediniz.
sayi = float(input('sayı: '))
result = (sayi > 0) and (sayi<=100)
if result:
print(f'Sayı 0-100 arasındadır.')
else:
print('Sayı 0-100 arasında değildir.')
''' 2- Girilen bir sayının pozitif çift sayı olup olmadığını kontrol ediniz.
sayi = int(input('sayı: '))
result = (sayi > 0) and (sayi % 2 ==0)
if (sayi > 0):
if (sayi % 2 ==0):
print(f'Girilen sayı pozitif çift sayıdır.')
else:
print('Girilen sayı tektir.')
elif sayi < 0 and sayi % 2 ==0:
print('Sayı negatift çift sayıdır.')
else:
print('Sayı çift değildir.')
''' 3- Email ve parola bilgileri ile giriş kontrolü yapınız.
email = '[email protected]'
password = 'abc123'
girilenemail = input('Email: ')
girilenpassword = input('Password: ')
result = (girilenemail == email) and (girilenpassword == password)
if (girilenemail == email):
if (girilenpassword == password):
print(f'Uygulamaya giriş başarılı.')
else:
print('Yanlış Parola girdiniz.')
else:
print(f'Email bilgisi yanlış')
''' 4- Girilen 3 sayıyı büyüklük olarak karşılaştırınız.
a = int(input('a: '))
b = int(input('b: '))
c = int(input('c: '))
if (a > b) and (a > c):
print(f'a en büyük sayıdır.')
elif (b > a) and (b > c):
print(f'b en büyük sayıdır.')
elif (c > a) and (c > b):
print(f'c en büyük sayıdır.')
else:
print('Yanlış değer girdiniz.')
''' 5- Kullanıcıdan 2 vize (%60) ve final (%40) notunu alıp ortalama hesaplayınız.
#Eğer ortalama 50 ve üstündeyse geçti değilse kaldı yazdırın.
#a-) Ortamalama 50 olsa bile final notu en az 50 olmalıdır.
#b-) Finalden 70 alındığında ortalamanın önemi olmasın.
vize1 = float(input('vize 1: '))
vize2 = float(input('vize 2: '))
final = float(input('final : '))
ortalama = ((vize1+vize2)/2)*0.6 + (final * 0.4)
#result = (ortalama>=50) and (final>=50)
#result = (ortalama >=50) or (final>=70)
if ortalama >= 50:
if final >= 50:
print(f'Öğrencinin ortalaması: {ortalama} ve geçme durumu: başarılı.')
else:
print(f'Öğrencinin ortalaması: {ortalama} ve geçme durumu: başarısız.')
else:
print(f'Öğrencinin ortalaması: {ortalama} ve geçme durumu: başarısız.')
numbers = [1,2,3,4,5]
#Eğer for döngüsü olmasaydı bunların hepsini elle yazmak zorunda kalacaktık.
#print(numbers[0]) #1
#print(numbers[1]) #2
#print(numbers[2]) #3
#print(numbers[3]) #4
#print(numbers[4]) #5 çıktılarını verirler
for num in numbers:
print(num) #Yine aynı çıktıyı verir. Daha kısa.
names = ['çınar', 'sadık', 'sena']
for name in names:
print(f'My name is {name}') #Tüm isimleri cümle ile birlikte yazar.
name = 'ABCDEF'
for n in name:
print(n) #name stringini harf harf yazdırır.
#Her eleman bir dizi eleman olarak yazdırılır.
tuple = (1,2,3,4,5)
for t in tuple:
print(t) #Aynı şekilde Yazdırılır.
#Hatırlatma: "Tuple içinde değişiklik yapılamaz."
tuples = [(1,2),(3,4),(5,6)]
for x,y in tuples:
print(x)
#(1, 2)
#(3, 4)
#(5, 6) olarak çıktı verir.
d = {'k1':1, 'k2':2, 'k3':3}
for item in d.items():
print(item)
#('k1', 1)
#('k2', 2)
#('k3', 3)
for key,value in d.items():
print(key,value)
#k1 1
#k2 2
#k3 3
sayilar = [1,3,5,7,9,12,19,21]
#1- Sayilar listesindeki hangi sayılar 3'ün katıdır ?
for sayi0 in sayilar:
if (sayi0 % 3 == 0):
print(sayi0) #3 9 12 21 çıktısını verir.
#2- Sayilar listesinde sayıların toplamı kaçtır ?
toplam = 0
for sayi1 in sayilar:
toplam += sayi1
print('Toplam: ',toplam) #77 değerini verir.
#3- Sayilar listesindeki tek sayıların karesini alınız.
for sayi2 in sayilar:
if (sayi2 % 2 == 1): #Tek olduğunu anlmak için 2 bölümğnden kalan 1 olmalıdır.
print(sayi2 ** 2) #1 9 25 49 81 361 441 çıktısını verir
#4- Şehirlerden hangileri en fazla 5 karakterlidir ?
from unicodedata import name
sehirler = ['kocaeli','istanbul','ankara','izmir','rize']
for sehir in sehirler:
if (len(sehir) <= 5):
print(sehir) #izmir rize çıktısını verir.
print('\n')
urunler = [
{'name':'samsung S6' , 'price': '3000' },
{'name':'samsung S7' , 'price': '4000' },
{'name':'samsung S8' , 'price': '5000' },
{'name':'samsung S9' , 'price': '6000' },
{'name':'samsung S10', 'price': '7000' }
]
#5- Ürünlerin fiyatları toplamı nedir ?
toplam = 0
for urun in urunler:
fiyat = int(urun['price'])
toplam += fiyat
print('Toplam ürün fiyatı:',toplam) #25000 yazdırır.
#6- Ürünlerden fiyatı en fazla 5000 olan ürünleri gösteriniz ?
for urunfiyat in urunler:
if int(urunfiyat['price']) <= 5000:
print(urunfiyat['name'])
#samsung S6
#samsung S7
#samsung S8
#0-100 e kadar yazdırma
#x = 0
#while x <= 100: #100 e kadar (dahil) anlamına gelir.
# if x % 2 == 0: #Koşul eklenebilir Burada sadece çift sayıları alır.
# print(f'Sayı çifttir: {x}') #Ör: Sayı çifttir: 10
# else:
# print(f'Sayı tektir: {x}') #Ör: Sayı tektir: 11
# x += 1 #x = x + 1 anlamına gelmekte ve her adımda 1 artar.
#print('Döngü bitti...')
name = '' #Boşlık False anlamına gelir.
#Eğer not name denilirse False ın değili yani True değer döner.
while not name.strip(): #Eğer isim girilmezse döngüye girer ve yazılana kadar bekler.
#Boşluğu kontrol etmesi için strip() metodunu kullanabiliriz.
name = input('İsminizi Girin: ')
print(f'Merhaba, {name}')
sayilar = [1,3,5,7,9,12,19,21]
#1: sayilar listesini while ile ekrana yazdırın.
#i = 0
#while(i < len(sayilar)):
# print(sayilar[i])
# i += 1
#2: Başlangıç ve bitiş değerlerini kullanıcıdan alıp aradaki tüm tek sayıları ekrana yazdıirın.
#baslangic = int(input('Başlangıç: '))
#bitis = int(input('Bitiş: '))
#i = baslangic
#while i < bitis: #Bitişe kadar devam etsin.
# i += 1 #Her seferinde 1 artar.
# if i % 2 == 1: #Tek sayıları yazdrımak için kullanılır.
# print(i) #Başlangıç değerden bitiş değerine kadar tüm sayıları yazar.
#3: 1-100 arasındaki sayıları azalan şekilde yazdırın.
#i = 100 #Normlade 0 dan 100 yazdırmak için i=0 olurdu tam tersi yazılacak
#while i > 0:
# print(i)
# i -= 1 #Her defasında 1'azalır.
#4: Kullanıcıdan alacağınız 5 sayıyı ekranda 'sıralı' bir şekilde yazdırın.
#numbers = []
#i = 0
#while i < 5:
# sayi = int(input('Sayı: '))
# numbers.append(sayi)
# i += 1
#numbers.sort() #Sayıları küçükten büyüğe doğru sıralar.
#print(numbers) #Girilen sayıları :[10, 20, 30, 40, 50] şeklinde yazdırır.
#5: Kullanıcıdan alacağınız sınırsız ürün bilgisini urunler listesi içinde saklayın.
# ** ürün sayı1sını kullanıcıya sorun.
# ** dictionary listesi yapısı (name, price) şeklinde olsun.
# ** ürün ekleme işlemi bittiğinde ürünleri ekranda while ile listeleyin.
urunler = []
adet = int(input('Kaç ürün eklemek istiyorsunuz: '))
i = 0
while(i < adet):
name = input('Ürün ismi: ')
price = int(input('Ürün fiyatı: '))
urunler.append({
'name': name,
'price': price
})
i += 1
for urun in urunler:
print(f'Ürün adı: {urun["name"]} Ürün fiyatı: {urun["price"]}')
#Kaç ürün eklemek istiyorsunuz: 2
#Ürün ismi: Ekmek
#Ürün fiyatı: 5
#Ürün ismi: Su
#Ürün fiyatı: 10
#Ürün adı: Ekmek Ürün fiyatı: 5
#Ürün adı: Su Ürün fiyatı: 10
#1 den 100 e kadar tek sayıların toplamı
from unittest import result
result = 0
x = 1
while x <= 100:
x += 1
if x % 2 == 1:
continue
result += x
print(f'Toplam: {result}') #Toplam: 2550 sonucunu verir.
for item in range(5,10): #5'ten başla 10 a kadar yazdır.
#Artış miktarı için bir virgül daha atıp istediğiniz sayıyı yazabilirsiniz.
print(item)
for item in range(50,100,20):
print(item)
print(list(range(50,100,20))) #Liste şeklinde yazdırır.
#index = 0
#greeting = 'Hellothere'
#for letter in greeting:
# print(f'index: {index} letter: {greeting[index]}') #Indexleri yazdırır.
# index += 1
#print("\n")
#for index,letter in enumerate(greeting):
# print(f'index: {index} letter: {letter}') #Indexleri yazdırır. Yukardaki örneğin benzeri.
# #index: 0 letter: H
# #index: 1 letter: e
# #index: 2 letter: l ... gibi yazdırır.
#print("\n")
#for item in enumerate(greeting):
# print(item)
# #(0, 'H')
# #(1, 'e')
# #(2, 'l') ... gibi yazdırır.
#print("\n")
#for index, item in enumerate(greeting):
# print(f'index: {index} letter: {item}')
print("\n")
#zip metodu
list1 = [1,2,3,4,5]
list2 = ['a','b','c','d','e']
#Liste sayısı arttırılabilir. (Benzer şekilde)
print(list(zip(list1,list2))) #[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')] olarak yazar.
print("\n")
for item in zip(list1, list2):
print(item)
#(1, 'a')
#(2, 'b')... olarak çıktı verir.
print("\n")
for a,b in zip(list1, list2):
print(a,b)
#1 a
#2 b
#3 c
#4 d... olaak çıktı verir.
numbers = []
for x in range(10):
numbers.append(x)
print(numbers) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] olarak yazar.
print("\n")
numbers = [x for x in range(10)]
print(numbers) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] olarak yazar.
print("\n")
for c in range(10):
print(x**2)
numbers = [x**2 for x in range(10)]
print(numbers) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] olarak yazar.
print("\n")
numbers = [x*x for x in range(10) if x%3==0]
print(numbers) #[0, 9, 36, 81] olarak yazdırır.
print("\n")
myString = 'Hello'
myList = []
for letter in myString:
myList.append(letter)
print(myList) #['H', 'e', 'l', 'l', 'o'] olarak yazar.
print("\n")
years = [1983,1999,2008,1956,1986]
ages = [2019-year for year in years]
print(ages) #[36, 20, 11, 63, 33] olarak değerleri döner.
results = [x if x%2==0 else 'TEK' for x in range(1,10)]
print(results) #['TEK', 2, 'TEK', 4, 'TEK', 6, 'TEK', 8, 'TEK']
print("\n")
result = []
for x in range(3):
for y in range(3):
result.append((x,y))
print(result)
#[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
print("\n")
#Yukardaki kod ile aynı cevabı verir.
numbers = [(x,y) for x in range(3) for y in range(3)]
print(numbers)
#[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
#x y yanında z olarak kullanılabilir çıktısı (x, y, z) şeklinde olur.
''' 1-100 arasında rastgele üretilecek bir sayıyı aşağı yukarı ifadeleri ile buldurmaya çalışın. (hak = 5) olacak. ** "random modülü" için "python random" şeklinde arama yapın. ** 100 üzerinden puanlama yapın. Her soru 20 puan. ** Hak bilgisini kullanicıdan alın ve her soru belirtilen can sayısı üzerinden hesaplansın. '''
import random
sayi = random.randint(1,10) #1 den 10 a kadar sayıları yazdırır.
can = int(input('Kaç hak kullanmak istersiniz: '))
hak = can
sayac = 0
while hak > 0:
hak -= 1 #Her seferinde kişinin hakkı 1 eksilir.
sayac += 1
tahmin = int(input('Tahmin: '))
if sayi == tahmin:
print(f'Tebrikler {sayac}. defada bildiniz. Toplam puanınız: {100 - (100 / can) * (sayac - 1)}')
break
elif sayi < tahmin:
print('Sayı tahmininizden küçüktür...')
elif sayi > tahmin:
print('Sayı tahmininizden büyüktür...')
else:
print('Yanlış karakter girdiniz.')
if hak == 0:
print(f'Hakkınız bitti. Tutulan sayı: {sayi}')
''' Soru: Girilen sayının asal olup olmadığını bulunuz. *** Asal sayı kendisi ve 1 dışında böleni olmayan sayılardır. 2, 3, 5, 7.... '''
sayi = int(input('Sayı girin: '))
asalmi = True
if sayi == 1:
#print('1 Sayısı asal değildir.')
asalmi = False
1
for i in range(2, sayi):
if (sayi % i == 0):
asalmi = False
break
if asalmi:
print('Sayı asaldır.')
else:
print("Sayı asal değildir.")
#metodlar
list = [1,2,3]
list.append(4) #[1,2,3,4]
#append bir metottur ve listeye 4 ekler
list.pop() #[1,2,3]
#pop da bir metottur ve listenin sonundaki eleman silinir.
print(type(list)) #<class 'list'>
print(list)
myString= 'Hello'
print(type(myString)) #<class 'list'>
print(myString.upper()) #HELLO
'''
METOT-FONKSİYON FARKI
Sonuç olarak fonksiyon ve metotlar; kodların tekrar
kullanılabilirliğini sağlamaktadır. Fonksiyonlar,
kullanıcı tarafından tanımlanabileceği gibi Python'da
hazır olarak da tanımlanmıştır. Metotlar ise sadece sınıf
içinde tanımlanımlanırken örneklem üzerinden metotlara
ulaşabiliriz.
#def demek o parçanın fonkiyon olduğu anlamına gelir.
#def sayHello(name):
# print('Hello ' + name)
#sayHello('Çınar') #Hello Çınar çıktısını verir.
def sayHello(name = 'user'):
return 'Hello ' + name
msg = sayHello('Çınar') #Hello Çınar yazdırır.
print(msg)
def total(num1, num2):
return num1 + num2
result = total(10,20)
print(result) #30 çıktısını verir.
def yasHesapla(dogumyili):
return 2019 - dogumyili
agecinar = yasHesapla(2015)
ageada = yasHesapla(2010)
print(agecinar, ageada) #4 9 sonçlarını verir.
def emeklilignekadarkaldı(dogumyili, isim):
'''
DOCSTRING: Doğum yılınıza göre emekliliğinize kaç yıl kaldı
INPUT: Doğum yılı
OUTPUT: Hesaplanan yıl bilgisi
'''
yas = yasHesapla(dogumyili)
emeklilik = 65 - yas
if emeklilik > 0:
print(f'Emekliliğinize {emeklilik} yıl kaldı ')
else:
print('zaten emekli oldunuz.')
emeklilignekadarkaldı(1983, 'Ali') #Emekliliğinize 29 yıl kaldı
emeklilignekadarkaldı(1950, 'Ali') #Zaten emekli oldunuz.
print(help(emeklilignekadarkaldı))
#DOCSTRING: Doğum yılınıza göre emekliliğinize kaç yıl kaldı
#INPUT: Doğum yılı
#OUTPUT: Hesaplanan yıl bilgisi
list = [1,2,3]
print(help(list.append)) #Ekleme yapılabileceğini söylüyor.
from multiprocessing.sharedctypes import Value
def changename(n):
n = 'ada'
name = 'yigit'
changename(name)
print(name) #yigit
def change1(n):
n[0] = 'İstanbul' #ilk indise(0) 'İstanbul'u ata.
sehirler = ['Ankara', 'İzmir']
n = sehirler[:] #slicing işlemi yapıldı.
n[0] = 'İstanbul'
print(sehirler) #['Ankara', 'İzmir']
print(n) #['İstanbul', 'İzmir'] olarak yazar.
def add(a, b, c = 0): #c=0 dememizin sebebi eğer c ye bir parametre atanmadıysa değeri 0 olsun.
return sum((a, b, c))
print(add(10, 20)) #30 çıktısını verir c=0 olarak alınmıştır
print(add(10, 20, 30)) #c yerine 30 atıyor.
#Bunun yerine alternatif olarak:
def add(*params):
print(params) #Gönderilen tüm sayılar bir liste olarak yazdırılır. (Tuple listesi olarak)
return(sum(params))
print(add(10, 20))
print(add(10,20,30,40,50,60)) #İstediğimiz kadar parametre atayabiliriz. (Çıktı: 210)
def displayUser(**args): #2 yıldız dictionary(sözlük) olmasını sağlar.
for key, Value in args.items():
print(type(args)) #<class 'dict'>
print('{} is {}'.format(key,Value))
#name is Çınar
#age is 2 ... gibi yazdırır
displayUser(name = 'Çınar', age = 2, city = 'İstanbul')
displayUser(name = 'Elif', age = 10, city = 'Sakarya', phone = '123456789')
displayUser(name = 'Mehmet', age = 15, city = 'Amasya', phone = '987987989', email = '[email protected]')
def myFunc(a, b, *args, **kwargs):
print(a)
print(b)
print(args)
print(kwargs)
myFunc(10,20,30,40,50, key1 = 'Value 1', key2 = 'Values 2')
#10
#20
#(30, 40, 50)
#{'key1': 'Value 1', 'key2': 'Values 2'}
#1- Gönderilen bir kelimeyi belirtilen kez ekranda gösteren fonksiyonu yazın.
def yazdir(kelime, adet):
print(kelime * adet)
yazdir('Merhaba \n', 3) #3 defa merhaba yazdırır.
#2- Kendine gönderilen sınırsız sayıdaki parametreyi bir listeye çeviren fonksiyonu yaz.
def listeyeCevir(*args): #Sınırsız olması için * kullanımı önemlidir.
liste = []
for a in args:
liste.append(a)
return liste
result = listeyeCevir(10,20,30,7,8,9,6,6,3,2,6,3,4)
print(result) #[10, 20, 30, 7, 8, 9, 6, 6, 3, 2, 6, 3, 4]
#3- Gönderilen 2 sayı arasındaki tüm asal sayıları bulun.
#def asalSayilariBul(sayi1, sayi2):
# for sayi in range(sayi1, sayi2 + 1):
# if sayi > 1:
# for i in range(2, sayi):
# if sayi % i == 0:
# break #Eğer sayı asal değilse bırak.
# else:
# print(sayi)
# break
#sayi1 = int(input('1. sayı: '))
#sayi2 = int(input('2. sayı: '))
#asalSayilariBul(sayi1, sayi2)
#4- Kendisine gönderilen bir sayınıin tam bölenlerini bir liste şeklinde döndürür.
def tambolen(sayimiz):
tambol = []
for i in range(2, sayimiz):
if sayimiz % i == 0:
tambol.append(i)
return tambol
print(tambolen(20)) #[2, 4, 5, 10]
#Map-Filter
import numbers
def square(num): return num ** 2
numbers1 = [1, 3, 5, 7, 4, 6]
result = list(map(square, numbers1))
#map metodu bellektki adresi verir. Fakat list ile yazdırırsak bize numebrs listesini çağırır.
for item in map(square, numbers1):
print(item)
#Veya başka bir kullanım yolu da
numbers2 = [2, 4, 6, 8]
result = list(map(lambda num: num ** 2, numbers2))
print(result) #[4, 16, 36, 64] olarak çıktı verecektir.
numbers1 = [1, 3, 5, 7, 4, 6]
def check_even(num): return num % 2 == 0
result = list(filter(check_even, numbers1))
print(result) #[4, 6] olarak yazar.
#Veya
result = list(filter(lambda num: num%2==0, numbers1))
print(result)
#Ya da
check_even = lambda num: num%2==0
result = check_even(numbers[2])#Sayı tek olduğu için False bilgisini döner.
print(result)
name = 'Ali'
def changename(newname):
name = newname
print(name) #Memo
changename('Memo')
print(name) #Ali
#############################
name = 'Global String'
def greeting():
#name = 'Ali' -- Yorum satırı kaldırılırsa hello Ali yazar.
def hello():
print('Hello' + name)
hello()
greeting()
#hello Global String i yazdırır.
#############################
x = 50
def test():
global x
print(f'x: {x}')
x = 100
print(f'Changed x to {x}')
test()
print(x)
#x: 50 (global x yazılırsa)
#Changed x to 100 (global x yazılırsa)
#100 (global x yazılırsa)
#############################
x = 50
def test(x):
print(f'x: {x}')
x = 100
print(f'Changed x to {x}')
test(x)
print(x)
#x: 50
#Changed x to 100
#50
AliHesap = {
'ad': 'Ali Pala',
'hesapNo': '11111111',
'bakiye': 3000,
'ekHesap': 2000
}
AyseHesap = {
'ad': 'Ayse Pala',
'hesapNo': '22222222',
'bakiye': 200,
'ekHesap': 1000
}
def paraCek(hesap,miktar):
print(f"Merhaba {hesap['ad']}")
if hesap['bakiye'] >= miktar :
hesap['bakiye'] -= miktar
print('Paranızı alabilirsiniz.')
bakiyeSorgula(hesap)
else:
toplam = hesap['bakiye'] + hesap['ekHesap']
if toplam >= miktar:
ekHesapKullanimi = input('Ek hesaptan para çekilsin mi ? (e/h)')
if ekHesapKullanimi == 'e':
bakiye = hesap['bakiye']
ekhesapkulllanilacakmiktar = miktar - hesap['bakiye']
hesap['bakiye'] = 0
hesap['ekHesap'] -= ekhesapkulllanilacakmiktar
print('Paranızı alabilirsiniz.')
else:
print(f"{hesap['hesapNo']} nolu hesabınızda {hesap['bakiye']} bulunmaktadır.")
else:
print('Üzgünüm bakiyeniz yetersiz.')
def bakiyeSorgula(hesap):
print(f"{hesap['hesapNo']} nolu hesabınızda {hesap['bakiye']} TL bulunmaktadır. Ek hesap limitiniz ise {hesap['ekHesap']} TL bulunmaktadır. ")
paraCek(AliHesap, 3000)
bakiyeSorgula(AliHesap)
print(' *****************')
paraCek(AliHesap, 2000)
#object Orianted Programming (OOP)
#Class
#instance --> Object
list1 = [1,2,3,4]
list2 = [1,2,3,4,5]
result = type(list1)
print(result) #<class 'list'>
result = type(list2) #List1 bir için ne olduğunu class ifadesi ile verir.
print(result) #<class 'list'>
#Classlar
from ctypes import addressof
class Person:
pass #Boş olması durumunda hata verir. Fakat pass keywordu ile boş alan doldurulmuş olur.
#(class) attributes
address = 'no information' #Her zaman kullanılmayacak özellikler class attributes adı altında belirtilir.
#consturcator (yapıcı metot)
def __init__(self, name, year): #self yerine başka bir parametre ismi konulabilir.
#Önemli olan self parametresinin görevini yerine getirmesidir.
#(object) attributes
self.name = name
self.year = year
print('init metodu çalıştı.') #2 defa init metodu çalıştı yazar.
#methodlar
#if a > 10:
# pass
# Böylece bir şey yazmamıza gerek kalmaz.
#Object (instance)
p1 = Person(name = 'ali', year = 1990) #name : ali , year: 1990
p2 = Person('ayse', 1992) #name : ayse , year: 1992
#updating
p1.name = 'ahmet' #ali ismi ahmet olarak değişir.
p1.address = 'kocaeli' #no information bilgisi kocaeli olarak yazdırılır.
#accessing object attributes
print(f'name: {p1.name} , year: {p1.year} , adres: {p1.address}.')
print(f'name: {p2.name} , year: {p2.year} , adres: {p2.address}')
print(p1) #<__main__.Person object at 0x0000021A5ED4AD10> yani bellekte p1 nesnesi için yer ayrıldı.
print(p2) #p2 tanımldanığı andan itibaren bellekte yer tahsisi yapılır.
print(type(p1)) #<class '__main__.Person'>
print(type(p2)) #<class '__main__.Person'>
print(p1 == p2) #False döndürür.
#Classlar
from ctypes import addressof
class Person:
pass #Boş olması durumunda hata verir. Fakat pass keywordu ile boş alan doldurulmuş olur.
#(class) attributes
address = 'no information' #Her zaman kullanılmayacak özellikler class attributes adı altında belirtilir.
#consturcator (yapıcı metot)
def __init__(self, name, year): #self yerine başka bir parametre ismi konulabilir.
#Önemli olan self parametresinin görevini yerine getirmesidir.
#(object) attributes
self.name = name
self.year = year
#instance methods
def intro(self):
print('Hello there. I am ' + self.name) #Hello there. I am ali
#instance methods
def calculateAge(self):
return 2019 - self.year
#Object (instance)
p1 = Person(name = 'ali', year = 1990) #name : ali , year: 1990
p2 = Person('ayse', year = 1992) #name : ayse , year: 1992
p1.intro() #Hello there. I am ali
p2.intro() #Hello there. I am ayse
print(f'Adım: {p1.name} ve Yaşım: {p1.calculateAge()}') #Adım: ali ve Yaşım: 29
print(f'Adım: {p2.name} ve Yaşım: {p2.calculateAge()}') #Adım: ayse ve Yaşım: 27
class Circle:
#class object attribute
pi = 3.14
def __init__(self, yaricap = 1):
self.yaricap = yaricap
#Methods
def cevreHesapla(self):
return 2 * self.pi * self.yaricap
def alanHesapla(self):
return self.pi * (self.yaricap ** 2)
c1 = Circle() #Yaiçap belirtilmezse oto 1 alınır.
c2 = Circle(5)
print(f'c1 : alan = {c1.alanHesapla()} çevre = {c1.cevreHesapla()}') #c1 : alan = 3.14 çevre = 6.28
print(f'c2 : alan = {c2.alanHesapla()} çevre = {c2.cevreHesapla()}') #c2 : alan = 78.5 çevre = 31.400000000000002
#Inheritance (Kalıtım): Miras ALma
#Person => name, lastname, age, eat(), run(), drink()
#Student, Teacher da olmasını isteriz
#Bu yzüden Studen(Person), Teacher(Person) ile Person Sınıfını miras alırız.
#Ya da
#Animal => Dog(Animal), Cat(Animal) gibi ...
class Person():
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
print('Person created')
def who_am_i(self):
print('I am a Person :(')
def eat(self):
print('I am eating')
class Student(Person):
def __init__(self, fname, lname, number):
Person.__init__(self,fname,lname)
self.studentnumber = number
print('Student created')
#override
def who_am_i(self): #Yukarıda ki fonksiyonu ezmek (override etmek) için kullanıldı
print('I am a Student :)') #Override edilen fonka yazılan yeni Metin
def sayhello(self):
print('Helllo I am a STUDENT')
class Teacher(Person):
def __init__(self,fname,lname, branch):
super().__init__(fname,lname)
self.branch = branch
def who_am_i(self):
print(f'I am a {self.branch} TEACHER')
t1 = Teacher('Serkan','Arı','SOFTWARE')
p1 = Person('Mehmet', 'Ata')
s1 = Student('Ali', 'Bşaran','12356') #number sadece Student'a özel olduğu için sadece burda yazılabilir
#Person created
#Student created - Miras alıyor
print(p1.firstname + ' ' + p1.lastname) #Mehmet Ata
print(s1.firstname + ' ' + s1.lastname + ' ' + s1.studentnumber) #Ali Bşaran 12356
t1.who_am_i() #I am a SOFTWARE TEACHER
p1.who_am_i() #I am a Person
s1.who_am_i() #I am a Person
p1.eat() #I am eating
s1.eat() #I am eating
s1.sayhello() #Hello I am a STUDENT "Sadece Student'a ait bir yapıdır"
mylist = [1,2,3]
mystring = 'my string'
print(len(mylist))
print(len(mystring))
class movie():
def __init__(self,title,director,duration):
self.title = title
self.director = director
self.duration = duration
print('Movie objesi oluşturuldu.')
def __str__(self) -> str:
return f"{self.title} by {self.director}"
def __len__(self):
return self.duration
def __del__(self):
print('Film silindi')
m = movie('Film adı', 'Yönetmen', 120)
#print(mylist) #[1, 2, 3]
#print(m)
#print(m.duration) #120 == print(len(m))
del m #m objesini siler
print(m) #Film silindi
#Question class
class question:
def __init__(self,text,choices,answer) -> None:
self.text = text
self.choices = choices
self.answer = answer
def checkanswer(self,answer):
return self.answer == answer
#print(q1.checkanswer('Python')) - True
#print(q2.checkanswer('C#')) - False
#Quiz class
class quiz:
def __init__(self, questions) -> None:
self.questions = questions
self.score = 0
self.questionindex = 0
def getquestion(self):
return quiz.questions[self.questionindex]
def displayquestion(self):
question = self.getquestion()
print(f'Soru {self.questionindex + 1}: {question.text}')
for q in question.choices:
print('-> ' + q)
answer = input('Cavap: ')
self.guess(answer)
self.loadquestion()
def guess(self, answer):
question = self.getquestion()
if question.checkanswer(answer):
self.score += 1
self.questionindex += 1
def loadquestion(self):
if len(self.questions) == self.questionindex:
self.showscore()
else:
self.displayquestion()
def showscore(self):
print('Score: ',self.score)
#Soru - seçenekler - cevap
q1 = question('En iyi programlama dili hangisidir ?',['C#','javascript','java','Python'],'Python')
q2 = question('En iyi popüler dili hangisidir ?',['C#','Python','javascript','java'],'Python')
q3 = question('En çok kazandıran programlama dili hangisidir ?',['Python','javascript','C#','java'],'Python')
questions = [q1, q2, q3]
quiz = quiz(questions)
quiz.displayquestion()