我知道這可能有點令人困惑,但我是Python的新手。我有一個學校項目的任務是創建一個二進制到二進制的轉換器,該轉換器可以使用高達255和高達8位的二進制文件。需要幫助來追蹤轉換錯誤
我基本上把輸入,分割,檢查,把它放到一個列表中,解決它,把它放到另一個列表並打印完成列表。除了最後一部分 - 轉換之外,它都有效。提前致謝。
我得到兩次轉換此錯誤:
Traceback (most recent call last):
File "C:\Users\massi_000\Desktop\COM\Task 1 #2.5.py", line 101, in <module>
main()
File "C:\Users\massi_000\Desktop\COM\Task 1 #2.5.py", line 91, in main
checkUp(noToConvert, mainOp)
File "C:\Users\massi_000\Desktop\COM\Task 1 #2.5.py", line 80, in checkUp
binaryToDenary(noToConvert)
File "C:\Users\massi_000\Desktop\COM\Task 1 #2.5.py", line 30, in binaryToDenary
while int(doneListBin[int(r)]) > 1:
IndexError: list index out of range
這是我的全部代碼。
doneListBin = []
doneListDen = []
splitList = []
doneList = []
def denaryToBinary(splitList):
#Works binary
for r in splitList:
doneListDen.append(int(splitList[int(r)]) % 2)
while int(doneListDen[int(r)]) > 1:
doneListDen.append(int(splitList[int(r)]) % 2)
print(doneListDen)
def binaryToDenary(splitList):
#Works denary
for r in splitList:
doneListBin.append(int(splitList[int(r)]) * 2 ** (int(r) + 1))
while int(doneListBin[int(r)]) > 1:
doneListBin.append(int(doneListBin[int(r)]) * 2 ** (int(r) + 1))
print(doneListBin)
無一不精當初這裏
def checkUp(noToConvert, mainOp):
try:
if int(noToConvert) < 0:
raise ValueError
elif noToConvert.isdigit() == False:
raise ValueError
elif mainOp == 'd':
if int(noToConvert) > 255:
raise ValueError
else:
#Splits input for checking & passes
splitList.extend(noToConvert)
print(splitList)
denaryToBinary(noToConvert)
elif mainOp == 'b':
#Makes sure it's not huge
if int(len(str(noToConvert))) > 8:
raise ValueError
#Splits input for checking
splitList.extend(noToConvert)
print(splitList)
#Makes it 8-bit
if int(len(noToConvert)) < 8:
for i in range(8 - int(len(noToConvert))):
splitList.insert(0, 0)
#while int(len(str(splitList))) < 8:
# splitList.insert(0, 0)
# print(splitList)
#Should only accept valid inputs (0s and 1s)
for i in splitList:
if int(splitList[int(i)]) == 0 or int(splitList[int(i)]) == 1:
print(str(i) + ' in range')
else:
raise ValueError
binaryToDenary(noToConvert)
except ValueError:
main()
def main():
### CHOICES ###
mainOp = input("Do you want to convert from (D)enary or from (B)inary?: ").lower()
noToConvert = input("What is the number to convert?: ")
if mainOp in ("d", "denary", "b", "binary"):
checkUp(noToConvert, mainOp)
else:
raise ValueError
# EXECUTION #
main()
您至少有兩條語句可能導致該異常,並且沒有發佈回溯,任何人都無法猜測出哪個是錯誤的。這是您應該始終發佈完整追溯的許多原因之一,而不僅僅是對錯誤的描述。 – abarnert
你爲什麼發佈註釋掉的函數?如果它們與樣本不相關,則不要發佈它們。 – Keeler
或者你可以找你的同學工作。 http://stackoverflow.com/questions/19798195/how-would-i-turn-a-number-into-its-binary-representation/19798354#19798354 – Back2Basics