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

练9:进制转换

欢迎大家订阅【蓝桥杯Python每日一练】 专栏,开启你的 Python数据结构与算法 学习之旅!

文章目录

  • 1 进制转换
  • 2 例题分析


1 进制转换

①任意制转为十进制
在这里插入图片描述
在这里插入图片描述
【示例】
在这里插入图片描述

在这里插入图片描述
②十进制转为任意制
【法一】
在这里插入图片描述
在这里插入图片描述
【法二】
在这里插入图片描述

2 例题分析

在这里插入图片描述

题目地址:https://www.lanqiao.cn/problems/1230/learning/

样例输入

2
2 10 
10101 
11 2
1793A5068

样例输出

21
10101111001010100111010101011

【示例代码】

# 定义字符集并构建字符到整数的映射
int_to_char = "0123456789ABCDEF"
char_to_int = {chr: idx for idx, chr in enumerate(int_to_char)}# k进制字符串转换为十进制整数
# 输入:k(源进制),x(字符串)
def K_To_Ten(k, x):ans = 0x = x[::-1]  # 反转字符串,以便从最低位开始计算for i in range(len(x)):ans += char_to_int[x[i]] * k**i  # 每位转换为十进制return ans# 十进制转换为任意 k 进制
# 输入:k(目标进制),x(十进制整数)
def Ten_To_K(k, x):if x == 0:  # 处理特殊情况,如果十进制数为0return "0"ans = ""while x != 0:ans += int_to_char[x % k]  # 取余并转换为目标进制字符x //= k  # 向下取整除以移除当前最低位return ans[::-1]  # 反转结果字符串以正确排列位序# 实现进制转换逻辑
T = int(input())  # 读取测试用例数量
for _ in range(T):N, M = map(int, input().split())  # 读取源进制和目标进制x = input().strip()  # 读取源进制数字串# 先将源进制数字串转换为十进制整数y = K_To_Ten(N, x)# 将十进制整数转换为目标进制数字串z = Ten_To_K(M, y)# 输出结果print(z)

【代码分析】

①字符集定义和映射

int_to_char = "0123456789ABCDEF"
char_to_int = {chr: idx for idx, chr in enumerate(int_to_char)}
  • int_to_char: 包括所有可能出现在任意进制表示中的字符集合,支持 0 到 15 进制数字。

    • 例如:0, 1, 2, 3, ... 9, A, B, C, D, E, F
  • char_to_int: 字符到整数的映射字典。

    • '0' 映射为 0
    • '1' 映射为 1
    • 'A' 映射为 10
    • 'B' 映射为 11
    • 依此类推…
  • 实现原理:用 enumerate 生成索引与字符的映射。
    for idx, chr in enumerate(int_to_char): char_to_int[chr] = idx这一步操作将 char_to_int 构建为如下形式:

{'0': 0, '1': 1, '2': 2, '3': 3,'4': 4, ...'A': 10,'B': 11,...'F': 15
}

该字典用于转换任意进制字符和整数之间的相互转换。

②从任意源进制字符串转换为十进制
定义 K_To_Ten 函数

def K_To_Ten(k, x):ans = 0x = x[::-1]  # 反转字符串,以便从最低位开始计算for i in range(len(x)):ans += char_to_int[x[i]] * k**i  # 每位转换为十进制return ans

a. 参数

  • k: 源进制,例如二进制为 ( k = 2 )。
  • x: 输入字符串,例如二进制字符串 "10101"

b. 流程解析

  • 反转字符串
    • 在进制转换中,从右往左处理数字更简单。
    • x[::-1] 实现字符串反转。
  • 逐位转换
    • 每位通过索引获取其整数值,并计算其在十进制的值。
    • 公式:char_to_int[x[i]] * k**i
      • char_to_int[x[i]] 获取当前字符对应的整数值。
      • k**i 表示当前位在十进制数中的权重。
  • 返回结果ans 包括转换后的十进制结果。

③从十进制转换为任意目标进制字符串
定义 Ten_To_K 函数

def Ten_To_K(k, x):if x == 0:  # 处理特殊情况,如果十进制数为0return "0"ans = ""while x != 0:ans += int_to_char[x % k]  # 取余并转换为目标进制字符x //= k  # 向下取整除以移除当前最低位return ans[::-1]  # 反转结果字符串以正确排列位序

a. 参数

  • k: 目标进制,例如十进制转换为二进制时 ( k = 2 )。
  • x: 十进制整数。

b. 流程解析

  • 特殊情况处理:如果十进制输入为 0,直接返回 "0"
  • 转换逻辑
    • 每次通过 x % k 取当前位的余数。
    • 通过 x //= k 逐步去除当前最低位。
    • 每位转换后用 int_to_char 转换为目标字符。
  • 反转结果字符串:因为转换从最低位开始,需要将结果字符串反转。

