2012-01-30 84 views
-2

我需要将一些列表中的数字转换成十进制和八进制。该列表起作用,转换也起作用。但我无法让转换工作在列表上。如何将列表中的数字转换为十进制和八进制?

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 
+0

查看'oct','bin'和'hex'函数,并尝试将它们映射到列表。例如'map(oct(numlist))'。 – HardlyKnowEm 2012-01-30 05:59:33

+0

Aside - 使用布尔值(True/False)表示布尔检查。这不是C,我们尽量避免这样的垃圾!此外,而不是'loop = 0'考虑'while True:... break'结构。 – 2012-01-30 06:00:57

回答

0

雏,所述base参数为int仅用于字符串转换为整数,而不是格式化。因此,在上述两种情况下,基数应该为2.

由于这是一个家庭作业问题,请将其带走 - 在大多数情况下,机器不知道也不在乎内存中整数的基数是多少本来。这是无关紧要的,因为内存在物理基础上代表了这些东西。基础通常变得与人类接口相关。

因此,int('101',2)会将字符串解码为整数值5.要在不同的基础中编码5,您需要自己做一些字符串格式化。一个简单的解决方案是将数字除以基数,然后将答案作为最重要的数字。然后将余数除以基数,然后将答案作为下一个有效数字等。

*有些科学计算的警告,等等等等。

编辑:

是的,作为@mlefavor指出有内置插件这一点,但考虑到可能不是你的教授正在寻找;)除此之外,他们没有在一般情况下工作!

+0

谢谢大家。我发现这非常有帮助。保持良好的工作。完成作业并及时递交!!!! – Python32 2012-01-30 08:28:04

相关问题