Ortaokul 6. Sınıf Ünite 5 ve Ünite 6 sonu konusu Alan, Çevre ve Hacim konuları ile ilgili güzel bir etkinlik.

20_UNITE5_Alan_Cevre_Hacim_Olcme_Birimler.py
# UNITE 5 ve UNITE 6 Konuları - Alan, Çevre ve Hacim

from colorama import Fore
from math import pi

class Alan():
    def __init__(self):
        pass
    
    def alanUcgen(self):
        h= float(input("\nÜçgenin yüksekliğini giriniz : "))
        taban = float(input("Üçgenin taban kenar uzunluğunu giriniz : "))
        return round((h * taban) / 2,2)

    def alanParalel(self):
        h = float(input("\nParalel kenarın yüksekliğini giriniz : "))
        taban = float(input("Paralel kenarın taban kenar uzunluğunu giriniz : "))
        return round(h * taban,2)

    def alanDaire(self):
        r = float(input("Dairenin yarıçapını (r) giriniz : "))
        return round(pi * r ** 2,2)

class Cevre():
    def __init__(self):
        pass

    def cevreUcgen(self):
        a = float(input("\na kenar uzunluğunu giriniz : "))
        b = float(input("b Kenar uunluğunu giriniz : "))
        c = float(input("c Kenar uunluğunu giriniz : "))
        return round(a + b + c,2)

    def cevreParalel(self):
        a = float(input("\na kenar uzunluğunu giriniz : "))
        b = float(input("b kenar uzunluğunu giriniz : "))
        return round(2 * (a + b),2)

    def cevreDaire(self):
        r = float(input("Dairenin yarıçapını giriniz : "))
        return round(2 * pi * r,2)

class Hacim():
    def __init__(self):
        pass

    def hacimUcgenPrizma(self):
        h = float(input("Üçgen in yüksekliğini h giriniz : "))
        a = float(input("Üçgenin taban kenar uzunluğunu giriniz : "))
        b = float(input("Prizmanın yüksekliğini giriniz : "))
        return round(((a * h) / 2) * b,2)

    def hacimKup(self):
        a = float(input("Küpün kenar uzunluğunu giriniz : "))
        return round(a * a * a,2)

    def hacimDikdortgenPrizma(self):
        a = float(input("Dikdörtgenin uzun kenarını giriniz : "))
        b = float(input("Dikdörtgenin kısa kenarını giriniz : "))
        h = float(input("h yüksekliğini giriniz : "))
        return round(a * b * h,2)

class Menu(Alan,Cevre,Hacim):
    def __init__(self):
        super(Menu, self).__init__()
        self.calisma = True

    def anaMenu(self):
        print(Fore.LIGHTYELLOW_EX)
        print("----------------Alan / Çevre Hesaplama Programı ------------------")
        print("\t1. Çevre Hesapla\n\t2. Alan Hesapla\n\t3. Hacim Hesapla\n\t4. Çıkış")
        secim = int(self.secimAl())

        if secim == 1:
            self.altMenu("Çevre")
        elif secim == 2:
            self.altMenu("Alan")
        elif secim == 3:
            self.hacimMenu()
        else:
            self.calisma = False

    def altMenu(self,tip):
        print(Fore.LIGHTWHITE_EX)
        print(f"---------------------- {tip} Hesaplama --------------------------- ")
        print(f"\t1. Üçgen {tip} Hesapla\n\t2. Paralel Kenar {tip} Hesapla\n\t3. Daire {tip}\n\t4. Çıkış")
        secim = self.secimAl()

        if tip == "Çevre":
            if int(secim) == 1:
                cevre = self.cevreUcgen()
                print(f"Girilen değerlere göre ÜÇGEN in ÇEVRESİ : {cevre} cm 'dir.")
                self.cevirBirim(cevre,"Çevre")
            elif int(secim) == 2:
                cevre = self.cevreParalel()
                print(f"Girilen değerlere göre PARALELKENAR ın ÇEVRESİ : {cevre} cm 'dir.")
                self.cevirBirim(cevre,"Çevre")
            elif int(secim) == 3:
                cevre = self.cevreDaire()
                print(f"Girilen değerlere göre DAİRE nin ÇEVRESİ : {cevre} cm 'dir")
                self.cevirBirim(cevre,"Çevre")

        if tip == "Alan":
            if int(secim) == 1:
                alan = self.alanUcgen()
                print(f"Girilen değerlere göre ÜÇGEN in ALANI : {alan} cm2 'dir.")
                self.cevirBirim(alan,"Alan")
            elif int(secim) == 2:
                alan = self.alanParalel()
                print(f"Girilen değerlere göre PARALELKENAR ın ALANI : {alan} cm2 'dir.")
                self.cevirBirim(alan, "Alan")
            elif int(secim) == 3:
                alan = self.alanDaire()
                print(f"Girilen değerlere göre DAİRE nin ALANI : {alan} cm2 'dir.")
                self.cevirBirim(alan,"Alan")

        self.anaMenu()

    def hacimMenu(self):
        print(Fore.LIGHTWHITE_EX)
        print(f"---------------------- Hacim Hesaplama --------------------------- ")
        print(f"\t1. Üçgen Prizma Hesapla\n\t2. Küp Hesapla\n\t3. Dikdörtgen Prizma\n\t4. Çıkış")
        secim = int(self.secimAl())

        if secim == 1:
            hacim = self.hacimUcgenPrizma()
            print(f"Girilen değerlere göre ÜÇGEN PRİZMA nın HACİM i : {hacim} cm3 'dür.")
            self.cevirBirim(hacim,"Hacim")
        elif secim == 2:
            hacim = self.hacimKup()
            print(f"Girilen değerlere göre KÜP ün HACİM i : {hacim} cm3 'dür.")
            self.cevirBirim(hacim,"Hacim")
        elif secim == 3:
            hacim = self.hacimDikdortgenPrizma()
            print(f"Girilen değerlere göre DİKDÖRTGEN PRİZMA nın HACİM i : {hacim} cm3 'dür.")
            self.cevirBirim(hacim,"Hacim")

        self.anaMenu()

    def cevirBirim(self,olcum,tip):
        if tip == "Çevre":
            print(f"{olcum / 100000} km -- {olcum / 10000} hm -- {olcum / 1000} dam -- {olcum / 100} m -- {olcum / 10} dm -- {olcum} cm -- {olcum * 10} mm")
        elif tip == "Alan":
            print(f"{olcum / 10000000000} km2 -- {olcum / 100000000} hm2 -- {olcum / 1000000} dam2 -- {olcum / 10000} m2 -- {olcum / 100} dm2 -- {olcum} cm2 -- {olcum * 100} mm2")
        else:
            print(f"{olcum / 1000000000000000} km3 -- {olcum / 1000000000000} hm3 -- {olcum / 1000000000} dam3-- {olcum / 1000000} m3 -- {olcum / 1000} dm3 -- {olcum} cm3 -- {olcum * 1000} mm3")

    def secimAl(self):
        # Kullanıcıdan alınan veriler sadece ve sadece 1 2 3 ve 4 rakamlarından oluşmalı.
        secim = input("Seçim Giriniz : ")
        while secim not in ["1","2","3","4"]:
            secim = input("Seçiminizi kontrol ediniz [1-4] : ")

        return secim

menu = Menu()
if menu.calisma:
    menu.anaMenu()