Çözüldü Python'da girdinin integer olup olmadığı kontrol edilmiyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

SkyRose

Megapat
Katılım
26 Haziran 2019
Mesajlar
6.069
Makaleler
5
Çözümler
59
Merhaba. Python dilini kullanarak şöyle bir şey yazdım:

[CODE lang="python" title="Yazdığım şey"]def elo_sor():
rapid = input("Rapid ELO'nuz kaç? Oynamıyorsanız '-' yazınız: ")
if rapid == '-':
pass
elif type(rapid) != int:
print("Bir sayı girmelisiniz!!!")
return
elif type(rapid) == int:
rapid = rapid
print("Güzel.")
pass
blitz = input("Blitz ELO'nuz kaç? Oyamıyorsanız '-' yazınız.")
if blitz == '-':
pass
elif blitz is not int:
print("Bir sayı girmelisiniz!!!")
elif blitz is int:
blitz = blitz
print(blitz)
print(rapid)

elo_sor()[/CODE]

Amacı kullanıcıdan ELO (puan) bilgisini almak; eğer sayıysa depolamak, eğer sayı değilse de kullanıcıyı uyarıp yeniden girdi istemek fakat ben bir sayı da girsem kendi yazdığım "Bir sayı girmelisiniz" hatasını alıyorum. Neden böyle oluyor?

Teşekkürler.
 
Çözüm
Çünkü input string döndürür. Sen her seferinde string integer mı diye bakıp duruyorsun.

Try except ile yapabilirsin.

Kod:
def elo_sor():
    rapid = input("Rapid ELO'nuz kaç? Oynamıyorsanız '-' yazınız: ")
    if rapid == '-':
        pass
   
    try:
        rapid = int(rapid)
        print("Güzel.")
        pass
    except ValueError:
        print("Bir sayı girmelisiniz!!!")
        return

   
    blitz = input("Blitz ELO'nuz kaç? Oyamıyorsanız '-' yazınız.")
    if blitz == '-':
        pass

    try:
        blitz = int(blitz)
        print("Güzel.")
        pass
    except ValueError:
        print("Bir sayı girmelisiniz!!!")
        return
   
    print(blitz)
    print(rapid)

elo_sor()

String gelirse nasıl tespit edecek? Bu sefer de string geldiği an hata alır.

Programı öldüren bir önerinin çözüm olarak işaretlendiğine inanamıyorum 😒
Böyle yap.
 

Dosya Ekleri

  • Ekran Alıntısı.PNG
    Ekran Alıntısı.PNG
    11,9 KB · Görüntüleme: 170
Python ASCII kullanıyor olmalı, eğer öyleyse bir fonksiyon yazarsın ve girdilerin tek tek tüm karakterlerine bakarak harf veya sayı olup olmadığını anlayabilirsin.
[CODE title="Pseudocode"]bool isdigit(string digit){
for(int i = 0; i < digit.size(); i++){
if(digit >= '0' || digit<='9'){continue;}
else{return false;}
}
return true;
}[/CODE]
Daha kolayı varmış. :D Ama olsun, attığım kod illa ki bir yerde işine yarar.
 
Çünkü input string döndürür. Sen her seferinde string integer mı diye bakıp duruyorsun.

Try except ile yapabilirsin.

Kod:
def elo_sor():
    rapid = input("Rapid ELO'nuz kaç? Oynamıyorsanız '-' yazınız: ")
    if rapid == '-':
        pass
   
    try:
        rapid = int(rapid)
        print("Güzel.")
        pass
    except ValueError:
        print("Bir sayı girmelisiniz!!!")
        return

   
    blitz = input("Blitz ELO'nuz kaç? Oyamıyorsanız '-' yazınız.")
    if blitz == '-':
        pass

    try:
        blitz = int(blitz)
        print("Güzel.")
        pass
    except ValueError:
        print("Bir sayı girmelisiniz!!!")
        return
   
    print(blitz)
    print(rapid)

elo_sor()

String gelirse nasıl tespit edecek? Bu sefer de string geldiği an hata alır.

Programı öldüren bir önerinin çözüm olarak işaretlendiğine inanamıyorum 😒
 
Çözüm
Çünkü input string döndürür. Sen her seferinde string integer mı diye bakıp duruyorsun.

Try except ile yapabilirsin.

Kod:
def elo_sor():
    rapid = input("Rapid ELO'nuz kaç? Oynamıyorsanız '-' yazınız: ")
    if rapid == '-':
        pass
  
    try:
        rapid = int(rapid)
        print("Güzel.")
        pass
    except ValueError:
        print("Bir sayı girmelisiniz!!!")
        return

  
    blitz = input("Blitz ELO'nuz kaç? Oyamıyorsanız '-' yazınız.")
    if blitz == '-':
        pass

    try:
        blitz = int(blitz)
        print("Güzel.")
        pass
    except ValueError:
        print("Bir sayı girmelisiniz!!!")
        return
  
    print(blitz)
    print(rapid)

elo_sor()


String gelirse nasıl tespit edecek? Bu sefer de string geldiği an hata alır.
Teşekkürler. String gelince yukarıda dediğim şeyi yapmaya çalıştım ama yine de dediğiniz gibi oldu.

Peki "("Bir sayı girmelisiniz!!!")" dedikten sonra programı kapatmak yerine yeniden girdi isteyebilir miyim?
 
Kod:
def elo_sor():
    rapid = input("Rapid ELO'nuz kaç? Oynamıyorsanız '-' yazınız: ")
    if rapid == '-':
        return

    flag = 1
    while(flag):
        try:
            rapid = int(rapid)
            print("Güzel.")
            flag = 0
        except ValueError:
            print("Bir sayı girmelisiniz!!!")
            rapid = input("rapid: ")

    blitz = input("Blitz ELO'nuz kaç? Oyamıyorsanız '-' yazınız.")
    if blitz == '-':
        return

    flag = 1
    while(flag):
        try:
            blitz = int(blitz)
            print("Güzel.")
            flag = 0
        except ValueError:
            print("Bir sayı girmelisiniz!!!")
            blitz = input("blitz: ")
 
    print(blitz)
    print(rapid)

elo_sor()
 

Geri
Yukarı