2012-01-30 24 views
-2

私が10進数と8進数にしたリストからいくつかの数字を変換する必要があります。リストは機能し、変換も同様です。しかし、私は変換をリストに作用させることはできません。リスト内の数値を10進数と8進数に変換するにはどうすればよいですか?

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

+0

- ブールチェックのためにブール値(真/偽)を使用します。これはCではないので、私たちはそのようなごみを避けようとしています!また、 'loop = 0'の代わりに' while True:... break'構造を考えてみましょう。 –

答えて

0

仔、intためbase引数のみ書式、整数に文字列を変換しないためです。だから、上記のどちらの場合でもベースは2でなければなりません。

これは宿題の問題ですので、ほとんどの場合、マシンはメモリ内の整数のベース元々。メモリは基本的にこれらのことを物理的に表しているため、無関係です*。通常、ベースは人間とのインタフェースに関係します。

したがって、int('101',2)は、文字列を整数値5としてデコードします.5を別のベースでエンコードするには、自分で文字列をフォーマットする必要があります。簡単な解決法は、数を基数で除算し、その答えを最上位桁とすることです。次に、残りの部分を基数で除算し、その次の有効数字などとして答えを取る。

*科学計算のためのいくつかの警告があります。

EDIT:@mlefavorが指摘するように

はい、そこに構築されたインは、このためですが、それはあなたの教授が探しているものではないかもしれません考える;)また、彼らは一般的なケースでは動作しません。 !

+0

ありがとうございます。私はこれが非常に役に立つことが分かった。良い仕事を続けてください。割り当てが完了し、時間内に手渡された!! – Python32

関連する問題