当前位置: 首页 > news >正文

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

二进制转十进制

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

在这里插入图片描述

http://www.dtcms.com/a/285289.html

相关文章:

  • 基于MATLAB的极限学习机ELM的数据回归预测方法应用
  • 用python可视化分析二次元经济的爆发
  • python网络爬虫(第一步:网络爬虫库、robots.txt规则(防止犯法)、查看获取网页源代码)
  • 2025年6月GESP(C++一级):假期阅读
  • Baumer工业相机堡盟工业相机如何通过YoloV8模型实现人物识别(C#)
  • 2025年6月GESP(C++一级):值日
  • VOTE:基于轨迹集成投票的视觉-语言-动作模型优化
  • 掌握工程化固件烧录,开启你的技术进阶之路-STM32系列
  • C#将类属性保存到Ini文件方法(利用拓展方法,反射方式获取到分组名和属性名称属性值)
  • vue-cli 模式下安装 uni-ui
  • 2-Vue3应用介绍
  • STM32f103ZET6之ESP8266模块
  • AlpineLinux的内核优化
  • AI搜索+GEO时代的营销策略更迭学习笔记
  • 计算机的网络体系及协议模型介绍
  • 【Java】文件编辑器
  • ROS1/Linux——Launch文件使用
  • 【深度学习新浪潮】AI在finTech领域有哪些值得关注的进展?
  • STM32 IAR 生成工程后配置
  • CSP-S模拟赛三(仍然是难度远超CSP-S)
  • 【Java源码阅读系列55】深度解读Java Method 类源码
  • 78、【OS】【Nuttx】【启动】caller-saved 和 callee-saved 示例:栈指针和帧指针(下)
  • 股票行情接口api,板块、概念接口,股票主力资金流接口,板块概念资金流接口
  • 暑期自学嵌入式——Day05(C语言阶段)
  • 1-创建Vue3项目
  • Linux系统编程——进程间通信
  • 融智兴科技: RFID超高频洗涤标签解析
  • LeetCode--48.旋转图像
  • 快速了解网络爬虫
  • 设备驱动的私有数据设计