Python ile Tcno Kontrolü Programı Hk. Yardım

Herkese merhabalar. Python dili ile sadece 11 hane olması ve harf bulundurmaması şartları ile tcno kontrolü yapan bir program sorum var. Sadece basit döngü komutlarından oluşması gerekiyor. Aşağıdaki gibi bir şey denedim ancak oluşturamadım. Çıktıya bakılacak olursa tek problem şu an girilen sayıyı integer olarak değil de string olarak algılıyor oluşu. Yanlışım nerede yardımcı olabilir misiniz?

liste=[]
tc=input("Tc No: ")
liste.append(tc)
tc.split
    
if int(len(liste))<11:
      if type(tc)==int: 
        print("TC numaranız 11 Haneli Olmalıdır.")
      else:
        print("TC numaranız sayılardan oluşmalıdır.")
       
if int(len(liste))>11:
     if type(tc)==int:
        print("TC numaranız 11 Haneli Olmalıdır.")
     else:
        print("TC numaranız sayılardan oluşmalıdır.")  
       
if int(len(liste))==11 and type(tc)==int:
    print("True")

Merhaba.
Öncelikle

burada kullanıcıdan string tipte bir değer alıyorsunuz.

Dolayısıyla bu koşul pek bir şey ifade etmiyor çünkü string bir değer hali hazırda string’dir, int değildir zaten.


Bu iş için listeye ihtiyaç yok doğrusu.

Buradaki koşul da pek manasız çünkü siz

burada listeye tc elemanını eklediniz ve bu listeninin uzunluğu 1 oldu. Dolayısıyla 1 < 11 diye bir kontrol yapmanın bir anlamı yok çünkü bu her zaman True’dur. Dolayısıyla program her zaman bu koşulun kontrol edildiği bloğu çalıştıracak ve bu elbette kodu daha da kirlileştiriyor. Denemek isterseniz bu koşulun kontrol edildiği bloğa print("bu blok çalıştı") gibi bir kod ekleyebilirsiniz. Ayrıca len() fonksiyonu hali hazırda bir integer değer döndürdüğü için onu integer’a çevirmeye ihtiyaç yok.

Bu kod da pek bir şey ifade etmiyor çünkü split methodunu çağırmıyorsunuz.


Genel olarak koşullarda çok kirli kod var. Amacınızı gerçekleştirmeye ve daha temiz kod yazmaya yönelik ipuçları şunlar olabilir:

Aşağıya örnek bir kod bırakacağım ancak ona bakmadan önce size tavsiyem sorunları kendiniz çözmeye çalışmanız.

Spoiler
tc = input("Tc No: ")

if tc.isnumeric() and len(tc) == 11:
    print("0")
elif len(tc) != 11:
    print("TC numaranız 11 haneli olmalıdır.")
else:
    print("TC numaranız sayılardan oluşmalıdır.")

Bu çok daha basit ve okunaklı duruyor, öyle değil mi?

1 Beğeni

Merhabalar. Yazdıklarınızı görünce bildiklerimden ve kendimden utandım doğrusu. Bayadır uğraşınca çok gereksiz şeyler ortaya çıkmış. Bazı alıntıladıklarınız onceki denemelerden kalma hatta. Uyarılarınız için teşekkürler.

1 Beğeni