Python ile girilen 2 sayının EBOB (En Büyük Ortak Bölen) hesabını yapıp ekrana yazdıran program yapmaya çalışalım.

İki Sayının EBOB’unu Bulan Python Kodları
Öncelikle kodlarımızın daha düzenli olması için bir tık ileri gidip fonksiyon kullanacağız.
def ebob(sayi1, sayi2):
a, b = sayi1, sayi2
while b != 0:
a, b = b, a % b
return aBurası alında işlevi yapan kısım. Nasıl çalıştığına bakalım:
a, b = 18, 12
while b != 0: # 12 != 0
a, b = b, a % b
# a = 12, b = 18 % 12 = 6
# 2. döngü: a = 12, b = 6
while b != 0: # 6 != 0
a, b = b, a % b
# a = 6, b = 12 % 6 = 0
# 3. döngü: a = 6, b = 0
while b != 0: # 0 != 0? HAYIR! Döngü biter
# Buraya girmez
return a # a = 6Şimdi kodumuzun geri kalanına bakalım.
Önce kullanıcıdan iki sayı almalıyız.
sayi1 = int(input("Birinci sayı: "))
sayi2 = int(input("İkinci sayı: "))Böylece kullanıcıdan iki sayı istiyoruz ve bunları integer bir değere çeviriyoruz.
Ama kullanıcının her şeyi girebileceğini hesap etmeliyiz. Kullanıcı 0 girebilir, harf girebilir, negatif sayı girebilir. Bunun için hataları yakalamak adına try except bloğu kullanmalıyız.
try:
sayi1 = int(input("Birinci sayı: "))
sayi2 = int(input("İkinci sayı: "))
except ValueError:
print("Hata: Lütfen pozitif tam sayı girin!")Bu şekilde kullanıcı istemediğimiz bir sayı girerse doğrudan except kısmı çalışacaktır. Ama bizim istemediğimiz bir olay daha var. Kullanıcı 0 (sıfır) girerse? İşte o kısmı da if-else ile yakalamamız lazım.
try:
sayi1 = int(input("Birinci sayı: "))
sayi2 = int(input("İkinci sayı: "))
if sayi1 <= 0 or sayi2 <= 0:
print("Hata: Pozitif sayı girmelisiniz!")
else:
"""Burası kaldı"""
except ValueError:
print("Hata: Lütfen pozitif tam sayı girin!")Şimdiye kadar muhtemel hataları yakaladık. Peki iş yapacak kısım nerede? int dönüşümüyle sayı olmayan, negatif sayı olan ve ondalık sayıları yakalamıştık. if kısmında ise her iki sayının herhangi birinin negatif olduğunu yakaladık. O zaman artık else kısmında fonksiyonumuzu çalıştırabiliriz.
print(f"EBOB: {ebob(sayi1, sayi2)}")Böylece olabilecek kullanıcı girişi hatalarını yakalayan ve ekrana EBOB değerini yazdıran kodlarımız hazır. Toparlayacak olursak;
def ebob(sayi1, sayi2):
a, b = sayi1, sayi2
while b != 0:
a, b = b, a % b
return a
try:
sayi1 = int(input("Birinci sayı: "))
sayi2 = int(input("İkinci sayı: "))
if sayi1 <= 0 or sayi2 <= 0:
print("Hata: Pozitif sayı girmelisiniz!")
else:
print(f"EBOB: {ebob(sayi1, sayi2)}")
except ValueError:
print("Hata: Lütfen pozitif tam sayı girin!")Bu en basit haliyle kullanıcının klavyeden girdiği iki sayının EBOB’unu bulan program. Peki kullanıcı iki sayıdan daha fazlasını girmek isterse.
Bunun için 3 farklı yöntem deneyeceğiz.
- 1. Kullanıcı gireceği sayı miktarını önceden belirleyecek.
- 2. Kullanıcı her sayının arasına boşluk koyacak
- 3. Kullanıcı sayı girmeden Enter tuşuna basacak
Her biri için tek tek kod yazalım.
Kullanıcı Kaç Sayı Girdiğini Başta Söyler
def ebob(sayi1, sayi2):
a, b = sayi1, sayi2
while b != 0:
a, b = b, a % b
return a
def ebob_coklu(sayilar):
sonuc = sayilar[0]
for i in range(1, len(sayilar)):
sonuc = ebob(sonuc, sayilar[i])
return sonuc
try:
adet = int(input("Kaç sayı gireceksiniz? "))
sayilar = []
for i in range(adet):
sayi = int(input(f"{i+1}. sayı: "))
if sayi <= 0:
print("Hata: Pozitif sayı girmelisiniz!")
break
sayilar.append(sayi)
else:
print(f"Girilen sayılar: {sayilar}")
print(f"EBOB: {ebob_coklu(sayilar)}")
except ValueError:
print("Hata: Lütfen geçerli bir sayı girin!")Kaç sayı gireceksiniz? 3
1. sayı: 12
2. sayı: 18
3. sayı: 24
Girilen sayılar: [12, 18, 24]
EBOB: 6Kullanıcı Sayılar Arasına Boşluk Koyar
def ebob(sayi1, sayi2):
a, b = sayi1, sayi2
while b != 0:
a, b = b, a % b
return a
def ebob_coklu(sayilar):
sonuc = sayilar[0]
for i in range(1, len(sayilar)):
sonuc = ebob(sonuc, sayilar[i])
return sonuc
try:
girdi = input("Sayıları boşlukla ayırarak girin (örn: 12 18 24): ")
sayilar = [int(x) for x in girdi.split()]
for sayi in sayilar:
if sayi <= 0:
print("Hata: Tüm sayılar pozitif olmalı!")
break
else:
print(f"Girilen sayılar: {sayilar}")
print(f"EBOB: {ebob_coklu(sayilar)}")
except ValueError:
print("Hata: Lütfen geçerli tam sayılar girin!")Sayıları boşlukla ayırarak girin (örn: 12 18 24): 12 18 24 30
Girilen sayılar: [12, 18, 24, 30]
EBOB: 6Kullanıcı Enter’a Basana Kadar Sayı Girer
def ebob(sayi1, sayi2):
a, b = sayi1, sayi2
while b != 0:
a, b = b, a % b
return a
def ebob_coklu(sayilar):
sonuc = sayilar[0]
for i in range(1, len(sayilar)):
sonuc = ebob(sonuc, sayilar[i])
return sonuc
sayilar = []
print("Sayıları girin (bitirmek için boş Enter tuşlayın):")
while True:
try:
girdi = input(f"{len(sayilar)+1}. sayı: ")
# Boş Enter ile çıkış
if girdi == "":
if len(sayilar) < 2:
print("En az 2 sayı girmelisiniz!")
continue
break
sayi = int(girdi)
if sayi <= 0:
print("Hata: Pozitif sayı girin!")
continue
sayilar.append(sayi)
except ValueError:
print("Hata: Geçerli bir sayı girin!")
print(f"Girilen sayılar: {sayilar}")
print(f"EBOB: {ebob_coklu(sayilar)}")Sayıları girin (bitirmek için boş Enter tuşlayın):
1. sayı: 12
2. sayı: 18
3. sayı: 24
4. sayı: 30
5. sayı:
Girilen sayılar: [12, 18, 24, 30]
EBOB: 6