二進制轉十進制
- 前言
- 第1章幻想的草稿
- 第2章如何把這些幻想的數字帶到現實的算式中
- 第3章看來是我想多了
- 第4章 空值不一定是最好的選擇
- 第5章 成功了
前言
將字符串變成整數,但是整數沒法像字符串一樣做下標
反復嘗試最好的手段,是多多打印
第1章幻想的草稿
看一下我第一個方案的代碼
利用for循環將數字字符轉換成int整數,然后進行二進制轉十進制的代碼操作
def binary_to_decimal(binary_string):t_num = ''for i in range(len(binary_string)):t_num = int(len(binary_string[i]))print(t_num,end='')num_int = '10001'binary_to_decimal(num_int)
不對??10001 變成了11111
問題找到了
def binary_to_decimal(binary_string):t_num = ''for i in range(len(binary_string)):t_num = int((binary_string[i])) #多了一個len所以讓計算機誤會了print(t_num,end='')num_int = '10001'binary_to_decimal(num_int)
找到了問題,這就是為什么是11111.因為len肯定是數字符串的數,每次循環當然都是1個數,所以就一直打印的不是字符,而是len后當前循環中的字符串數字。
第2章如何把這些幻想的數字帶到現實的算式中
再回到剛才這個成功給我機會進入算式的代碼,我有個想法是不是可以把for去掉呢????
def binary_to_decimal(binary_string):t_num = ''for i in range(len(binary_string)):t_num = int((binary_string[i]))print(t_num,end='')num_int = '10001'binary_to_decimal(num
來改一下
def binary_to_decimal(binary_string):return int(binary_string)num_int = '10001'a = binary_to_decimal(num_int)
print(a)
for循環是不是有點多余,她直接就把它變成整數我們試試
第3章看來是我想多了
我先把字符串變成整數。然后利用字符串不對!!不對!!不是列表、不是元組,我們這張是字符串
def binary_to_decimal(binary_string):len_num = len(binary_string) #測量一下字符串的長度integer_to = int(binary_string) #將字符串轉換成整數add_num = '' #放置不斷累積的結果for i in range(len_num, 1,-1):add_num += pow(integer_to[i], i)print(i)print(len_num)print(add_num)num_int = '10001'binary_to_decimal(num_int)
int object is not subscriptable
這個翻譯有點。。。。。。。。。
這段代碼應該改一下。現在是一次性都變成了整數。我需要變成一次一個數的for循環來完成。
integer_to = int(binary_string) #將字符串轉換成整數#我改成了這樣for i in range(len_num, 1,-1):int_num = int(binary_string[i])add_num += pow(int_num, i)
def binary_to_decimal(binary_string):len_num = len(binary_string) #測量一下字符串的長度add_num = '' #放置不斷累積的結果for i in range(len_num):int_num = int(binary_string[i])add_num += pow(int_num, i)print(add_num)num_int = '10001'binary_to_decimal(num_int)
第4章 空值不一定是最好的選擇
def binary_to_decimal(binary_string):len_num = len(binary_string) add_num = '' #問題就出在這里for i in range(len_num):int_num = int(binary_string[i])add_num += pow(int_num, i)# print(type(int_num),int_num)# print(len_num)print(add_num)num_int = '10001'binary_to_decimal(num_int)
add_num = 0 比add_num =''要好
同時我明白了pow(int_num, i)的模式對,但是我是不是忘記了二進制需要乘2,而不是完全不操作。
第5章 成功了
def binary_to_decimal(binary_string):len_num = len(binary_string) #測量一下字符串的長度add_num = 0 #放置不斷累積的結果for i in range(len_num):int_num = int(binary_string[i])add_num += int_num*pow(2, i)#print(type(int_num),int_num)print(f'二進制 {binary_string} 變成十進制 {add_num}.')num_int = '10001'binary_to_decimal(num_int)
print(type(int_num),int_num)
這是用來測試字符串屬性的可以不要