Python Kodumuz Satır Sayısı Artınca Hata Veiryor

Arkadaşlar şöyle bir kod oluşturduk

import bitcoin

dosya1 = open('C:/denemeliste.txt', "r")

dosya2 = open('C:/sonuclar.txt', "w")


  
valid_private_key = False
while not valid_private_key:

    while True:
        line = dosya1.readline()
        
        if not line:
        
            break

        Kod = line.strip()

        private_key = (Kod)

        decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
        valid_private_key = 0 < decoded_private_key < bitcoin.N

        print("Hex: {}".format(private_key), file=dosya2, flush=True)

        #print("Private key in decimal is {}".format(decoded_private_key), file=dosya2, flush=True)

        wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif')
        #print("Private key in WIF is {}".format(wif_encoded_private_key), file=dosya2, flush=True)

        compressed_private_key = private_key + '01'
        #print("Private key compressed in hexadecimal {}".format(compressed_private_key), file=dosya2, flush=True)

        wif_compressed_private_key = bitcoin.encode_privkey(bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif')
        #print("Private key WIF compressed is {}".format(wif_compressed_private_key), file=dosya2, flush=True)

        public_key = bitcoin.fast_multiply(bitcoin.G, decoded_private_key)
        #print("Public key (x,y) coordinates is".format(public_key), file=dosya2, flush=True)

        hex_encoded_public_key = bitcoin.encode_pubkey(public_key, 'hex')
        #print("Hex encoded public key is {}".format(hex_encoded_public_key), file=dosya2, flush=True)

        (public_key_x, public_key_y) = public_key

        if (public_key_y % 2) == 0:
            compressed_prefix = '02'
        else:
            compressed_prefix = '03'

        hex_compressed_public_key = compressed_prefix + bitcoin.encode(public_key_x, 16)


        #print("Compressed Public Key (hex) is {}".format(hex_compressed_public_key), file=dosya2, flush=True)
        print("{}".format(bitcoin.pubkey_to_address(public_key)), file=dosya2, flush=True)
        print("{}".format(bitcoin.pubkey_to_address(hex_compressed_public_key)), file=dosya2, flush=True)

Bu kodumuz deneme listesindeki hex kodlarımız 20 satır ise problemsiz çalışıyor
ama 20 den fazla ise hata veriyor

ama en sondaki print komutunu iptal edersek satır sayısı ne olursa olsun hata vermeden çalışmaya devam eder

deneme liste:
9831101116020117
9831101110120118
9831101116020119
983110111602011A
983110111610011B
983110111610011C
983110111610011D
983110111610011E
983110111610011F
9831101116100160
9831101116100161
9831101117100117
9831101117100118
9831101117100119
983110111710011A
983110111710011B
983110111710011C
983110111710011D
983110111710011E
983110111702011F
9831101117020160
9831101117020161
983110111A020117
983110111A020118
983110111A020119
983110111A02011A
983110111A02011B
983110111A02011C
983110111A02011D
983110111A10011E
983110111A10011F
983110111A100160
983110111A100161
983110111C100117
983110111C100118
983110111C100119
983110111C10011A
983110111C10011B
983110111C10011C
983110111C10011D

1 Beğeni

Ne hatasi?

En sonraki print cagrisi niye var? Ne yapmaya calisiyoruz?

Hatanin ciktigi main.py:452’de ne oluyor? Niye diger denemeler sorun cikartmazken 28. deneme sorun cikartiyor?

1 Beğeni

İşaretli olan print fonksiyonundan çıktı almak istediğimiz zaman şu hatayı veriyor

bu hexlerden adres üretiyorum
ama compressed address üretimini aktif edince bu hatayı alıyorum

bi gelişme kaydedebildinizmi

Hayir, sorularima cevap verilmedi.

2 Beğeni

Elimizde 16 haneli hex formatında yazılmış sayıların bulunduğu bir listemiz var.

Liste içeriğinden örnek:
9831101116020117
9831101110120118
9831101116020119
983110111602011A
983110111610011B
983110111610011C
983110111610011D
983110111610011E
983110111610011F
9831101116100160
9831101116100161
9831101117100117
9831101117100118
9831101117100119
983110111710011A
983110111710011B
983110111710011C
983110111710011D
983110111710011E
983110111702011F
9831101117020160
9831101117020161
983110111A020117
983110111A020118
983110111A020119
983110111A02011A
983110111A02011B
983110111A02011C
983110111A02011D
983110111A10011E
983110111A10011F
983110111A100160
983110111A100161
983110111C100117
983110111C100118
983110111C100119
983110111C10011A
983110111C10011B
983110111C10011C
983110111C10011D

Bu hex formatındaki sayıları burada eklediğimiz kodlarla bitcoin adreslerine çeviriyoruz
Ve her sayının karşılığında bu kod iki adet adres yazdırıyor:

import bitcoin

dosya1 = open('C:/denemeliste.txt', "r")

dosya2 = open('C:/sonuclar.txt', "w")


  
valid_private_key = False
while not valid_private_key:

    while True:
        line = dosya1.readline()
        
        if not line:
        
            break

        Kod = line.strip()

        private_key = (Kod)

        decoded_private_key = bitcoin.decode_privkey(private_key, 'hex')
        valid_private_key = 0 < decoded_private_key < bitcoin.N

        print("Hex: {}".format(private_key), file=dosya2, flush=True)

        #print("Private key in decimal is {}".format(decoded_private_key), file=dosya2, flush=True)

        wif_encoded_private_key = bitcoin.encode_privkey(decoded_private_key, 'wif')
        #print("Private key in WIF is {}".format(wif_encoded_private_key), file=dosya2, flush=True)

        compressed_private_key = private_key + '01'
        #print("Private key compressed in hexadecimal {}".format(compressed_private_key), file=dosya2, flush=True)

        wif_compressed_private_key = bitcoin.encode_privkey(bitcoin.decode_privkey(compressed_private_key, 'hex'), 'wif')
        #print("Private key WIF compressed is {}".format(wif_compressed_private_key), file=dosya2, flush=True)

        public_key = bitcoin.fast_multiply(bitcoin.G, decoded_private_key)
        #print("Public key (x,y) coordinates is".format(public_key), file=dosya2, flush=True)

        hex_encoded_public_key = bitcoin.encode_pubkey(public_key, 'hex')
        #print("Hex encoded public key is {}".format(hex_encoded_public_key), file=dosya2, flush=True)

        (public_key_x, public_key_y) = public_key

        if (public_key_y % 2) == 0:
            compressed_prefix = '02'
        else:
            compressed_prefix = '03'

        hex_compressed_public_key = compressed_prefix + bitcoin.encode(public_key_x, 16)


        #print("Compressed Public Key (hex) is {}".format(hex_compressed_public_key), file=dosya2, flush=True)
        print("{}".format(bitcoin.pubkey_to_address(public_key)), file=dosya2, flush=True)
        print("{}".format(bitcoin.pubkey_to_address(hex_compressed_public_key)), file=dosya2, flush=True)

Bunlardan birinci adresi yazdıran print komutu:

print("{}".format(bitcoin.pubkey_to_address(public_key)), file=dosya2, flush=True)

İkinci compressed adresi yazdıran ikinci print komutumuzda bu:

 print("{}".format(bitcoin.pubkey_to_address(hex_compressed_public_key)), file=dosya2, flush=True)

Bu kodu çalıştırınca text dosyamızdaki satırlar 28 den az ise program hata vermeden her iki kodu üretip yazdırıyor

Ama text dosyasında 28den fazla satır olunca program bu defa main452 ve 334 hatası verip yazdırmayı durduruyor

Yani problemimiz bu
Umarım sorularınızın cevabını verebildik

1 Beğeni

Olay dosyadaki satir sayisiyla alakali degil, satirlardan bir tanesiyle alakali.

main.py:452’den kastim main.py dosyasinin 452. satiri

1 Beğeni

Hangisiyle alakalı ?

Çözüm nedir ne yapabiliriz
Python da çok yeniyiz

Bilmem? Bulmanin bir yontemi var mi, dusunebiliyor musunuz?

Yukaridaki soru problem cozmede de cok yeni oldugunuzu gosteriyor.

Bir sure akliniza gelen her seyi yapmayi deneyip problem cozmeye yaklasimlari kesfetmeniz lazim.

1 Beğeni

Bu ne saçma bir yaklaşım "düşünebiliyor musunuz? " da ne demek

siz bizi yanlış anladınız

biz sizin kadar python programını bilmiyoruz dedik okuma yazmayı değil

ama anlaşılan sizde bizim kadar insanlık bilmiyorsunuz ve yazdıklarınızın ne manaya geldiğini idrak edemiyorsunuz

dolasıyla sizin gibi kendini beğenmiş kibirli birinden cevapta istemiyoruz yardımda

gidin pis kibrinizi aynaya bakarak giderin iki kod öğrenip millete caka satmayın
saçma sapan yazıpta milletin aklını bulandırmayın

1 Beğeni

cevabını bilmiyorsanız bilmiyorum deyin yada cevap yazmayın
sırf cevap yazayım da beni görsünler diye niye milleti oyalıyorsunuz

1 Beğeni
  1. satırı şu şekilde düzenleyin
print("{}".format(bitcoin.pubkey_to_address(hex_compressed_public_key.encode())), file=dosya2, flush=True)

ya da 56. ve 57. satırları try içine alın

try:
            
            print("{}".format(bitcoin.pubkey_to_address(public_key)), file=dosya2, flush=True)
            print("{}".format(bitcoin.pubkey_to_address(hex_compressed_public_key.encode())), file=dosya2, flush=True)
        
        except:
            
            pass
2 Beğeni

Hayatimda "hadi beraber cozelim"e aldigim en kustah cevap icin ikinizi de tebrik ediyorum.

Problemin satir sayisindan ziyade belirli bir satirda oldugunu ben soyledikten sonra bile anlamaktan aciz oldugunuz icin basit dusunme ve problem cozme teknikleri edinmenize yardimci olayim dedim. Hazir cozume konmaya calisan ve/veya egosu ogrenme becerisinin onunde duran insanlarla anlasamiyorum, ozur dilerim.

6 Beğeni

@dara, @mundulu.

İki sarı kart bir kırmızı kart!

İlk sarı kartınız.

Burada insanlar size yardımcı olmaya çalışırken size çözüm önermeye çalışırken yaklaşımınız yanlış.

Kimse sizin istediğiniz kodu burada sipariş üzerine yazmaz.

Ama gayret gösterir söylenenleri anlamaya çalışırsanız size yararı olur.

Size bunun nedenini ve çözümünü anlattım.

Ama dinlemediğinizi görmek üzücü.

Her oluşturulan key’in bir sıkıştırılmış anahtar karşılığı yok bu nedenle hata mesajı üretiyor. Bunu engellemek için kullandığınız bitcoin kütüphanesini bu hatalarla başa çıkabilecek şekilde yeniden yazmak gerekir ki bununla burada uğraşılmaz.

Bunun yerine try except bloğunun arasında işletip hataları yönetmeyi öğrenin demiştim. Örnek kodu da mesaj linkinde var.

Bu ilk sarı kartınız ikinci de ben den de yardım göremezsiniz.

Aslına bakarsanız bu hadi benim işimi çözün ben python bilmem ama bunu istiyorum yapın diyerek hiç yardım bulamazsınız.

Burası bir forum. Karşınızdaki bir nick, kaç yaşında eğitim seviyesi ne farkında bile değilsiniz. Yaşça küçük olmanız ne deniyle ufak tefek hatalarınızı görmezden geliyorum ama bu konuda yaptığınız gibi bazan tadını kaçırıyorsunuz.

Açıkcası aklımda sizin kodunuzu optimize etmek vardı, bir fırtsatım olduğunda ilgilenecektim. Ama bayram nedeniyle ilgilenemedim.

Burada davranış ve söylemlerinize bakınca sizin yardım alma konusunda yaklaşımınız beni rahatsız etti.

Gençliğinize veriyorum ama bu şekilde devam ederseniz. Burada bir çözüm bulamayacağınızı garanti ederim.

2 Beğeni

Çok teşekkür ederim
Ellerinize sağlık

1 Beğeni

Sayın Semtex
Nankör insanlar olmadığımız için size karşı aksi bir şey söylemek bizim edebimize de ahlakımıza da yakışmaz.

Bize gerek sizin gerekse diğer arkadaşların verdiği destekleri unutmamızda mümkün değildir.

Forumdaki herhangi bir arkadaş içinde bize yardıma mecbur gözüyle hiç bakmadık bakmayız da
Ki forumdaki yazılarımızı okuyan herkes bunu çok rahat bir şekilde de anlar.

Gördüğünüz gibi, çözemediğimiz bir problem için başlık açıp, bizim günlerce belki haftalarca göremeyeceğimiz bir hatayı bir başkası belki bir iki bakışta bulur da bize yardım eder diye problemimizi anlatıyoruz.

Ne bizim kimseyi zorlamamız nede kimsenin zorla cevap vermesi söz konusu değildir.

Ama “aib” nickli arkadaş,
gayet tabii ve programda yeni her insanın sorabileceği bir şekilde sorduğumuz soruya hakaret içerikli cevabını da kabul edecek kadar ezik veya ahlaksız da değiliz.

Eğer kendine eğlenecek dalga geçecek birini arıyorsa o biz değiliz.

Verdiğiniz bu cevap ve diğer yardımlar içinde tekrar teşekkür ederiz.

1 Beğeni

forumun neresinde böyle bir cevap var

Neyse herkes kendine yakışanı yapar.

Uzatmanın bir anlamı yok.

1 Beğeni

Bu gençlik zırvalıklarından da gına geldi artık. “Siz gençsiniz, cahilsiniz.” gibisinden bir tavır takınarak insanları yaşına göre küçümsemek hiç de doğru bir şey değil. Öğrencisini azarlayan bir öğretmen gibi hareket ediyorsunuz. Halbuki “yetişkinlerin” hatasını kabul edip susması veya özür dilemesi çok büyük bir erdem. Bu başlık altında yazılanlar, aib’in aldığı ilk eleştiriler değil. Üslubu yanlış. Bunu da ne zaman kabullenir bilemiyorum.

Demek ki neymiş, hakemler de yanlış yapabiliyormuş.

2 Beğeni

Arkadaşlar konu dışı tartışmalardan ve kişilere yönelik hakaret veya küçümsemelerden uzak duralım lütfen. Bu forumda ödev metnini olduğu gibi yapıştırana cevap olarak gerekli kodu veren de var, soruların çözümünü kod olarak vermeyip nasıl çözüleceğini anlatan veya yol gösteren de, bugünün sorusunu cevaplamak yerine eldeki soru üzerinden karşısındakine herhangi bir sorunun nasıl çözüleceğini öğretmeye çalışan da. Bu yöntemlerin hepsi saygı çerçevesini aşmadığı sürece moderasyon tarafından makul karşılanıyor. Siz de cevaplarını beğenmediğiniz biri ile iletişimi sürdürmek zorunda değilsiniz, cevaptan çok rahatsız olduysanız da uygun bir sebep seçerek gönderiyi bayrak işareti aracılığıyla bildirebilirsiniz.

Ayrıca forumda kişisel mesaj yollama özelliği var, kişilere yönelik eleştirilerinizi kullanıcının profiline girip kendisine iletebilirsiniz.

4 Beğeni

@Gok_Mavisi_Anka, seni çok iyi anlıyorum. Masanın iki tarafında da bulundum, yani gençtim bu lafları ben de duydum, yaşlandım bu lafları ben de söylüyorum.

Burada gençlikteki ve ilerleyen yaşlardaki fikirlerinizi ön görüp mukayese etmemeniz normal, ilerleyen zaman belki bana hak vermeni sağlayacaktır.

Öncelikle bir sorununuz varsa çözümle ilgil söylenenlere kulak verin, inanın dikkatli dinlerseniz yada okursanız, bazı faydalı şeyler çıkartabilirsiniz.

Her yazanın yazısını yorumunu beğenmek zorunda değilsiniz tabiki, ama toplum da böyledir, sevsek de sevmesek de bazan kulak kapatır duymayız.

Burada kişilere ve varsa hatalarına odaklanmayı doğru bulmuyorum. Tercih sizin.

Bence sayın @aib gayet güzel önerilerde bulunmuş. Tavrını beğenip beğenmemenizi bir kenara koyalım.

Çünkü birden çok kez buna benzer sorular soruldu ve cevaplar arasında, farklı ve güzel yaklaşımlar vardı.

Mesela benim ilk yaklaşımım try except ile hatayı yönetmek iken, bir yerlerde madem bir range içinde önce değer aralığını kontrol edip ondan sonra fonksiyonu çağırın gibi güzel çözümler gördüm.

Yani ben dahi, tek benim yaptığım doğrudur demem ve dinler görüşlere bakarım. Hatta bazan anladığım halde sorarım ki, hem doğru anladığımdan emin olurum, hem de başka cevaplamak isteyen varsa onlar için de daha açıklayıcı ip uçları çıkar.

Bu nedenle şahıslar üzerinden gitmemek tavsiyemdir. Burada çeşitli seviyelerde eğitim almış çeşitli yaşlarda insanlar var.

Evet yazdıkları ile benim dikkatimi çekerse yaşına bakmam, benden küçük olmasının bir önemi yoktur ve hocam diye hitap edebilirim.

Ama çocuk gibi davranırsa o zaman da neden beni eleştiriyor demesin. Mesela bir katılımcı bir konuda sorununa yardımcı olduktan sonra, sağo kanka dedi. Çok güldüm içimden. Ne bilsin karşısındakinin 45 yaşında adam olduğunu. Ama öğrenmek için elinden geleni yaptı, sorması gerekeni sordu. Benim için önemli olan buydu.

Burada durum farklı, bu iki kardeşimiz bir şeyler yapmaya çalışıyorlar, python için de bilgimiz yetersiz dediler kabul. Ben de elimden geldiğince katkı sundum. Sağ olsunlar, onlar da çoğu yerini anladı ve düzeltebildiiler ve kodları çalıştırabildiler.

Buraya kadar her şey güzel, diğer taraftan beğenmedikleri yorum varsa pas geçsinler geçmeseler dahi anlamaya çalışsınlar.

Ama yazdıkları şekilde cevap vermeleri yakışıksız geldi bana. Gerek yok. Benim yazdıklarımı da beğenmeyen olabilir, yada benim de beğenmediklerim ama bu şekilde cevaplar yazmak fayda sağlamaz.

Burada her soruyu ben çözeyim, beni beğensinler gibi bir derdim olabilir mi? İşinde gücünde normal yaşamı olan bir insanın, burada elimden geldiğince ihtiyacı olan kardeşlerime katkı sağlayım şeklinde bir yaklaşımım var.

Eğer konu sadece kod anlatmak olsa alın okuyun bir kod referansı konu kapansın derdim. Ama farklı bakış açıları her zaman için iyidir.

Hakemlik meselesine gelince, bu iki kardeşimiz bana özelden de ulaşıyorlar bazı konuları orada cevaplıyorum, bazan herkese faydası olabilecek yerleri foruma sorun belki bilen vardır diye oraya yönlendiriyorum.

İyi çocuklar olduklarını düşündüğüm ve bu iyi çocuklara bu tavrı yakıştıramadığım ve samimiyetlerine güvendiğim için ikaz ettim. Yani düşündüğün gibi bir hakemlik durumu söz konusu değil.

Şahsi fikrimi sorarsan, farklı yaklaşımlar her zaman iyidir, tavırlarını beğenmediklerinizin neyinin sizi rahatsız ettiğine odaklanmak yerine, neden bunu yapıyor diye anlamaya çalışın.

Bence güzel eleştirel sorular, sorgulamaya yönelten. Ha bu tür cevaplar işinize yaramazsa, sizin istediğiniz tarzda cevaplara odaklanın.

Merak etme, bu iki kardeşimizin daha soru ve sorunları bitmedi, daha çok yardım edeceğiz.

Sadece senden ricam eğer samimiyetime inanıyorsan. Nickleri görme. Yazanlardan sana faydalı olanlarına odaklan. Kimseye kızma kin duyma.

Burada anlatan da soran da her zaman yeni şeyler öğrenebilir, farklı yaklaşımlar çeşitlilik sağlar. Ben kötü şeyler görmüyorum. Hatta alınganlık yapanların, konularına yada mesajlarının altına dahi olumsuz bir şeyler yazmamaya gayret ediyorum.

Seni de öfkeli ve kızgın gördüm. Boşver. Burası bir forum. Ve bunlar da sadece nickler.

Önemli olan size ne gibi faydalar sağlayabileceğidir.

3 Beğeni