Özet - Basit Hesap Makinesi
Coddy'nin Python Journey'sinin Object Oriented Programming bölümünün bir parçası — ders 8 / 64.
Görev
Ortacalculator.py dosyasındaki Calculator sınıfınız şunları yapmalıdır:
- Bir
resultözniteliğini 0 olarak başlatan bir yapıcıya (constructor) sahip olmalıdır - Her biri şunları yapan
add,subtract,multiplyvedividemetotlarını içermelidir:- Argüman olarak bir sayı almalıdır
- Mevcut
resultile sayı arasında işlemi gerçekleştirmelidir resultözniteliğini güncellemelidir- Yeni sonucu döndürmelidir
resultdeğerini 0'a sıfırlayan birclearmetodu içermelidir- Mevcut sonucu döndüren bir
get_resultmetodu içermelidir dividemetodu için, sıfıra bölme işlemini şu şekilde ele almalısınız:- Verilen sayının 0'a eşit olup olmadığını kontrol etmelisiniz
- Eğer sıfır ise, tam olarak şunu yazdırmalısınız: "Error: Division by zero"
- Bu durumda
resultözniteliğini değiştirmeden bırakmalısınız - Değişmemiş
resultdeğerini döndürmelisiniz
driver.py dosyası Calculator sınıfınızı içe aktaracak ve aşağıdakine benzer bir kodla test edecektir:
from calculator import Calculator
calc = Calculator()
calc.add(5) # result becomes 5
calc.multiply(3) # result becomes 15
calc.subtract(2) # result becomes 13
calc.divide(0) # prints "Error: Division by zero", result remains 13
calc.divide(2) # result becomes 6.5
calc.clear() # result becomes 0Gerekli tüm işlevleri uygulamak için calculator.py dosyasındaki TODO yorumlarını takip edin.
Kopya kağıdı
Temel aritmetik işlemleri içeren bir Calculator sınıfı oluşturun:
class Calculator:
def __init__(self):
self.result = 0
def add(self, number):
self.result += number
return self.result
def subtract(self, number):
self.result -= number
return self.result
def multiply(self, number):
self.result *= number
return self.result
def divide(self, number):
if number == 0:
print("Error: Division by zero")
return self.result
self.result /= number
return self.result
def clear(self):
self.result = 0
def get_result(self):
return self.resultKullanım örneği:
calc = Calculator()
calc.add(5) # sonuç 5 olur
calc.multiply(3) # sonuç 15 olur
calc.divide(0) # hata yazdırır, sonuç değişmezKendin dene
from calculator import Calculator
# Test senaryosu işleyici
test_case = input()
if test_case == "constructor_test":
# Hesap makinesi oluşturma ve başlangıç durumunu test et
calc = Calculator()
print(f"Initial result: {calc.get_result()}")
print("Calculator created successfully")
elif test_case == "addition_test":
# Toplama işlevini test et
calc = Calculator()
result1 = calc.add(10)
print(f"After adding 10: {result1}")
result2 = calc.add(5)
print(f"After adding 5: {result2}")
print(f"Final result: {calc.get_result()}")
elif test_case == "subtraction_test":
# Çıkarma işlevini test et
calc = Calculator()
calc.add(20) # 20 ile başla
result1 = calc.subtract(8)
print(f"After subtracting 8 from 20: {result1}")
result2 = calc.subtract(2)
print(f"After subtracting 2: {result2}")
print(f"Final result: {calc.get_result()}")
elif test_case == "multiplication_test":
# Çarpma işlevini test et
calc = Calculator()
calc.add(5) # 5 ile başla
result1 = calc.multiply(4)
print(f"After multiplying by 4: {result1}")
result2 = calc.multiply(2)
print(f"After multiplying by 2: {result2}")
print(f"Final result: {calc.get_result()}")
elif test_case == "division_test":
# Bölme işlevini test et
calc = Calculator()
calc.add(100) # 100 ile başla
result1 = calc.divide(4)
print(f"After dividing by 4: {result1}")
result2 = calc.divide(5)
print(f"After dividing by 5: {result2}")
print(f"Final result: {calc.get_result()}")
elif test_case == "division_by_zero_test":
# Sıfıra bölme hatası yönetimini test et
calc = Calculator()
calc.add(50)
print(f"Initial value: {calc.get_result()}")
result = calc.divide(0) # Hata mesajı yazdırmalı
print(f"Result after division by zero: {result}")
print(f"Value unchanged: {calc.get_result()}")
elif test_case == "clear_test":
# Temizleme işlevini test et
calc = Calculator()
calc.add(25)
calc.multiply(3)
print(f"Before clear: {calc.get_result()}")
result = calc.clear()
print(f"After clear: {result}")
print(f"Current result: {calc.get_result()}")
elif test_case == "comprehensive_test":
# Tüm işlemleri sırayla test et
calc = Calculator()
# Bir dizi işlem gerçekleştir
calc.add(10) # result = 10
calc.multiply(3) # result = 30
calc.subtract(5) # result = 25
calc.divide(5) # result = 5
print(f"After sequence of operations: {calc.get_result()}")
# Hata yönetimini test et
calc.divide(0) # Hata yazdırmalı
print(f"After division by zero attempt: {calc.get_result()}")
# Temizle ve yeniden başla
calc.clear()
calc.add(100)
print(f"After clear and add 100: {calc.get_result()}")
else:
print("Unknown test case")
Object Oriented Programming bölümündeki tüm dersler
1OOP Temelleri
Harici DosyalarOOP'ye GirişSınıflar ve Nesnelerself ParametresiMetotlarÖzniteliklerYapıcı Metot (__init__)Özet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtımsuper() FonksiyonuMetot Geçersiz KılmaÇoklu KalıtımMetot Çözümleme SırasıÖzet - Çalışan Hiyerarşisi7Özel Metotlar
Sihirli Metotlara GirişOperatör Aşırı YüklemeKapsayıcı Sihirli MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım kalıplarına girişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı13Final Meydan Okumaları
E-öğrenme PlatformuBankacılık SistemiOyun Karakteri GeliştirmeAraç Kiralama Servisi5Çok Biçimlilik (Polymorphism)
Metot Geçersiz Kılmaya Yeniden BakışDuck TypingSoyut Sınıflar ve MetotlarArayüz TasarımıÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kompozisyon ve KalıtımMixinsStatik ve Sınıf MetotlarıSınıf DekoratörleriBağlam Yöneticileri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı