Python’da giriş seviye algoritmalar

Enes Eren
5 min readJul 13, 2023

Bu yazıda HackerRank üzerinden giriş seviye Python algoritmalarını biraz değiştirerek çözeceğiz. Algoritmaları istediğimiz şekilde (belirli kuralları takip ederek) çözebiliriz, yani herkes birbirinden farklı yollardan giderek ama eninde sonunda aynı sonuca çıkacak şekilde algoritmaları yazabilir. Ben kendi çözümlerimi burada açıklayarak anlatacağım.

  1. Python ile “Merhaba, Dünya!”
mainStr = "Merhaba, Dünya!"
str = str(input("'Merhaba, Dünya!' yazınız"))

def sayHelloWorld(str):
if str == mainStr:
print(str)

sayHelloWorld(str)

Burada amacımı belirli bir metinsel değer olan “Merhaba, Dünya!” yı yazdıran bir fonksiyon oluşturmak. mainStr değişkeni bizim yazdırmak istediğimiz metinsel değeri taşır. str değişkeni ise bir input’tur. Inputlar fonksiyonu çalıştırandan bir metinsel değer ister ve onu saklar. Yani 2. satırdaki kod çalıştığında terminale bir input gelecektir ve bizden herhangi bir metinsel değer almadıkça diğer satıra geçmeyecektir. Burada herhangi bir değer yazabiliriz. Input fonksiyonu içerisindeki değer ise bizden input isterken kullanıcıya göstermek istediğimiz mesaj. Daha sonra fonksiyon kısmına geliyoruz, amacımız burada kullanıcıdan input yoluyla aldığımız değer eğer bizim “Merhaba, Dünya!” değerimiz ile aynı ise o değeri ekrana yazdırmak olduğundan bir if ifadesi ile bu koşulu doğruluyoruz. Eğer koşul doğru bir şekilde sağlanmışsa değer yazdırılacaktır aksi takdirde herhangi bir şey olmayacaktır.

2. Tek mi çift mi?

value = input("Bir sayı giriniz:").strip()

def isOddOrEvenAnd(n):
try:
n = int(value)
remains = n % 2
isOdd = remains == 1
isEven = remains == 0

if isEven and n < 0:
print("Sayı çift ve sıfırdan küçüktür")
elif isOdd and n < 0:
print("Sayı tek ve sıfırdan küçüktür")
elif isEven and n == 0:
print("Sayı çift ve sıfırdır")
elif isEven and n > 0:
print("Sayı çift ve sıfırdan büyüktür")
elif isOdd and n > 0:
print("Sayı tek ve sıfırdan büyüktür")
else:
print("Sayı negatif ve tek veya çift değil")
except:
print("Lütfen bir sayı giriniz")

isOddOrEvenAnd(value)

Burada n değişkeninde kullanıcıdan bir sayı istiyoruz. Daha sonra fonksiyonu oluşturmaya başlıyoruz, ilk olarak bir try except bloğu kullanarak eğer input değişkenine girilen değer bir sayı ise işleme devam ediyoruz değilse hata mesajı yazdırıyoruz. try except bloğu bunu nereden anlıyor diye soracak olursanız try except mantığı eğer try içerisindeki kodlar hata vermeden çalışıyorsa (ki biz try kısmındaki kodları bir sayı girildiğini varsayarak yazdık aksi takdirde illa ki bir noktada hata verecektir) bir sorun olmayacaktır. Eğer sayı girilmediğinde ise ki bunu n = int(value) görebiliriz çünkü eğer girdi bir sayı değilse int fonksiyonu hata verecektir. Böylece direkt except kısmına düşecek ve hata mesajı yazdırılacak. Try kısmından devam edecek olursak n kısmına sayımız var. remains değişkeni ise sayının ikiye bölümünden kalandır. Eğer sayı 3 ise ikiye bölümüden kalan 1 olur. Bu noktada remains = 1'dir. Ardından isOdd ve isEven kısımlarında sayı eğer 1'e veya 0'a eşitse; sırasıyla tek ve çift olur. isOdd ve isEven değişkenlerinin sonucu bir boolean olmak zorundadır çünkü == operatörünü kullanmaktayız bu bir eşitlik kontrolüdür, ya evet (True) ya da hayır (False) dönecektir. Son olarak if-elif-else bloğunu oluşturuyoruz. if kısmında sayı çifti se ve sıfırdan küçükse şeklinde bir mantıksal ifade yazıyoruz; bunu and ifadesi ile yapıyoruz. And ifadesi and kısmının sağ ve sol tarafındaki kodlar aynı boolean çıktıyı veriyorsa (true and true ya da false and false gibi) True, farklı boolean çıktılar veriyorsa (true and false ya da false and true gibi) False değeri dönecektir.

3. Bölme

valueA = input("Bir sayı giriniz:").strip()
valueB = input("Bir sayı daha giriniz:").strip()

def Böl(valueA, valueB):
try:
a = int(valueA)
b = int(valueB)
print(a // b)
print(a / b)
except:
print("Lütfen girdilere sayı giriniz")

Böl(valueA, valueB)

Burada önce kullanıcıdan iki adet sayı istiyoruz. Bu sayıları bir önceki algoritmada olduğu gibi try except bloğunda yazarak girdilerin sayı olduğundan emin oluyoruz. Daha sonra bu sayıları “//” ve “/” operatörleri ile bölüyoruz ilk operatör ikincisinin aynısı olmakla birlikte sonucu en yakın tam sayıya yuvarlar. İkincisi ise bildiğimiz bölümdür.

4. Döngü içinde çarpma

value = input("Bir sayı giriniz:").strip()

def MultiplicationWithLoop(value):
try:
n = int(value)
for x in range(n):
print(x * x)
except:
print("Lütfen bir sayı giriniz")

MultiplicationWithLoop(value)

Öncelikle kullanıcıdan bir sayı alıyoruz. Daha sonra döngümüzü yazıyoruz. Döngümüz, range(n) sayesinde n sayısı kadar tekrarlanacaktır. Böylece eğer sayımız 3 ise, range(n) 2 olacaktır (programlama dilinde sayılar sıfırdan başlar). Böylelike döngü 3 kez tekrarlanacak ve her bir döngüde kendi sayısını kendisiyle çarpacaktır.

5. Artık Gün

Yaklaşık her 4 yılda bir o yıla artık bir gün eklenir (29 Şubat). Bu gün artık gün olarak adlandırılır. Bunun böyle olmasının sebebi ise Dünya’nın Güneş’in etrafındaki turunu yaklaşık 365.25 günde tamamlamasıdır. Bu 0.25 gün, 4 yılda 1 gün eder. Aşağıdaki koşulları kullanarak bir yılın artık gün içerip içermediğini anlayabiliriz:

  • Eğer yıl 4'e eşit olarak bölünüyorsa artık yıldır bölünmüyorsa değildir.
  • Eğer yıl 100'e eşit olarak bölünüyorsa artık yıl değildir, bölünmüyorsa artık yıldır.
  • Eğer yıl 400'e eşit olarak bölünüyorsa artık yıldır, bölünemiyorsa artık yıl değildir.
value = input("Bir sayı giriniz:").strip()

def ArtıkGun(value):
try:
year = int(value)
leap = False
isLeapByFour = year % 4 == 0
isLeapByHundred = year % 100 == 0
isLeapByFourHundred = year % 400 == 0

if isLeapByFour:
if isLeapByHundred:
if isLeapByFourHundred:
leap = True
else:
leap = False
else:
leap = True
else:
leap = False

if leap:
print("Girilen yılın şubat ayında artık gün vardır")
else:
print("Girilen yılın şubat ayında artık gün yoktur")
except:
print("Lütfen bir yıl giriniz")

ArtıkGun(value)

Burada input ile kullanıcıdan bir yıl istiyoruz. Daha sonra try except bloğunu kullanarak değerin sayı olduğundan emin olduktan sonra leap değişkenini oluşturuyoruz. Bu değişken yılın artık gün içerip içermediğinin sonucunu taşıyacaktır. Şimdilik False olarak kalabilir. Daha sonra verilen koşulları sağlayan diğer değişkenleri oluşturuyoruz. Örneğin isLeapByFour değişkeni yılın 4 ile bölümünden kalan sıfır ise yani 4'e tam bölünüyorsa True değerini alır aksi takdirde False değerini alacaktır. Bu şekilde koşulları sağladıktan sonra if-elif-else bloğunda bu koşulları uyguluyoruz ve en sonunda leap True ise artık gün vardır; yok ise artık gün yoktur şeklinde algoritmayı sonlandırıyoruz.

6. Ardışık Sayı

value = input("Bir sayı giriniz:").strip()

def ArtArdaEkle(value):
try:
n = int(value)
value = ""

for x in range(n):
value += str(x + 1)

print(value)
except:
print("Lütfen bir sayı giriniz")

ArtArdaEkle(value)

Burada amacımız örneğin 5 sayısını 12345 şeklinde yazdırmaktır. Önce kullanıcıdan bir sayı alıyoruz. Bu girdinin sayı olduğundan emin olduktan sonra value değişkeninde boş bir metinsel değer oluşturuyoruz. Daha sonra bir döngü oluşturuyoruz. Bu döngü, girdide verilen sayı kadar yinelenecek ve her seferinde örneğin sayı 5 iken range(n) 4 olacaktır (sayılar sıfırdan başladığı için) ve 0. aşamada yani ilk aşamada value stringine 0 + 1 yani 1 atanacaktır. Bu noktada value 1 olur. 1. aşamada ise (yani 2) value değerine 1 + 1'den 2 eklenir. value değeri artık 12 olmuştur. En sonda ise tam değer yazdırılır.

--

--