列表打印两个值而不是一个

时间:2016-04-01 17:49:15

标签: python python-3.x base

我创建了一个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)

第一个值是最后一个进程的结果,最后一个值是整个进程的结果。任何帮助将不胜感激!谢谢!

1 个答案:

答案 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