如何将列表中的数字转换为十进制和八进制?

-2 投票
1 回答
2320 浏览
提问于 2025-04-17 11:56

我需要把我做的一个数字列表里的数字转换成十进制和八进制。这个列表是可以用的,转换也没问题。但是我就是无法在这个列表上进行转换。

print ("Welcome to Python binary convertor!")
print ("When you wish to stop entering numbers press x")
filename = "binarylist.txt"

numlist = []
num = input("Enter a binary number:")
while num !="x":
    numlist.append(num)
    num = input("Enter a binary number:")
def menu():
    print ("Your options are:")
    print ("     1. Convert Binary to Decimal")
    print ("     2. Convert Binary to Octal")
    print (" ")
    return int(input("Choose an option"))
loop = 1
choice = 0
while loop == 1:
    choice = menu()
    if choice == 1:
        result = int(input("Enter a binary number"), 2)
        print (result)
    elif choice == 2:
            result = int(input("Enter a binary number"), 8)
            print (result)
    else:
                print ("Error:Invalid choice  ")
                loop=0

1 个回答

0

好吧,int函数里的base参数只是用来把字符串转换成整数,而不是用来格式化。所以在上面提到的两个例子中,基数应该都是2。

因为这是个作业问题,记住这一点:在大多数情况下,计算机并不知道也不在乎内存中整数的原始基数。这并不重要,因为内存实际上是用二进制(基数2)来表示这些东西的。基数通常在与人类交互时才变得重要。

所以,int('101',2)会把这个字符串解码成整数值5。如果你想用不同的基数来表示5,你需要自己进行一些字符串格式化。一个简单的方法是把这个数字除以基数,然后把结果作为最重要的数字。接着用余数再除以基数,把结果作为下一个重要的数字,依此类推。

*在科学计算中有一些注意事项,等等。

编辑:

是的,正如@mlefavor所指出的,有一些内置函数可以做到这一点,但要考虑到这可能不是你老师想要的结果 ;) 而且,它们在一般情况下并不适用!

撰写回答