Python 中的基本转换器

2024-04-19

我正在编写一个程序,用于在 Python 中将任何基数转换为基数 10。该程序的代码如下所示。

print("Enter the number you want to convert to base 10: ")
number = input()
"""length of the digit entered"""
length = len(number)
print("Enter the base of the number: ")
base = input()

for i in range(len(number)):
    length = length - 1
    """Computes the sum for each digit"""
    s = number[i] * (int(base) ^ length) 
    s += s
print(s)

问题是,对于我输入的任何数字,答案始终是 1111。欢迎提供有关如何解决此问题的任何建议。


^ is the 按位异或运算符 https://docs.python.org/3/reference/expressions.html#binary-bitwise-operations,而不是幂运算符。在Python中幂运算符是** https://docs.python.org/3/reference/expressions.html#the-power-operator:

s = number[i] * (int(base) ** length)

还有其他错误;s += s简直就是s *= 2,您将那里的数字加倍。你可能想从s = 0 outside然后循环求和:

s = 0
for i in range(len(number)):
    length = length - 1
    """Computes the sum for each digit"""
    s += number[i] * (int(base) ^ length) 

但你没有转换number[i]到那里的实际数值。

您需要在此处从“数字”到数值的映射:

digits = {c: i for i, c in enumerate('0123456789abcdefghijklmnopqrstuvwxyz')}

这创建了一个从字符串数字到数值的字典映射,所以'7'映射到7 and f映射到 15 等,为您提供一直到基数 36 的映射。

现在你可以使用digits从字符串数字映射到数值:

s = 0
base = int(base)
for i, digit in enumerate(reversed(number.lower())):
    s += digits[digit] * (base ** i) 

我在这里反转了数字的处理;从小到大更容易。enumerate()给我们一个索引计数,你可以循环directly over number产生字符,而不是使用range()并索引到number。我小写number以便a and A两者的意思都是10在那么高的基地。

然后可以将其转换为函数中的单行代码:

digits = {c: i for i, c in enumerate('0123456789abcdefghijklmnopqrstuvwxyz')}

def parse_number(number, base):
    return sum(digits[digit] * (base ** i)
               for i, digit in enumerate(reversed(number.lower())))

