如何将列表中的数字转换为十进制和八进制?
我需要把我做的一个数字列表里的数字转换成十进制和八进制。这个列表是可以用的,转换也没问题。但是我就是无法在这个列表上进行转换。
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所指出的,有一些内置函数可以做到这一点,但要考虑到这可能不是你老师想要的结果 ;) 而且,它们在一般情况下并不适用!