我知道这可能有点混乱,但我对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()
你可以试试
同样在checkUp(noToConvert,mainOp)中,应该使用binaryToDenary(splitList)而不是binaryToDenary(noToConvert)
一元到二元
相关问题 更多 >
编程相关推荐