print(parse_number(number, int(base)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 中的基本转换器 的相关文章

  • Python:urlretrieve PDF下载

    我在 Python 中使用 urllib 的 urlretrieve 函数来尝试从网站上获取一些 pdf 它 至少对我来说 已停止工作并正在下载损坏的数据 15 KB 而不是 164 KB 我已经用几个 pdf 对此进行了测试 但都没有成功
  • 在Python中解析空选项

    我有一个应用程序 允许您将事件数据发送到自定义脚本 您只需布置命令行参数并指定什么事件数据与什么参数相匹配 问题是这里没有真正的灵活性 您制定的每个选项都将被使用 但并非每个选项都必须有数据 因此 当应用程序构建要发送到脚本的字符串时 某些
  • Django 管理中的嵌套内联?

    好吧 我有一个相当简单的设计 class Update models Model pub date models DateField title models CharField max length 512 class Post mode
  • Python:我可以修改元组吗?

    我有一个 2 D 元组 实际上我以为 它是一个列表 但错误说它是一个元组 但无论如何 该元组的形式为 浮点数 val prod id 现在我有一个字典 其中包含 key gt prod id 和 value prod name 现在 我想将
  • python列表理解和extend() [重复]

    这个问题在这里已经有答案了 深入学习 Python 2 7 1 但未能理解这一点 几个小时 gt gt gt a 1 2 gt gt gt b 3 4 gt gt gt gt gt gt a extend b 0 gt gt gt a 1
  • Python 3:如何更改GDAL中的图像数据?

    我有一个 GeoTIFF 图像 其中包含颜色表和带有 8 位表键的单个栅格带 并且使用 LZW 压缩 我加载该图像gdal Open https gdal org python osgeo gdal module html 我还有一个包含
  • 如何将当前日期分配给 odoo v8 中的日期字段?

    我想将当前日期分配给以下代码中的日期字段 start date calendar obj create cr uid name rec res act ion user id rec res asgnd to id start date l
  • PyKCS11 不可哈希列表

    我的 python 脚本旨在获取特定 so 库中插槽 令牌的详细信息 输出如下所示 Library manufacturerID Safenet Inc Available Slots 4 Slot no 0 slotDescription
  • 为什么通过selenium切换到alert不稳定?

    为什么通过selenium切换到alert不稳定 例如 1 运行代码 一切顺利 一切都很顺利 但如果这段代码在几分钟内运行 那么可能会出现错误 例如 没有可以单击的元素 等等 2 在一个站点上有一个警报窗口 alert driver swi
  • 使用Python mysql.connector远程连接MySQL

    以下代码 在同一 LAN 内与 mysql 服务器不同的机器上运行 使用 Python3 和 mysql connector 本地连接到 MySQL 数据库 import mysql connector cnx mysql connecto
  • Matplotlib 动画未显示

    当我在家里的电脑上尝试这个时 它可以工作 但在工作的电脑上却不行 这是代码 import numpy as np import matplotlib pyplot as plt import matplotlib animation as
  • Unpickle 二进制文件为文本[重复]

    这个问题在这里已经有答案了 我需要对基本上如下所示的系统进行一些维护 复杂的遗留Python程序 gt 二进制pickle文件 gt 另一个复杂的遗留Python程序 这需要准确弄清楚中间 pickle 文件中的内容 我怀疑文件格式比生成和
  • 使用 boto 和 python 从带有参数的布局创建 mTurk HIT

    我正在尝试利用 boto 在 Mechanical Turk 中生成 HIT 目标是使用我的 mTurk 帐户上已生成的通用布局 并向其传递图像 URL 以迭代创建 HIT 问题是 即使正确命名参数 如果图像 url boto 也不成功 我
  • 混淆矩阵错误“分类指标无法处理多标签指标和多类目标的混合”

    我得到了 Classification metrics can t handle a mix of multilabel indicator and multiclass targets 当我尝试使用混淆矩阵时出错 我正在做我的第一个深度学
  • Python Peeweeexecute_sql() 示例

    我使用 Peewee 模块作为我的项目的 ORM 我看了整个文档 没有明确的 有关如何处理 db execute sql 结果的示例 我跟踪代码 只能发现db execute sql 返回游标 有谁知道如何处理光标 例如迭代它并获取 返回复
  • SyntaxError:多个异常类型必须用括号括起来

    我是初学者 在使用 python 安装 pycaw 进行音频控制后遇到问题 在放置 pycaw 的基本初始化代码时 出现以下错误 Traceback most recent call last File c Users volumeCont
  • 查找一个列表在另一个列表中的值的索引

    我有两个 Python 整数列表 x and y 的所有元素x出现在某处y 而且只有一次 对于每个元素x 我想知道对应值的索引y 然后我想将这些索引设置为一个列表z 下面的代码按照我刚刚描述的方式工作 然而 对于一项任务来说 这似乎有点笨拙
  • 嵌套 for 循环以列出具有不同“if”条件的理解

    我正在尝试将此嵌套循环转换为列表理解 但我不确定是否可能 因为 tmp 列表中的项目可能有不同的值 这是最好的方法吗 谢谢 final for a in range 13 1 for b in range 0 4 for c in rang
  • Python 中的“lambda”是什么意思,最简单的使用方法是什么?

    您能否给出一个示例和其他示例来说明何时以及何时不使用 Lambda 我的书给了我一些例子 但它们很令人困惑 拉姆达 起源于拉姆达演算 http en wikipedia org wiki Lambda calculus和 AFAIK 首先实
  • 预提交钩子 git 错误

    我正在尝试在 python 中执行预提交 git hook 以检查文件的行长度是否小于 80 个字符 但是我收到没有此类文件 目录的错误 我在 fedora 上并设置了 usr bin python help 将不胜感激 usr bin e

随机推荐