Döngü ile sözlüğe integer value değeri atama

Merhaba aşağıdaki kod bloğunda Döngü ile sözlüğe integer value değeri atayabiliyorum. Fakat bu kod eğer value değeri 123asd gibi harf ve rakam karışık bir stringse strıng olarak kaydetmek yerine integer gibi davranıp hata veriyor. Nerede mantık hatası yapıyorum

while True:
    print("You are adding one key and value to dictionary ")
    key = input("Enter Your Key : ")
    if key == "":
        break
    value = input("Enter Your Value : ")
    for x in value:
        if x not in "0123456789":
            #"abcçdefgğhıijklmnoöprsştuüvyzqw,.:;-*[]{}()":
            pass
        else:
            value = int(value)
    if value == "":
        break
    key = key.capitalize()
    if value == str(value):
        value = value.capitalize()
    else:
        pass
    english_dictionary[key] = value
    print(english_dictionary)
    print()

Merhaba,

Yukarıdaki for döngüsünü kullanıcıdan aldığınız string için çalıştırıyorsunuz. String verisindeki karakterler "0123456789" karakterlerinden birisi değilse pass sözcüğü ile bu karakter geçiliyor.

Yani value "abc123" ise, döngü değişkeni olan x sırayla "abc" değerlerini aldığında herhangi bir işlem yapılmıyor. Ama x = 1 olduğunda, value = int("abc123") çalışıyor. Sorun da buradan kaynaklanıyor.

Ben olsam şöyle yapardım:

if value.isnumeric():
    value = int(value)
    # ve sonra gelen işlemler
else:
    # işlem yapma veya bir uyarı yükselt veya başka bir işlem yap.
1 Beğeni

@dildeolupbiten vakit ayırıp ayrıntılı verdiğiniz bilgi için çok teşekkür ederim. Siz yazınca isnumeric metodunu bir yerde okuduğum aklıma geldi ama bu metod bu konuda neden aklıma gelmedi inanın anlamış değilim, tek bildiğim benim nöronlar iyice yavaşlamış artık buna eminim. :roll_eyes: Sağlıklı günler dilerim.

Estağfurullah, olur böyle şeyler, canınızı sıkmayın lütfen. Size de sağlıklı günler dilerim.

Nöronlar iyice yavaşlamış demek yerine bilgisayar başındaki zamanı kontrol ederseniz,yeterli ve dengeli beslenip uyursanız,10 sayfa kitap okuma gibi şeyleri yaparsanız -ki yaptığınızı düşünüyorum- daha dinç olacaksınız ve belkide bu soruları sormadan cevabı siz bulacaksınız :slight_smile:

@gbcybermastertr
1
9
6
8
0
5
1
7
:smiley:

1 Beğeni

Buradaki sorun str.isnumeric’in akla gelmemesi degil, orada bir fonksiyon kullanilmasi gerektiginin gelmemesi.

Buradaki kod –hatali da olsa– iki kavrami/isi icice gecirmis. Degeri sayiya cevirme islemini cok kere yapmaya calisiyor.

"Rakamlardan olusuyorsa sayisal degerini al, yoksa string halini oldugu gibi kullan"in koda yansimis hali bu degil. Soyle bir sey:

if rakamlardan_olusuyor(value):
    kullanilacak = value
else:
    kullanilacak = int(value)

Burada rakamlardan_olusuyor fonksiyonunun hazir halinin bugun str.isnumeric olmasi onemli degil. Yarin ondalikli sayi eklerken tekrar yazacagiz zaten.

​​ ​​​ ​​ ​ ​​ ​ ​​ ​​​ ​​​​​​ ​ ​​​ ​​ ​ ​ ​​ ​​ ​​ ​​ ​​​ ​

2 Beğeni