Girilen İki Sayının İçin EBOB Hesaplama

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 a

Burası 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: 6

Kullanı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: 6

Kullanı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

Similar Posts

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir