Python'da kodu hata veriyor

Kenan Kılıç

Hectopat
Katılım
17 Şubat 2015
Mesajlar
123
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:

Elektrikos

Yoctopat
Katılım
28 Ocak 2022
Mesajlar
53
Çözümler
1
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: 26

Linuxginar

Megapat
Katılım
4 Temmuz 2017
Mesajlar
6.261
Makaleler
6
Çözümler
87
Yer
Izmir

Linuxginar

Megapat
Katılım
4 Temmuz 2017
Mesajlar
6.261
Makaleler
6
Çözümler
87
Yer
Izmir
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.
 
KS
KS
Kenan Kılıç

Kenan Kılıç

Hectopat
Katılım
17 Şubat 2015
Mesajlar
123
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ı?
 
Yukarı