我正在研究一个简单的转换项目,用于将数字与二进制和十六进制进行相互转换的实践。但是,当我编写代码时,在使用十六进制函数时遇到了错误。
numArr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F']
valArr = []
print('Please input number to convert here... ')
userIn = int(input('>>> '))
userData = userIn
breakDown = True
while breakDown:
leftOver = userData / 16
leftConv = int(leftOver)
remainder = userData % 16
userData = leftConv
valArr.append(remainder)
print(valArr)
if leftConv < 1:
valArr.reverse() #result I want converted in this order
print(valArr) # Prints to console the above
break
for x in range(0, len(numArr)):
numArrVals = numArr[x]
for y in range(0, len(valArr)):
valArrVals = valArr[y]
if valArrVals == x:
print(numArrVals) # Prints out of order, lowest to highest
此代码的输出,当输入时说... 999是37E。这是因为'y'for循环中的if语句是从最低值打印到最高值。十六进制的999的实际值为3E7。
TL:DR-有没有办法按索引顺序而不是数字大小比较两个大小不同的数组?我确信该解决方案很容易,并且在发布之后,我可能最终会解决它。到那时为止,任何帮助都将不胜感激!也许Python字典是路要走? p>
答案 0 :(得分:0)
我不太了解您到底想用两个嵌套的for
循环做什么(我可以粗略地想象,但是要想解释出什么问题比仅仅展示如何做更困难)正确执行)。
从本质上来说,您已经将结果反转到valArr
中。您只需要将每个数字x
转换为相应的十六进制数字,即numArr[x]
。
所以不是
for x in range(0, len(numArr)): numArrVals = numArr[x] for y in range(0, len(valArr)): valArrVals = valArr[y] if valArrVals == x: print(numArrVals) # Prints out of order, lowest to highest
您可以使用
for x in valArr:
print(numArr[x])