④主逻辑

T = int(input())  # 读取测试用例数量
for _ in range(T):N, M = map(int, input().split())  # 读取源进制和目标进制x = input().strip()  # 读取源进制数字串y = K_To_Ten(N, x)  # 转换为十进制整数z = Ten_To_K(M, y)  # 转换为目标进制数字串print(z)
  1. 首先读取测试用例的数量 T
  2. 对每个测试用例:
    • 读取源进制 N 和目标进制 M
    • 读取源进制数字字符串 x
  3. 调用函数依次转换:
    • K_To_Ten(N, x) 将源进制转换成十进制整数。
    • Ten_To_K(M, y) 将十进制转换为目标进制字符串。
  4. 输出转换结果。

【运行结果】
在这里插入图片描述

相关文章:

练9:进制转换

欢迎大家订阅【蓝桥杯Python每日一练】 专栏,开启你的 Python数据结构与算法 学习之旅! 文章目录 1 进制转换2 例题分析 1 进制转换 ①任意制转为十进制 【示例】 ②十进制转为任意制 【法一】 【法二】 2 例题分析 题目地址:https:/…...

善于运用指针--函数与指针

文章目录 前言一、函数的指针二、函数指针运用 1函数名地址2指针变量调用函数3指向函数的指针变量做函数参数二、返回指针值的函数总结 前言 如果在程序中定义了一个函数,在编译时会把函数的源代码转换为可执行代码并分配一段空间。这段空间有一个起始地址&#xf…...

Microi吾码低代码平台:前端源码的本地运行探索

文章目录 1.前端源码运行环境要求1.1 操作系统1.2 必备软件工具1.3 项目源码依赖 2.从Git仓库克隆前端源码3.安装项目依赖4.启动本地开发服务器5.常见问题与解决方案5.1 依赖安装失败5.2 端口冲突5.3 代码更新未生效 6.提升本地开发体验的技巧6.1 使用代理解决跨域问题6.2 集成…...

十一、容器化 vs 虚拟化-Docker 使用

文章目录 前言一、Docker Hello World二、Docker 容器使用三、Docker 镜像使用四、Docker 容器连接五、Docker 仓库管理六、Docker Dockerfile七、Docker Compose八、Docker Machine九、Swarm 集群管理 前言 Docker 使用‌ Docker 容器使用、镜像使用、容器连接、仓库管理、Do…...

实践项目2-自动计价电子秤

自动计价电子秤 一、功能说明 基于AVR单片机设计一自动计价电子秤。根据输入的价格以及检测的重量自动计算总价并打印(串口模拟)。 二、具体要求 1、开机后实时检测重量并显示; 2、通过按键输入并显示价格,具有修改功能&#…...

iOS如何操作更新推送证书

最近收到一份邮件,应该如何操作呢,证书还是跟以前一样冲钥匙串直接申请吗 Hello, As we announced in October, the Certification Authority (CA) for Apple Push Notification service (APNs) is changing. APNs will update the server certificates in sandbox on January…...

WSL2 在vscode无法连接copilot

报错情况: 本机可以使用copilot,但在WSL2上无法连接,报错信息如下: 检查网络情况: ping api.github.com 发现无法连接: github.com:Temporary failure in name resolution 在网上搜集的解决方法&#…...

HTA8998 实时音频跟踪的高效内置升压2x10W免电感立体声ABID类音频功放

1、特征 输出功率(fIN1kHz,RL4Ω,BTL) VBAT 4V, 2x10.6W(VOUT9V,THDN10%) VBAT 4V, 2x8.6W (VOUT9V,THDN1%) 内置升压电路模式可选择:自适应实时音频跟踪 升压(可提升播放时间50%以上)、强制升压 最大升压值可选择,升压限流值可设置 ACF防破音功能 D类…...

用ChatGPT-o1进行论文内容润色效果怎么样?

目录 1.引导问题发现 2.角色设定 3.整理常问修改 4.提供样例 5.小细节 小编在这篇文章中分享如何充分利用ChatGPT-o1-preview来提升论文润色的技巧。小编将持续跟进最新资源和最新的调研尝试结果,为宝子们补充更多实用的写作技巧。这些技巧将有助于您更有效地利…...

《探索 Jetpack Compose:构建现代化 Android UI 的利器》

Jetpack Compose 是谷歌推出的现代化 UI 框架,用于简化 Android 应用开发中的 UI 构建。它使用声明式编程方式,允许开发者以简洁直观的方式创建动态和响应式的 UI。本文将从基础概念到进阶用法,带你全面了解 Compose 的核心功能和使用技巧。 …...

cocos creator 的 widget组件的使用及踩坑

以下的内容基于cocos creator 3.8版本,如有错误,恳请指出。 👉官方文档的指引 应用:以上官方指引有非常清晰的使用方式,接下来说明一些注意事项: 1、与canvas搭配的使用,解决多分别率适配问题。…...

Baumer工业相机的EMVA1288 数据报告简介

项目场景: Baumer工业相机堡盟VCX系列和VLX系列为堡盟全系列相机中的主流常用相机和高端相机,性能强大、坚固可靠,易于集成,常用与一般行业的检测定位识别使用。 对应的高端相机系列具有极为丰富的强大技术功能,可轻…...

Docker 安装 中文版 GitLab

Docker 安装系列 安装GitLab、解决服务器内存不足问题、使用域名/IP地址访问项目 1、拉取 [rootTseng ~]# docker pull twang2218/gitlab-ce-zh:latest latest: Pulling from twang2218/gitlab-ce-zh 8ee29e426c26: Pull complete 6e83b260b73b: Pull complete e26b65fd11…...

uni-app 个人课程表页面

uni-app 个人课程表页面 插件参考地址 大部分代码都是参考了上述代码&#xff0c;只对代码做出了优化 1. 页面模板 在 schedule.vue 文件中&#xff0c;编写页面结构&#xff1a; <template><view><u-navbar title"个人中心"><view class&q…...

FPGA工作原理、架构及底层资源

FPGA工作原理、架构及底层资源 文章目录 FPGA工作原理、架构及底层资源前言一、FPGA工作原理二、FPGA架构及底层资源 1.FPGA架构2.FPGA底层资源 2.1可编程输入/输出单元简称&#xff08;IOB&#xff09;2.2可配置逻辑块2.3丰富的布线资源2.4数字时钟管理模块(DCM)2.5嵌入式块 …...

【OpenCV】平滑图像

二维卷积(图像滤波) 与一维信号一样&#xff0c;图像也可以通过各种低通滤波器&#xff08;LPF&#xff09;、高通滤波器&#xff08;HPF&#xff09;等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数 **cv.filter2D()**&…...

LeetCode300. 最长递增子序列(2024冬季每日一题 30)

给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的 子序列。 示例 1&…...

vue H5如何实现copy功能

vue H5如何实现copy功能 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><link rel"stylesheet" href"https://unpkg.com/vant2.12/lib/index.css" /><title></title><st…...

Golang使用etcd构建分布式锁案例

在本教程中&#xff0c;我们将学习如何使用Go和etcd构建分布式锁系统。分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要。它有助于维护一致性&#xff0c;防止竞争条件&#xff0c;并确保在任何给定时间只有一个进程独占访问资源。 我们将使用Go作为编程语言&am…...

Windows 和 Ubuntu 双系统安装

复现论文的时候&#xff0c;个别包只有Linux版本&#xff0c;并且源码编译比较麻烦&#xff0c;所以干脆直接安装一个双系统&#xff08;WinUbuntu&#xff09;&#xff0c;方便复现论文。 参考视频链接&#xff1a;Windows 和 Ubuntu 双系统的安装和卸载 0.所需工具 4G以上U…...

多媒体文件解复用(Demuxing)过程

多媒体文件的解复用&#xff08;Demuxing&#xff09;过程指的是从一个多媒体容器文件&#xff08;如 MP4、MKV、AVI 等&#xff09;中提取不同类型的多媒体数据流&#xff08;例如视频流、音频流、字幕流等&#xff09;的过程。 容器文件本身并不包含实际的视频或音频数据&…...

从 Zuul 迁移到 Spring Cloud Gateway:一步步实现服务网关的升级

从 Zuul 迁移到 Spring Cloud Gateway&#xff1a;一步步实现服务网关的升级 迁移前的准备工作迁移步骤详解第一步&#xff1a;查看源码第二步&#xff1a;启动类迁移第三步&#xff1a;引入 Gateway 依赖第四步 编写bootstrap.yaml第五步&#xff1a;替换路由配置第六步&#…...

qt之插件编译

QtXlsxWriter sudo apt install qtbase5-private-dev git clone https://github.com/dbzhang800/QtXlsxWriter.git cd QtXlsxWriter/ qmake make -j6 sudo make install #将生成的lib 及 include copy至项目路径的lib 及include里项目配置&#xff1a; QT xlsxbluetoo…...

pandas一行拆成多行

import pandas as pd df pd.DataFrame({Country:[China,US,Japan,EU,UK/Australia, UK/Netherland],Number:[100, 150, 120, 90, 30, 2],Value: [1, 2, 3, 4, 5, 6],label: list(abcdef)})# 法一 推荐 df2df.drop(Country, axis1).join(df[Country].str.split(/, expandTrue).…...

今天调了个转速的小BUG

同事说转速表有个bug&#xff0c;转速停止后&#xff0c;继电器没有恢复到初始状态。若停止之前是报警&#xff0c;继电器吸合&#xff0c;则停止后继电器还是吸合。我心想不会啊&#xff0c;这软件都弄了好几年了&#xff0c;一直也没出现过状况。 经过与调试同事的沟通&#…...

第三节、电机定速转动【51单片机-TB6600驱动器-步进电机教程】

摘要&#xff1a;本节介绍用定时器定时的方式&#xff0c;精准控制脉冲时间&#xff0c;从而控制步进电机速度 一、计算过程 1.1 电机每一步的角速度等于走这一步所花费的时间&#xff0c;走一步角度等于步距角&#xff0c;走一步的时间等于一个脉冲的时间 w s t e p t … ……...

从一个Bug谈前端响应拦截器的应用

一、问题场景 今天在开发商品管理系统时&#xff0c;遇到了一个有趣的问题&#xff1a;当添加重复的商品编号时&#xff0c;页面同时弹出了两条 "商品编号已存在" 错误提示&#xff1a; 这个问题暴露了前端错误处理机制的混乱&#xff0c;让我们从这个问题出发&…...

JS进阶DAY4|节点操作

嘿&#x1f44b; 今天我们要一起深入探索JavaScript中的DOM操作&#xff0c;这是前端开发中不可或缺的技能。&#x1f31f; 准备好了吗&#xff1f;让我们一起跳进DOM的海洋&#xff0c;看看怎么用代码操控网页的结构吧&#xff01; 目录 1. 增加节点 1.1 使用 appendChild 方…...

【Web】2023安洵杯第六届网络安全挑战赛 WP

目录 Whats my name easy_unserialize signal Swagger docs 赛题链接&#xff1a;GitHub - D0g3-Lab/i-SOON_CTF_2023: 2023 第六届安洵杯 题目环境/源码 Whats my name 第一段正则用于匹配以 include 结尾的字符串&#xff0c;并且在 include 之前&#xff0c;可以有任…...

go 语言中协程和GMP模型

为什么需要协程&#xff1f; 协程用来更加精细地利用线程&#xff0c;支撑超高的并发的。协程&#xff0c;从 runtime 的角度看&#xff0c;协程就是一个被调度的 g 结构体。 G 就是协程&#xff0c;M 是线程&#xff0c;P 是为了优化多线程并发时&#xff0c;会抢夺协程队列的…...

西海岸城市建设局网站/近期新闻热点事件简短

Ockam发布了一个基于Google Go语言的开源SDK&#xff0c;以允许开发人员将标识服务构建到其物联网应用程序中。 身份服务将由公司的“去中心化”云服务平台Ockam Network提供。 [ 什么是云计算&#xff1f; 您现在需要知道的一切 。 | 另外&#xff1a;InfoWorld的David Linth…...

做网站分pc端和移动端的吗/灰色词seo推广

一对一关系以丈夫和妻子模型 配置文件 妻子配置文件&#xff1a; <?xml version"1.0" encoding"utf-8" ?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hi…...

做网站多久能排靠前/百度网盘网页版登录首页

使用图像编程这一章来了解一下我们可以使用图片来作些什么事情.一幅图胜过千言万语,在wxWidgets,工具条,树形控件,notebooks,按钮,Html窗口和特定的绘画代码中,都会用到图片.有时候它们还会在不可见的地方发挥作用,比如我们可以用它来创建双缓冲区以避免闪烁.这一章里,我们会接…...

网站开发策划个人简历/百度搜索引擎的特点

当前&#xff0c;物联网技术正在推动人类社会从“信息化”向“智能化”转变&#xff0c;促进信息科技与产业发生巨大变化。但目前的实际情况来看&#xff0c;物联网的终端设备类型多、数量大&#xff0c;安装运维成本高、工作量大&#xff0c;新业务、新功能扩展靠硬件盒子“堆…...

宁波网站建设哪个公司好/搜索引擎优化的例子

曲线C绕y轴旋转所成的旋转曲面的方程为曲面之柱面、旋转面、椭球面 欧阳顺湘 北京师范大学 Recall 曲面方程(Equations for a Surface)&#xff1a; 更多曲面 柱 面 旋转面 椭球面 旋转面 以一条平面曲线绕其平面上的一条直线旋转一周所成的曲面叫做旋转曲面。这条直线叫做旋转…...

石家庄便宜做网站/站长交流平台

漏洞扫描小工具写完后&#xff0c;我打算给其增加一个启动界面&#xff0c;此处借鉴于 https://blog.csdn.net/yy873259480/article/details/7411383 界面组成为图片进度条&#xff0c;代码如下&#xff1a; package vul_scan; import java.awt.Color; import java.awt.Toolki…...