《python语言程序设计》2018版第8章8题编写函数实现二进制转十进制(字符串变整数)!!整数没法进行下标

二进制转十进制

前言

将字符串变成整数,但是整数没法像字符串一样做下标
反复尝试最好的手段,是多多打印

第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)
这是用来测试字符串属性的可以不要

相关推荐
兰令水13 分钟前
leecodecode【单调栈】【2026.6.12打卡-java版本】
java·开发语言·算法
涛声依旧-底层原理研究所15 分钟前
混合检索 + 重排:让 AI Agent 拥有「既全又准」的认知骨架
人工智能·python
leagsoft_100316 分钟前
零信任选型五刀法——零信任怎么选?五个问题,五条红线
开发语言·php
努力写A题的小菜鸡18 分钟前
01-PyTorch加载数据初认识(dataset运用)
人工智能·pytorch·python
abcy07121320 分钟前
python fastapi celery hdfs 异步上传
python·hdfs·fastapi
Dxy123931021623 分钟前
Python多线程如何操作全局变量:从踩坑到最佳实践
python
AI人工智能+电脑小能手26 分钟前
【大白话说Java面试题 第112题】【并发篇】第12题:AQS 中节点的入队时机有哪些?
java·开发语言·面试
SilentSamsara27 分钟前
RAG 系统入门:LangChain/LlamaIndex + Chroma 向量数据库的检索增强实战
数据库·人工智能·python·青少年编程·langchain
IT WorryFree28 分钟前
Zabbix 7.4 API 可同步全量参数清单(同步第三方系统专用)
java·开发语言·zabbix
码云骑士39 分钟前
06-Python装饰器从入门到源码(上)-闭包与自由变量
开发语言·python