2016-09-19 138 views
0

因此,我是編程新手,最近我得到了一個任務,可以將二進制轉換爲十進制,反之亦然,也可以將十進制轉換爲十六進制,反之亦然。問題是,我不允許使用可用功能,如int()hex()bin()代碼適用於Windows,但不適用於Mac

我可能已經找到了一種方法來完成從十進制到二進制的轉換,並且我在我的朋友的筆記本電腦上(它運行在Windows上)試用了它,並且工作正常。但是當我嘗試在我自己的筆記本電腦(MacBook)中執行它時,即使它是完全相同的代碼,它也不會運行。下面的代碼:

def dectobin(x): 
    temporary_result = "" 
    while x > 0: 
     result = str(x % 2) + temporary_result 
     x = x // 2 
    return result 

相反,結果是二進制數,它只是返回的x % 2值。有沒有人有任何想法,爲什麼它在Mac上,而不是在Windows上?如果是這樣,我哪裏出錯了?我如何解決它?

+2

您確定您在兩臺計算機上使用的是相同版本的Python嗎? –

+2

我不明白這將如何在任何平臺上工作。 –

+0

它也不適用於任何版本的Python,因此兩臺計算機上的相同都無關緊要。 – martineau

回答

1

temporary_result的值永不改變,但仍爲""。因此result的值將始終爲str(x % 2),最近處理的值爲x。假設當x變爲零時循環終止,則函數總是返回1

你確定這是你在Windows上執行的代碼嗎?你不會說你知道「它甚至不會運行」,但可能你在兩臺不同的機器上使用不同的Python版本。

0

爲什麼當循環中值永遠不會改變時,您需要temporary_result?

def dectobin(x): 
result = "" 
while x > 0: 
    result = str(x % 2) + result 
    x = x // 2 
return result 
相關問題