# ç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)