2016-09-14 34 views
0

我使用python 3.5.2來製作這個程序。它假定取任何十進制數並將其轉換爲二進制。爲什麼我的十進制二進制程序向後返回值並以表格格式?

number = int(input('Enter a number in base 10: ')) 
base2 = '' 
while(number > 0): 
    rem = number % 2 
    number = number // 2 
    base2 = srt(number) + str(rem) 
    print(rem) 
#This was to prevent the end text from sticking to the print 
input('\nEnter to end') 

它返回正確的值,但向後和在列中,我不知道爲什麼。

回答

0

一些修改代碼:

number = int(input('Enter a number in base 10: ')) 
base2 = '' 
while(number > 0): 
    rem = number % 2 
    number = number // 2 # can be number //= 2, or number >>= 1 
    base2 += str(rem) 
    #print(rem) # no need to print 
print(base2[::-1]) 

或者更簡單:

base2 = bin(number)[2:] 
0

您的代碼在單獨的行上打印剩餘數字的最低位,這就是爲什麼您按相反順序看到它們的原因。您可以將您的代碼來存儲比特改變到一個數組,然後在循環之後打印出來以相反的順序:

number = int(input('Enter a number in base 10: ')) 
base2 = [] 
while(number > 0): 
    base2.append(str(number % 2)) 
    number = number // 2 

print(''.join(reversed(base2))) 

Python中也有內置的方法bin比能爲你做轉換:

>>> bin(10) 
'0b1010' 
+0

我會使用'bin(i)',但我在一個二進制計算器中使用它,可悲的是它不能按照我需要的方式工作。 – rocky

+0

@TylerSeward「bin」不工作有什麼具體原因嗎? – niemmi

+0

當我完成程序之後,需要做任何算術運算符,然後我把它變成一個變量並將它插入bin,但是它沒有返回任何值或錯誤。 – rocky