二进制转十进制
- 前言
- 第1章幻想的草稿
- 第2章如何把这些幻想的数字带到现实的算式中
- 第3章看来是我想多了
- [第4章 空值不一定是最好的选择](#第4章 空值不一定是最好的选择)
- [第5章 成功了](#第5章 成功了)
前言
将字符串变成整数,但是整数没法像字符串一样做下标
反复尝试最好的手段,是多多打印

第1章幻想的草稿
看一下我第一个方案的代码
利用for循环将数字字符转换成int整数,然后进行二进制转十进制的代码操作
python
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
问题找到了
python
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去掉呢????
python
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
来改一下
python
def binary_to_decimal(binary_string):
return int(binary_string)
num_int = '10001'
a = binary_to_decimal(num_int)
print(a)
for循环是不是有点多余,她直接就把它变成整数我们试试

第3章看来是我想多了
我先把字符串变成整数。然后利用字符串不对!!不对!!不是列表、不是元组,我们这张是字符串
python
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循环来完成。
python
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)

python
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章 空值不一定是最好的选择
python
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章 成功了
python
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)
这是用来测试字符串属性的可以不要
