2012-01-30 83 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

相關問題