Python Hata Ayıklama

Merhaba birim değiştirici uygulaması yapmaya çalışıyordum. Her şey tıkır tıkır işliyor ancak hata ayıklamada sorun yaşıyorum. Yani kullanıcının girdiği veri int değil de str olduğunda bir hata mesajı göndermek istiyorum , def fonksiyonu içinde bunu belirttim kodun içine yazdım ancak veri değişkenini globale çekemediğim için yapamadım. Kodları yoruma paylaşacağım muhtemelen ne demek istediğimi anlayabilirsiniz.

while True:
    print("Km Çevirme Uygulaması")
    print("""
    [1] M Çevirme
    [2] Cm Çevirme
    [3] Mm Çevirme
    [Q] Çıkış
    """)
    
    veri = input("Yapmak İstediğiniz İşlemi Giriniz: ")
    kaç_km = int(input("Çevirmek İstediğiniz KM Miktarını Giriniz: "))
    if veri == "1":
        def m_çevirme():
            mc = (kaç_km * 1000)
            print(f"{kaç_km} KM = " "{:,}".format(mc) , "M'dir. ")
        m_çevirme()
    elif veri == "2":
        def cm_çevirme():
            cmc = (kaç_km * 100000)
            print(f"{kaç_km} KM = " "{:,}".format(cmc) , "Cm'dir. ")
        cm_çevirme()
    elif veri == "3":
        def mm_çevirme():
            mmc = (kaç_km * 1000000)
            print(f"{kaç_km} KM = " "{:,}". format(mmc) , "MM'dir") # {:,} uzun sayıları okumak için kullanılıyor.
        mm_çevirme()
    elif veri == "q" or veri == "Q":
        print("Çıkış Yapıldı...")
        quit()
    else:
        print("Hatalı Bir Tuşlama Yaptınız Tekrar Deneyiniz...")
def hata():
    while True:
        try:
            veri = int(input("Sayı gir: "))
        except:
            hata()
            return
        if(veri < 0):
            print("Negatif sayı girildi.")

        elif veri == 0:
            print("Sıfır girdin.")

        else:
            print("Pozitif sayı girildi.")

hata()

Buda def fonksiyonu içinde yazmak istediğim hata ayıklama. Program ile hata ayıklamayı birbirine bağlayamadım , Sayıları tek tek yazıp döngüye sokmak istemiyorum , açıkçası hata ayıklamayı nasıl kullanıldığını kafamda oturtmaya çalışıyorum.

Yanlış anlamadıysam böyle birşey istiyorsunuz.

try:
    kaç_km = int(input("Çevirmek İstediğiniz KM Miktarını Giriniz: "))
except ValueError:
    print("Sayı Giriniz!")
    continue
while True:
    print("Km Çevirme Uygulaması")
    print("""
    [1] M Çevirme
    [2] Cm Çevirme
    [3] Mm Çevirme
    [Q] Çıkış
    """)
    try:
        veri = input("Yapmak İstediğiniz İşlemi Giriniz: ")
        if veri == "q" or veri == "Q": # q ya başıldığında hemen çıksın istiyorsan burada belirteecksin.
            print("Çıkış Yapıldı...")
            break
        else:
            pass
        kaç_km = int(input("Çevirmek İstediğiniz KM Miktarını Giriniz: "))
    except ValueError:
        print("Lütfen sadece sayı girin!")
    
    if veri == "1":
        def m_çevirme():
            mc = (kaç_km * 1000)
            print(f"{kaç_km} KM = " "{:,}".format(mc) , "M'dir. ")
        m_çevirme()
    elif veri == "2":
        def cm_çevirme():
            cmc = (kaç_km * 100000)
            print(f"{kaç_km} KM = " "{:,}".format(cmc) , "Cm'dir. ")
        cm_çevirme()
    elif veri == "3":
        def mm_çevirme():
            mmc = (kaç_km * 1000000)
            print(f"{kaç_km} KM = " "{:,}". format(mmc) , "MM'dir") #{:,} yapısı uzun sayıları basamaklarına ayır ve yaz yani okumas kolaylaşır
        mm_çevirme()
    else:
        print("Hatalı Bir Tuşlama Yaptınız Tekrar Deneyiniz...")

Son hali böyle oldu sağolsun forumdan arkadaş soruma derman oldu özelden yazarak. Bir çok noktayı kafamda oturtmuş oldum.

while True:
    print("Km Çevirme Uygulaması")
    print("""
    [1] M Çevirme
    [2] Cm Çevirme
    [3] Mm Çevirme
    [Q] Çıkış
    """)
    try:

        veri = input("Yapmak İstediğiniz İşlemi Giriniz: ")

        if veri == "q" or veri == "Q":  # q ya başıldığında hemen çıksın istiyorsan burada belirteecksin.
            print("Çıkış Yapıldı...")
            break
        elif veri == "1":
            kac_km = int(input("Çevirmek İstediğiniz KM Miktarını Giriniz: "))
            print(f"{kac_km} KM = {kac_km*1000:,} metredir.")
        elif veri == "2":
            kac_km = int(input("Çevirmek İstediğiniz KM Miktarını Giriniz: "))
            print(f"{kac_km} KM = {kac_km*100000:,} santimetredir.")
        elif veri == "3":
            kac_km = int(input("Çevirmek İstediğiniz KM Miktarını Giriniz: "))
            print(f"{kac_km} KM = {kac_km * 1000000:,} milimetredir.")
        else:
            print("Hatalı Bir Tuşlama Yaptınız Tekrar Deneyiniz...")
    except ValueError as hata:
        print("Lütfen sadece sayı giriniz", hata)
2 Beğeni

Teşekkür ederim bu çok daha sade ve güzel bir cevap olmuş. Sayenizde yanlışlarımı gördüm.

1 Beğeni