Python'da kodu hata veriyor

En aşağıda yeni bir klasör oluşturup 1.txt dosyasına kaydetdilmeyecek mi?

--------------------------
if __name__ == '__main__':
parser.add_argument(
'-out', '--output',
default='yeni/1.txt', help='Çıktı dosyası')
------------------------------
Soyle soyleyeyim, 72. satirda ans = hexToDecimal(num) yapmissiniz ama fonksiyonda numara ve cikis dosyasi gerekiyor. yani ans=hexToDecimal(num, "Dosyaadi") gibi bir sey yapmaniz gerek.
İlk fonksiyona kullanmayacağınız bir parametre eklemişsiniz onu silin ve Python'da yer alan yerleşik int fonksiyonunu kullansanız olmaz mı?
Algoritma olarak bir odev var gibime geldi.
 
Sanırım 😀
Her harf için farklı durum kullanmak yerine bir sözlük oluştursanız daha iyi olur ve direk 16'nın kuvvetlerini kullanabilir misin?
Tekrar merhaba.
-----------
def con(n,b):
x = n.upper()
d = d = len ( n )-1
l = 0
for i in x:
if(i > "F"):
print("Tabana Göre Geçersiz Giriş ")
exit()
else:
h = int(i, 16)
l += h*(b**d)
d = d-1
print(l)

n = input("Onaltılık Değeri Girin: ")
b = 16
print("Ondalık Değeriniz: ")
con(n,b)

fileToAppend = open("2.txt","a")

liste = [con]

for bilgi in liste:
fileToAppend.write(f"{bilgi}\n")
fileToAppend.flush()

fileToAppend.close()

-----------

Bu kod çalışır gibi oldu çıkış verdi ancak anlamadığım CMD ekranındaki sonuç doğruyken metin belgesindeki sonuç 0x000001EA573FC1E0 gibi bir sonuç elde etti... Sebebi ne olabilir?
 
Kodu okurken zorlanıyorum aynı değerle bir daha çalıştırınca dosyaya farklı bir şey yazıyor mu?
Anladığım kadarıyla dosyaya fonksiyonun bellekteki yerini yazıyor bu da işine yaramaz

Anladım. Yukarıda yazmaya çalıştığım kod biraz enteresan olmuş sadece 0-f arası dönüştürüyor. İşe yaramaz özetle. 16'nun kuvvetini almamı söylediğin için böyle bir kod denedim. Lakin çöp oldu. Kodu yazmayı başardım.

----
def hexToDecimal(num):
result = 0
num = str(num)
ans = [0]*len(num)


for i in range(len(num)):
if(num==('0')):
ans = 0
elif(num==('1')):
x = 2 ** (4*(len(num)-i-1))
ans = x
elif(num==('2')):
x = 2 ** (4*(len(num)-i-1) + 1)
ans = x
elif(num==('3')):
x = (2 ** (4*(len(num)-i-1) + 1) + 2 ** (4*(len(num)-i-1)))
ans = x
elif(num==('4')):
x = 2 ** (4*(len(num)-i-1) + 2)
ans = x
elif(num==('5')):
x = 2 ** (4*(len(num)-i-1) + 2) + 2 ** (4*(len(num)-i-1))
ans = x
elif(num==('6')):
x = 2 ** (4*(len(num)-i-1) + 2) + 2 ** (4*(len(num)-i-1) + 1)
ans = x
elif(num==('7')):
x = 2 ** (4*(len(num)-i-1) + 2) + 2 ** (4*(len(num)-i-1) + 1) + 2 ** (4*(len(num)-i-1))
ans = x
elif(num==('8')):
x = 2 ** (4*(len(num)-i-1) + 3)
ans = x
elif(num==('9')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1))
ans = x
elif(num==('a')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1) + 1)
ans = x
elif(num==('b')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1) + 1) + 2 ** (4*(len(num)-i-1))
ans = x
elif(num==('c')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1) + 2)
ans = x
elif(num==('d')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1) + 2) + 2 ** (4*(len(num)-i-1))
ans = x
elif(num==('e')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1) + 2) + 2 ** (4*(len(num)-i-1) + 1)
ans = x
elif(num==('f')):
x = 2 ** (4*(len(num)-i-1) + 3) + 2 ** (4*(len(num)-i-1) + 2) + 2 ** (4*(len(num)-i-1) + 1) + 2 ** (4*(len(num)-i-1))
ans = x

for i in range(len(num)):
result = ans + result
return result

def main():
run = True
print(" --- Hex - Ondalık Dönüştürücü ---\nÇıkmak için istediğiniz zaman * yazın")
while(run==True):
num = input("\nLütfen ondalık (küçük harf) olarak değiştirilecek bir onaltılık sayı girin: ")
if(num=="*"):
run = False
else:
ans=hexToDecimal(num)
fileToAppend = open("çıkış.txt","a")
fileToAppend.write(f"{ans}\n")
fileToAppend.flush()
print("\n",num, "ondalık sayı olarak: ",ans)
main()



def hexToDecimal_2(num):
return int(num,16)

---
 

Geri
Yukarı