題目要求輸入一整數n
並轉換為二進制,並打印連續出現1的最大次數。
5
1
(因為5的二進制為101
,所以連續出現1的最大次數=1)
n = int(input())
numbers = bin(n)[2:].split('0') #因為轉換完前兩個字為'0b',所以從第三個數字開始
lenghts = [len(i) for i in numbers] #取每個元素的數量儲存成列表
print(max(lenghts))
如果將每個階段印出,以n=13為例,會長醬:
bin(13) = '0b1101' #整數經過bin()之後會轉換成字串類型
numbers = ['11', '1'] #以0分隔,便會將連續的1分成一個個元素
lenghts = [2, 1]
max(lenghts) = 2
n = int(input())
numbers = ''
while True:
a = n // 2
b = n % 2
numbers += str(b)
n = a
if n == 0:
break
numbers = numbers.split('0')
lenghts = [len(i) for i in numbers]
print(max(lenghts))
【高中生 - a034: 二進位制轉換】
輸入:
輸入若干行直到 EOF (end of the file)為止。每一行包含一個十進位的整數。例:3
6
輸出:
針對每一行的整數輸出其二進位制的結果。例:11
110
def transToBinary(n): #函數功能: 吃一個十進位的數字,回傳一個二進位表示的字串
num = []
while True:
a = n // 2
b = n % 2
num += [str(b)]
n = a
if n == 0:
break
return ''.join(num[::-1])
while True:
try:
n = int(input())
print(transToBinary(n))
except:
break
僅為個人解題筆記,可能有錯誤或未補充詳盡之處,歡迎不吝指教! 也歡迎正在自學的夥伴一起討論學習~共勉之^-^ 感謝閱讀!