我正在撰寫一個程式,使用重復除法將十進制數轉換為二進制數。我只是無法扭轉最終答案(這是變數“x”)。
num = int(input("Enter a number: "))
remainder = 0
while num > 0:
remainder = num%2
num = num//2
x = str(remainder)
#print(reversed(x))
print(x[::-1])
num = 19 的輸出
1
1
0
0
1
這是與實際答案相反的,實際答案是 10011 代表十進制 19。另外,我怎樣才能把答案全部放在一行中,所以它不是垂直寫的
uj5u.com熱心網友回復:
您只是在回圈中一次列印一個二進制數,當它們像這樣一個接一個列印時,您無法反向傳遞。
您可以改為在這樣的串列中插入二進制元素
num = 19
remainder = 0
binary = []
while num > 0:
remainder = num%2
num = num//2
binary.insert(0,str(remainder))
print("".join(binary))
uj5u.com熱心網友回復:
num = int(input("Enter a number: "))
s = ''
remainder = 0
while num > 0:
remainder = num%2
num = num//2
s = str(remainder)
print(s[::-1])
您正在反轉單個數字,即“1”、“0”而不是整個最終字串。顯然,反轉長度為 1 的字串沒有任何作用。
備擇方案:
num = int(input("Enter a number: "))
s = ''
while num:
bit = num & 1
s = str(bit)
num >>= 1
print(s[::-1])
或者干脆:
print(bin(int(input("Enter a number: "))))
uj5u.com熱心網友回復:
您可以print通過執行以下操作來洗掉換行符:
print(x[::-1], end='')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/322602.html
上一篇:#在迭代程序中添加新元素后的回圈次數。forEach與for/of
下一篇:Pythonifelif和回圈
