使用Python使用字典将罗马数字转换为整数

2024-01-03

我正在学习编码,并且我有一个练习来制作罗马数字到整数的转换器。我意识到编写这个程序有很多不同的方法,但如果您能帮助我找到我的错误,我将不胜感激。我很想听到关于如何写得更好的建议,但我现在真正可以使用的是理解我在这方面做错了什么。

我有一本字典叫roman_numerals. Its keys是罗马数字值,其values是它们的匹配整数。

roman_numerals = {"M":1000,"CM":900,"D":500,"CD":400,"C":100,"XC":90,"L":50,"XL":40,"X":10,"V":5,"IV":4,"I":1}

def roman_int(user_choice):
    if user_choice == "1":
        user_roman = input("What numeral would you like to convert?\n").upper()
        resultI = 0
        for k,v in roman_numerals.items():          
            if user_roman == k:
                resultI += roman_numerals.get(user_roman)
            else:
                for i in user_roman:
                    if i in roman_numerals.keys():
                        if i == k:
                            resultI += v
    print(resultI)

当我运行我的代码时,如果我使用等于 a 的数字key如果有多个字符(例如“IV”),我得到的结果是“IV”和“V”的相加。或“CM”和“M”。 我知道为什么会发生这种情况,因为我要求迭代。但是,我可以要求我的程序在返回值时停止迭代吗?我觉得我真的很接近解决方案,但此时我只是感到困惑。

谢谢你!


您必须确保消耗掉所有对总和有贡献的字符。由于所有多字符“原子”文字都以较低值的单位开始,否则,较高值的单位先出现,因此一种简单的贪婪方法是可行的:

  • 尝试将前两个字符作为一个整体进行转换,如果不可能,则转换第一个单个字符。
  • 向前移动适当的步数。

    def roman_int(user_roman):
        user_roman = user_roman.upper()
        resultI = 0
    
        while user_roman:
            # try first two chars
            if user_roman[:2] in roman_numerals:
                resultI += roman_numerals[user_roman[:2]]
                # cut off first two chars
                user_roman = user_roman[2:]
            # try first char
            elif user_roman[:1] in roman_numerals:
                resultI += roman_numerals[user_roman[:1]]
                # cut off first char
                user_roman = user_roman[1:]
            else:
                print('No roman number')
                return
        print(resultI)
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Python使用字典将罗马数字转换为整数 的相关文章

  • Python 2.7 中的断言对我来说不起作用示例assertIn

    我的 Mac 上安装了 python 2 7 通过在终端中运行 python v 进行验证 当我尝试使用任何新的 2 7 断言方法时 我收到 AtributeError 我看过http docs python org 2 library u
  • Python 中的流式传输管道

    我正在尝试使用 Python 将 vmstat 的输出转换为 CSV 文件 因此我使用类似的方法转换为 CSV 并将日期和时间添加为列 vmstat 5 python myscript py gt gt vmstat log 我遇到的问题是
  • 工作日重新订购 Pandas 系列

    使用 Pandas 我提取了一个 CSV 文件 然后创建了一系列数据来找出一周中哪几天崩溃最多 crashes by day bc DAY OF WEEK value counts 然后我将其绘制出来 但当然它按照与该系列相同的排名顺序绘制
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • Python3.0 - 标记化和取消标记化

    我正在使用类似于以下简化脚本的内容来解析较大文件中的 python 片段 import io import tokenize src foo bar src bytes src encode src io BytesIO src src l
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • Swift 中的字典是否应该转换为类或结构?

    我正在开发一个本机 iOS 应用程序 该应用程序从我们也可以控制的 Web 服务接收 JSON 格式的数据 该计划是在大约 18 个月内更换后端数据库 以支持不同的平台 考虑到这一点 我们希望确保 iOS 应用程序能够相对容易地适应新的数据
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入
  • .pyx 文件出现未知文件类型错误

    我正在尝试构建一个包含 pyx 文件的 Python 包 pyregion 但在构建过程中出现错误 检查以下输出 python setup py build running build running build py creating b
  • 小组芹菜链任务

    shared task def process record x return 1 2 4 4 5 6 shared task def add pro id return pro id 10 shared task def dmap it
  • Tensorflow 与 Keras 的兼容性

    我正在使用 Python 3 6 和 Tensorflow 2 0 并且有一些 Keras 代码 import keras from keras models import Sequential from keras layers impo
  • SMTP_SSL SSLError: [SSL: UNKNOWN_PROTOCOL] 未知协议 (_ssl.c:590)

    此问题与 smtplib 的 SMTP SSL 连接有关 当与 SMTP 无 ssl 连接时 它正在工作 在 SMTP SSL 中尝试相同的主机和端口时 出现错误 该错误仅基于主机 gmail 设置也工作正常 请检查下面的示例 如果 Out
  • Python:IndexError:修改代码后列表索引超出范围

    我的代码应该提供以下格式的输出 我尝试修改代码 但我破坏了它 import pandas as pd from bs4 import BeautifulSoup as bs from selenium import webdriver im
  • 返回表示每组内最大值的索引的一系列数字位置

    考虑一下这个系列 np random seed 3 1415 s pd Series np random rand 100 pd MultiIndex from product list ABDCE list abcde One Two T
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • Django 与谷歌图表

    我试图让谷歌图表显示在我的页面上 但我不知道如何将值从 django 视图传递到 javascript 以便我可以绘制图表 姜戈代码 array Year Sales Expenses 2004 1000 400 2005 1170 460
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS
  • 如何为不同操作系统/Python 版本编译 Python C/C++ 扩展?

    我注意到一些成熟的Python库已经为大多数架构 Win32 Win amd64 MacOS 和Python版本提供了预编译版本 针对不同环境交叉编译扩展的标准方法是什么 葡萄酒 虚拟机 众包 我们使用虚拟机和Hudson http hud
  • Apache Beam Pipeline 写表后查询表

    我有一个 Apache Beam Dataflow 管道 它将结果写入 BigQuery 表 然后我想查询该表以获取管道的单独部分 但是 我似乎无法弄清楚如何正确设置此管道依赖性 我编写的新表 然后想要查询 与一个单独的表连接以进行某些过滤

