我创建了一个Decimal to Hexadecimal数字转换器,它将任何十进制数转换为十六进制数。我将剩余部分插入到包含['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
的列表中,这是我插入的数字除以16的商。当我打印myResult = ""
作为我的进程的存储时。它给了我两个价值观。
changes = int(input("Choose one: "))
if changes == 1:
myRemainder = 0
myResult = ""
number = int(input("Enter a number: "))#74
while number > 0:
myList = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
myRemainder = number % 16
#storage #append remainder in list
myResult = myList[myRemainder] + myResult
number = number // 16
print(myResult)
第一个值是最后一个进程的结果,最后一个值是整个进程的结果。任何帮助将不胜感激!谢谢!
答案 0 :(得分:1)
您将print(myResult)
放入循环。因此,对于像74这样的数字,它将打印第一个数字,然后打印两个数字。
将print()
调用移出循环:
while number > 0:
myList = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
myRemainder = number % 16
#storage #append remainder in list
myResult = myList[myRemainder] + myResult
number = number // 16
print(myResult)
仅打印最终结果,而不是任何中间人。
您可以更多地简化代码;没有必要重新创建yoru myList
列出循环的每个迭代;你甚至可以把它变成一个字符串。接下来,使用divmod
function生成除法结果和一次调用中的余数:
digits = '0123456789ABCDEF'
while number:
number, digit = divmod(number, 16)
myResult = digits[digit] + myResult