# Diyelimki 2 sayının içerisinde büyük olan sayıyı bize veren bir fonksiyon yazalım.
def buyuk_Sayi(a,b):
    if a > b:
        return a
    elif b > a:
        return b
    else:
        return "Sayılar birbirine eşit"
print(buyuk_Sayi(20,30))

# YILDIZLI PARAMETRE
# Peki 2 sayı değilde belli olmayan sayılarda değerler göndereceksek fonksiyona ve en küçüğünü arıyorsak ?
def kucuk_Sayi(*sayilar):
    kucuk = sayilar[0]
    for xsayi in sayilar:
        if xsayi < kucuk:
            kucuk = xsayi
    return kucuk
print(kucuk_Sayi(1,2,3,4,5,6,7,8,9,-1)) # Burada istenilen adette sayı gönderebiliriz.

# FAKTORYEL Hesaplama
def faktoryel_Hesap(*number):
    fak = 1
    for sayi in number[0]: # ÖNEMLİ NOT : Dışarıdan gelen liste parametresi fonksiyon içinde ([1,2,3,4,5,6],) Tuple şeklinde geliyor. Bu da *number 'ın [0] ıncı parametresi.
        fak = fak * sayi
    return fak

sayi =int(input("Faktöryeli Hesaplanacak sayıyı giriniz : "))
liste = [x for x in range(1, sayi + 1)]
print(f"{sayi} sayısının faktöryeli {faktoryel_Hesap(liste)} 'dir.")

# Fonksiyon parametresi varsayılan parametre sabit içerebilir. Dışardan verilmediği zaman o kullanılır.
def kuvvet_Al(sayi,kuvvet = 1):
    return sayi ** kuvvet
print(kuvvet_Al(4)) # kuvvel_Al fonksiyonuna sadece kuvveti alınacak sayıyı göndersek bile hata olmaz o zaman kuvvet fonksiyonda sabit 1 olduğu için hata olmayacaktır.

# ** PARAMETRELİ FONKSİYONLAR ( Çift Yıldızlı Parametre dışarıdan Dictionary veri tipi bir değişken alır. )
def Okul_Personel(**ogretmenler):
    for isim,brans in ogretmenler.items():
        print(isim,brans)
    print(ogretmenler)

Okul_Personel(Türkçe = "Sevim TOPGÜL",Beden ="Murat Kandaz")