Python T.C. kimlik numarası bulma kodunda hata mı var?

Katılım
9 Ağustos 2020
Mesajlar
6.029
Çözümler
61
Yer
Python:
        print("TC kimlik numaranızı tek tek 9 hanesini giririniz.")
        tc1=int(input())
        tc2=int(input())
        tc3=int(input())
        tc4=int(input())
        tc5=int(input())
        tc6=int(input())
        tc7=int(input())
        tc8=int(input())
        tc9=int(input())
        tc10=((tc1+tc2+tc3+tc4+tc5+tc6+tc7+tc8+tc9)*7)%10
        tc11=(tc1+tc2+tc3+tc4+tc5+tc6+tc7+tc8+tc9+tc10)%10
        print(tc1,tc2,tc3,tc4,tc5,tc6,tc7,tc8,tc9,tc10,tc11)
Kod bu, yanımdaki arkadaşımın numarasını girince doğru buluyor ancak kendi numaramı girince yanlış buluyor. Algoritmada bir hata mı yapmışım?
 
Son düzenleme:
1613316677874.png


Ayrı ayrı toplamanız gerekmez mi? Bir de 11. hane bu açıklamaya biraz uymamış gibi. Son olarak da ilk satırda "giririniz" yazmışsınız, belirtmek istedim.
 
Kod:
print("TC kimlik numaranızı tek tek 9 hanesini giriniz.")
tc1=int(input())
tc2=int(input())
tc3=int(input())
tc4=int(input())
tc5=int(input())
tc6=int(input())
tc7=int(input())
tc8=int(input())
tc9=int(input())
tc10=(((tc1+tc3+tc5+tc7+tc9)*7)+(tc2+tc4+tc6+tc8))%10
tc11=(tc1+tc2+tc3+tc4+tc5+tc6+tc7+tc8+tc9+tc10)%10
print("TC numaranız:", tc1,tc2,tc3,tc4,tc5,tc6,tc7,tc8,tc9,tc10,tc11)

Bunu deneyebilirsiniz.

Alternatif olarak bu da varmış.

1. 3. 5. 7. ve 9. hanelerinin toplamının 7 katından 2. 4. 6. ve 8. hanelerinin toplamını çıkarın.
Elde edilen sonucun birler basamağı 10. rakamı verir.
 
Python:
        tc1=int(input())
        tc2=int(input())
        tc3=int(input())
        tc4=int(input())
        tc5=int(input())
        tc6=int(input())
        tc7=int(input())
        tc8=int(input())
        tc9=int(input())
        tc10=(((tc1+tc3+tc5+tc7+tc9)*7)+((tc2+tc4+tc6+tc8)*9))%10
        tc11=(tc1+tc2+tc3+tc4+tc5+tc6+tc7+tc8+tc9+tc10)%10
        print(tc1,tc2,tc3,tc4,tc5,tc6,tc7,tc8,tc9,tc10,tc11)
Bu şekilde yaptım ben.
Öncelikle dizi/liste ve döngü kullanın.
Nasıl yapacağımı bilmiyorum.
 
500 parantez kullanmak kafa karıştırır, hata yapmanız normal. Biraz ayrı yazmak da kodun okunurluğunu artıracaktır, hataları daha kolay tespit edebilirsiniz bu sayede.
Ben bu şekilde yaptım.

Başta 9 haneyi tek şekilde string olarak alıyorum. Sonrasında tekleri ve çiftleri topluyorum. Elimde toplamlar varken 10. haneyi bulma işlemi o kadar karışmıyor. Sonra ilk 9 haneye 10. haneyi ekleyip bir string oluşturup onu gezerek rakamları toplamını buluyorum. Sonra da mod 10'u alınıp 11. hane bulunuyor. String olarak elde etmek için tc10 ve tc11'i dönüştürüyorum. İsteğe bağlı olarak sadece a, int(a) şeklinde yazılıp integer bir değer elde edilebilir ama kimlik numarasını string olarak tutmak daha mantıklıdır çoğu zaman.

Kod:
a = input("TC kimlik numaranızın ilk 9 hanesini giriniz: ")

odds = 0
evens = 0
for i in range(0, 10, 2):
    odds += int(a[i])

for i in range(1, 9, 2):
    evens += int(a[i])

tc10 = (odds * 7 - evens) % 10

sum = 0
for i in a + str(tc10):
    sum += int(i)

tc11 = sum % 10
tc = a + str(tc10) + str(tc11)

print(tc)
 
Yazılımdan hiçbir şekilde anlamam fakat birisi ne için kod yazıldığını söyleyebilir mi? Merak ettim de.
 
Ne için kod yazıldığını söyleyebilir mi?
Kod ne için kullanılacak bilmiyorum ama istenen kodun yapması gereken iş ilk 9 hanesi verilen kimlik numarasının 10 ve 11. hanesini hesaplamak.
Paylaşılan bağlantıda hesabın nasıl yapıldığı anlatılıyor.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı