python - 遍历数组(列表)但按索引顺序?
问题描述
我正在做一个简单的转换项目,用于将数字转换为二进制和十六进制。但是在编写代码时,我在处理 hex 函数时遇到了错误。
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字典是要走的路?
解决方案
我不太明白你想用最后的两个嵌套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])
推荐阅读
- mapbox - 使用数据突出显示国家或次国家区域
- random - 如何在 SAS 中生成随机时间并获取时差?
- flutter - 如何在颤动中使用 onTap 导航到不同的屏幕
- java - 将删除的行插入另一个 xls 文件
- dji-sdk - 致命异常:没有虚拟方法 styleUrl(Ljava/lang/String;)Lcom/mapbox/mapboxsdk/maps/MapboxMapOptions
- python - Python:如何在 pathlib 中返回一个文件夹
- php - 使用 docker-apache-php 重定向虚拟主机
- vb.net - 通过 Visual Basic 代码查找程序的基地址
- javascript - 使用 libsodium 加密,需要使用 crypto_box_keypair 生成公钥和私钥
- c - 当 char 变量在 C 中具有字符串“cd”时执行某些操作(新手问题)