随机推荐

  • 删除 TensorFlow 图中除少数节点之外的所有节点

    我的 TensorFlow 用例要求我为每个需要处理的实例构建一个新的计算图 这最终会增加内存需求 除了少数几个tf Variables这些是模型参数 我想删除所有其他节点 其他有类似问题的人也发现了tf reset default gra
  • 如何在 Windows 中使用正则表达式匹配行尾

    我在 Windows 中创建了一个 txt 文件 现在应该在 Linux 中进行编辑 我想用 grep 匹配行尾 假设我要在文件中找到的行的内容是 foo bar bar 然后我发出命令grep r bar 但没有产生任何输出 在 Wind
  • 多线程 COMObject 和 UI 线程 (C#)

    这是我在这里发表的第一篇文章 因为实际上我通常用很棒的方法解决我所有的问题 您可以在这里找到邮政数据库 但我现在实际上陷入困境 我正在开发一个遵循 MVVM 的项目 其中包括一个 COM 对象 正如我在研究过程中所读到的那样 我了解到 CO
  • 具有多个代理的 Ember CLI

    问题 我有一个 Ember CLI 应用程序 它将使用多个 API 我需要在开发模式下代理这些 API 背景 我有一个遗留的 api 它在以下位置公开服务 api在我的本地开发机器上运行localhost 3000 我有一个新的 api 它
  • 申请家庭内如何分配?

    我有包含多个因素的 data frame 我想重命名所有这些因素的因素级别 例如 mydf lt data frame col1 as factor c A A NA NA col2 as factor c A NA NA A mydf l
  • 不同 Modelica 仿真环境之间有什么区别?

    有不同的 Modelica 仿真环境 包括 Dymola Wolfram SystemModeler OpenModelica 和 Jmodelica 所以 我尝试加载热流体库 ThermoSysProhttps github com Dw
  • 为什么命名元组使用的内存比字典少?

    我问这个是因为我觉得这很令人惊讶 我想namedtuple会有更多的开销 背景是我在内存中缓存了一个大型 Django 查询 发现 Django 对象的大小是 values 然后我想知道什么开销namedtuple对象的版本将是 允许我仍然
  • 从一个 SQS 触发器触发多个 lambda 函数

    我不确定我是否正确理解 AWS Lambda SQS 触发器 我是否可以将其配置为一个 SQS 队列可以根据消息正文或消息属性触发不同的 lambda 函数 我的用例 我有三个不同的 lambda 函数 processCricket pro
  • java.lang.RuntimeException:运行命令获取文件权限时出错:ExitCodeException exitCode=-1073741515

    问题的标题是我在 Windows 10 上安装 Hadoop 2 9 1 时遇到的异常 经过几周的研究 我无法找到我的标题查询的答案 根据我收到的异常 hadoop 进程正在数据目录中查找权限 但我已经在管理员模式下运行 dfs cmd 和
  • 涉及前一行数据的 Python 向量化运算

    我很好地掌握了如何利用 pandas 和 numpy 对整个数据列进行矢量化操作 然而 我遇到了一种我似乎无法矢量化的情况 当计算涉及利用前一行的值来计算当前行时 我必须退回到 for 循环 是否可以对这种事情进行矢量化 这是我的意思的一个
  • MySQL 更改表修改列在具有空值的行处失败

    我有一个大约有 10K 行的表 我正在尝试更改该表 以便该字段fielddelimiter永远不会为空 我正在尝试执行 alter 语句 期望将任何 null 值更改为默认值 但我从 sql 语句中收到错误 alter table merc
  • AJAX 无法在本地主机上运行

    我正在尝试让 AJAX 示例正常工作 但无法使其正常工作 你能在 XAMPP 上正常运行吗 我有三个文件 message txt index html ajaxtest js 当您单击超链接时 它应该会弹出一个包含 message txt
  • 通过 REST API 列出 Azure 虚拟机

    我当前正在尝试以编程方式获取在 Windows Azure 订阅下运行的所有虚拟机的列表 为此 我尝试使用 Azure REST API https management core windows net https management
  • 如何向 PHP 表单添加删除按钮以从 MySQL 表中删除行

    我已将 MySQL 表的结果输出到 HTML 表 在最后一列中 我想添加一个删除选项 该选项调用另一个表单并从 MySQL 表中删除用户 但我似乎无法让它发挥作用 这是我的结果页面代码 table thead thead table
  • 如何使用 Twilio 暖转电话会议?

    我已阅读有关呼叫转接的 Twilio 文档twilio文档 https www twilio com docs voice api conference resource 堆栈溢出 https stackoverflow com quest
  • Bootstrap 弹出框的 Angular 指令

    我为引导弹出窗口编写了自定义指令 但遇到了一些麻烦 这是代码 angular module CommandCenterApp directive bzPopover function compile http commandHelper r
  • Android:ImageView 放大源图像

    我似乎无法让 ImageView 以原始大小显示其源图像 ImageView 看起来像这样
  • Twitter Bootstrap Carousel - 访问当前索引

    如何从轮播中获取当前索引 在本例中 我使用的是无序列表 我知道我可以搜索列表项以找到具有 活动 CSS 类的项 但我想知道是否可以直接询问轮播对象 另外 能够访问目标索引 在 幻灯片 事件上 也会很方便 同样 我可以通过搜索来做到这一点 v
  • EJB weblogic.ejb20.cache.CacheFullException

    我正在使用 EJB1 2 开发一个应用程序 以前运行良好 但从过去几天开始 我遇到了以下异常 Exception in ejbLoad weblogic ejb20 cache CacheFullException size 85783 t
  • 使用Python使用字典将罗马数字转换为整数

    我正在学习编码 并且我有一个练习来制作罗马数字到整数的转换器 我意识到编写这个程序有很多不同的方法 但如果您能帮助我找到我的错误 我将不胜感激 我很想听到关于如何写得更好的建议 但我现在真正可以使用的是理解我在这方面做错了什么 我有一本字典