Monday, March 18, 2024

9b 18.03.2024 functions tekrar ve denemeler


# çağrılana kadar herhangi bir şey yapmayan çağrıldığında çalışan kod bloklarıdır.
# keyfi olabilir, tekrar tekrar kullanılacak uzun veya kısa kod blokları var diyelim.
# her seferinde yazmak yerine bunları kullanırız.
# bir kütüphane oluşturmak için olabilir.

# print() # ekrana yaz alt satıra geç
# print("merhaba") # ekrana gönderilen parametreyi yazar, alt satıra geçer
# bu yukarıdaki ikisi bir iş yapıyor, geriye birşey döndürmüyor.

# input() # giriş alır,
# input("bir ad girin: ") # ekrana bir ad girin yazacak, giriş alacak
# ad = input("bir ad girin: ")# giriş aldık, ad değişkeninin içine attık

liste = []
liste.append(1)
liste.append(5)
liste.append(1)
liste.append(9)

print(liste)

elemansayisi = len(liste)
print(elemansayisi)


# bir fonksiyon nasıl tanımlanır

# define , tanımlamak anlamına gelir.

# def FunctionName():
#     Bu kısımda kodlar olacak

def EkranaMerhabaYaz():
    print("Merhaba")

# yukarıdaki function parametresiz olarak yazılmış bir functiondur
   
# parametre nedir, parantezin içine yazılan ifadeler
# functionun çağrıldığı yerden functiona değer göndermek için kullanılan ifadeler
def EkranaYaz(ifade):
    print(ifade)

# birden fazla parametre gönderilebilir.

def ToplamYaz(a,b):
    toplam = a+b
    print(toplam)

EkranaMerhabaYaz()
EkranaYaz("Merhaba Dünya")

ToplamYaz(4,6)
a = 6
c = 3
ToplamYaz(a,c)



# functionlar bir iş yaptıktan sonra illa da ekrana yazacak diye birşey yok

# functionlar geriye değer döndürebilirler, çağrıldıkları yere

import random


# sayi = random.randint(1,2)
# print(sayi)

def ZarAt():
    zar = random.randint(1,6)
    return zar # return geriye dön, anaprograma dön demek oluyor, yanına yazdığımız ifadeyi ana programa döndürür

a = ZarAt()
print(a)

print(ZarAt())




# Faktoriyel isimli bir function tanımlayarak, functiona gönderilen sayının faktoriyelini ekrana yazan
# programı yazınız.

# Faktoriyel nedir?
# bir sayının faktoriyeli, o sayıdan 1 e kadar olan tamsayıların birbiri ile çarpımlarının sonucudur

# 3! = 3 * 2 * 1 = 1 * 2 *3
# 5! = 5 * 4 * 3 * 2 * 1 = 1 * 2 * 3 * 4 * 5


def Faktoriyel(sayi):
    fak = 1
    for i in range(1,sayi+1):
        fak = fak * i
    return fak


print(Faktoriyel(5))
print(Faktoriyel(7))



# Geçtiğimiz derslerde sayısal loto yapmıştık
# orada üretilen sayıların birbirinden farklı olmaları gerekiyor idi.

import random

def KuponUret(): # 1,49 arasında 6 adet birbirinden farklı sayı
    kupon = []
    while len(kupon) < 6: # kupon eleman sayısı 6 olana kadar dön
        sayi = random.randint(1,49)
        if kupon.count(sayi) == 0:
            kupon.append(sayi)
    kupon.sort()
    return kupon

print(KuponUret())



# map işlemi
# Python'da map() fonksiyonu, bir iterable nesnenin her bir elemanına
# bir fonksiyonu uygular ve sonuçları yeni bir iterable nesne olarak döndürür.

# map(fonksiyon, iterable)

def ikiKati(sayi):
    return sayi * 2

liste = [1,3,5,9]

result = map(ikiKati,liste) # listenin her bir elemanı için iki katı hesaplanır, yeni bir liste oluşur.
# ancak yukarıdaki kodda sistem oluşan listenin liste olduğunu bilemez.
# dolayısı ile
print(result) # dediğimizde map ile oluşan listenin sadece adresini görebiliriz.

result = list(map(ikiKati,liste)) # map ile oluşan listenin liste olduğunu belirtiyoruz
# bu sayede artık bir listemiz olmuş oluyor.
print(result)


# listenin her bir elemanının karesini alarak yeni bir liste oluşturma

def kare(sayi):
    return sayi * sayi

liste = [1,5,4,7,9,2,11]

# soru şu, listenin elemanlarının karesinin listesini oluşturarak ekrana yazdırın

sonuc = list(map(kare,liste))

print(sonuc)



# filter denen birşey var.
# aynı map gibi çalışır.
# bu durumda tanımını yapalım
# filter ne demek, filtre, bir listenin içinden belirtilen şartlara göre ayırma işlemidir.

# map gibi kullanılır, yani
# filter, listenin her bir elemanı için belirtilen filtre functionuna göre yeni bir liste oluşturur
# filter için kullanacağınız functionun true ya da false döndürmesi gerekir.

liste = [1,3,5,2,6,7,12,63,24]

# yukarıdaki listedenin elemanlarından çift olanları ayrı bir listeye atınız.
# normalde nasıl yapıyorduk

# result = []
# for i in liste:
#     if i%2 ==0:
#         result.append(i)

# print(result)

def ciftMi(sayi):
    return sayi % 2 == 0

result = list(filter(ciftMi, liste))

print(result)


# diyebilirsiniz ki hocam tek satır için function yazıp duruyoruz
# bunun yerine function gibi çalışacak birşey yazabilir miyiz

# evet var, lambda

liste = [1,3,5,2,6,7,12,63,24]

# yukarıdaki listeden çift olan elemanlarından bir liste oluşturalım

result = list(filter(lambda x: x%2==0, liste))
# yukarıda lambda x: ifadesi ile şunu demiş olduk, her bir eleman için dönerken elemanı x olarak kabul et

print(result)

result = list(map(lambda x: x*3,liste))
print(result)



# Aşağıdaki listede bulunan isimlerden E veya e içerenleri ayrı bir listeye atan programı yazınız.

isimler = ["Ahmet", "Ayşe", "Fatma", "Mehmet", "Elif", "Ali", "Hatice", "Ömer",
           "Hakan", "Merve", "Selin", "Can", "Deniz", "Emre", "Eda",
           "Büşra", "Cansu", "Umut", "Ezgi", "Çağlar"]


result = list(filter(lambda x: x.count("e")+x.count("E") != 0,isimler))

print(result)













 

No comments: