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

List prints two values instead of one

我创建了一个十进制到十六进制数字转换器,可以将任何十进制数转换为十六进制数。我将余数插入到包含 ['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)

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

您将 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 list 循环的每一次迭代;你甚至可以把它变成一个字符串。接下来,使用 divmod function 在一次调用中产生除法结果和余数:

digits = '0123456789ABCDEF'
while number:
    number, digit = divmod(number, 16)
    myResult = digits[digit] + myResult