Tip Dönüşümleri Hakkına

Merhaba. Döngünün içinde tamsayı olarak atadığım değişkeni yine döngü içinde metin türüne dönüştürmeye çalışıyorum ama bir türlü beceremedim. Neyi eksik yapıyorum acaba?

while True:
    var_1 = int(input("> "))

    if(var_1 == 1):
        str(var_1)
        if(var_1 == "kapat"):
            print("Kapanıyor...")
            quit()

İkinci satırda yazdığınız var_1 = int(input("> ")) kodu “kapat” gibi string tipinde bir veri girildiğinde ValueError hatası verir.

Dördüncü satırdaki if(var_1 == 1): ifadesine göre, var_1 eğer int(1) olursa o blokun altındaki if deyimi çalıştırılsın diye bir komut verilmiş. Ama bu blokun altındaki var_1’in “kapat” stringine dönüşmesini sağlayacak herhangi bir işlem de tanımlanmamış ve bir üst satırdaki str(var_1) kodu etkisiz. Ayrıca if deyimindeki ifadeleri parantez içine almanız gerekmiyor. Aşağıdaki kodları bir inceleyin.

while True:
    var_1 = input("> ")
    try:
        var_1 = int(var_1)
        print(type(var_1))
    except ValueError as hata:
        print(hata)
        print(type(var_1))
        if var_1 == "kapat":
            quit()
1 Beğeni

@dildeolupbiten haklı ama sizin sorunuzun cevabı 5. satırı

var_1=str(var_1)

olarak değiştirmek. Çünkü sizin yazdığınız şekliyle stringe dönüşüyor ama bir satır için geçerli bu diğer satırlarda kullanmak için bir değişkene atamak gerekir.

@hasser

Merhaba hocam. Bu değişiklik yapılsa bile ikinci satırdaki var_1 = int(input("> ")) kodu sayı olmayan string karakterleri girildiğinde ValueError hatası verir.

@dildeolupbiten
Siz haklısınız ama ben aldığı hatanın sebebini belirtmek istedim.

Kodlarda değişmesi gereken yerlerden birisi de sizin bahsettiğiniz yer, evet. Ama 2. satır değiştirilmeden çok bir etkisi olmaz demek istemiştim, program yine hata verir.

Teşekkür ediyorum cevapladığınız için. Yapmak istediğim şey şuydu ve sayenizde başardım. :smiley:

toplam = 0

    while True:
        var_2 = input("> ")
        try:
            var_2 = int(var_2)
            toplam += var_2
        except ValueError:
            print(" ")
            if(var_2 == "kapat"):
                break
    print(toplam) 

if’den sonra parantez koymak da alışkanlıktan kaynaklı. Uyarınız için ayrı olarak teşekkür ediyorum.