Python'da kodu hata veriyor

Kenan Kılıç

Kilopat
Katılım
17 Şubat 2015
Mesajlar
125
Daha fazla  
Cinsiyet
Erkek
def hexToDecimal(num, output):
result = 0
num = str(num)
ans = [0]*len(num)
"""
:param `output` is output of wordlist file.
"""



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(" --- 16'lık tabandan 10'luk tabana çeviri ---\nÇıkış için *...")
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)
print("\n",num, "ondalık sayı olarak: ",ans,output)
output.write("%s\n" % num, ans)
output = open(output, 'w')
main()


if __name__ == '__main__':
parser.add_argument(
'-out', '--output',
default='yeni/1.txt', help='Çıktı dosyası')
#-----------------------------------------------------------
def hexToDecimal_2(num):
return int(num,16)
#----------------------------------------------------------


File "2.py", line 76, in <module>
main() # Run the test cases
File "2.py", line 72, in main
ans = hexToDecimal(num)

TypeError: hexToDecimal() missing 1 required positional argument: 'output'

Hatası alıyorum... Yardımlarınızı bekliyorum.

Genel amaç, çoklu hexadecimal kopyalayıp bunu decimal haline çevirerek .txt alarak kaydetmek.


Python 3.7.3 kullanıyorum.
 
Son düzenleme:
File "2.py", line 76, in <module>
main() # Run the test cases
File "2.py", line 72, in main
Ans = hexToDecimal(num)
TypeError: hexToDecimal() missing 1 required positional argument: 'output'

Genel amaç, çoklu hexadecimal kopyalayıp bunu decimal haline çevirerek .txt alarak kaydetmek.
Hatası alıyorum... Yardımlarınızı bekliyorum.

Python 3.7.3 kullanıyorum.

Python 3.10 yeni versiyonunu yükle belki düzelir.
 

Dosya Ekleri

  • ythg.PNG
    ythg.PNG
    8,2 KB · Görüntüleme: 37
Su kodu dogru duzgun indentleriyle atarsan belki canimiz cikmaz test ederken, ne dersin?
Ayrica anladigimca siz hexToDecimal cagirmissiniz ama dosya ismi belirtmemissiniz.
hexToDecimal(0xFF, "test.txt") gibi.
Cunku kod dogru duzgun degil indentsiz yani bosluklari olmadan paylasilmis. Python'da indentler onemli. C olsa neyse de.
 
hexToDecimal fonksiyonu iki parametre alıyor ancak tek parametre girmişsin, ikinci parametre çıktı değeri icin.
 
Ayrica anladigimca siz hexToDecimal cagirmissiniz ama dosya ismi belirtmemissiniz.
hexToDecimal(0xFF, "test.txt") gibi.

Cunku kod dogru duzgun degil indentsiz yani bosluklari olmadan paylasilmis. Python'da indentler onemli. C olsa neyse de.
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ı')
------------------------------
hexToDecimal fonksiyonu iki parametre alıyor ancak tek parametre girmişsin, ikinci parametre çıktı değeri icin.
Çıktı değerini bir parametre olarak değilde döngü olarak hazırlamanın yolu var mı?
 

Yeni konular

Geri
Yukarı