【问题标题】:printing different form of numbers into integers in a list将不同形式的数字打印成列表中的整数
【发布时间】:2022-01-23 18:16:06
【问题描述】:

完成给定的名为solve的方法,该方法以列表A为参数。

此列表包含以下类型的值:

整数(介于 1 和 99 之间,包括两者)

字符串形式的数字(介于 1 和 99 之间,包括两者),例如,'37'、'91'

数字的单词形式(介于 1 和 99 之间,包括两者)例如,“二十”、“十七”、“四十二”。

注意单词总是小写的!

您必须生成一个包含所有整数形式的值的列表并返回它。列表必须按升序排列。

例子

输入:

[1, 3, '4', '1', 'three', 'eleven', 'forty-seven', '3']

输出:

[1, 3, 4, 11, 47]

代码:

def solve(A):
    for i in A:
        if A[i]==int:
            return A[i]
        elif A[i]==str:
            return int(A[i])

而且它不工作。 !谁能帮忙写代码!

【问题讨论】:

  • 为什么它应该起作用?您希望从int('forty-seven') 获得什么输出?检查变量是否属于某种类型的常用方法是调用函数isinstance(),也可以使用type()从变量实例中获取类型。
  • == 用于检查两个事物之间的相等性。 A[i] 永远不会等于 intstr。不要使用A[i]==int,而是使用isinstance(A[i], int)type(A[i]) == int

标签: python python-3.x data-structures set


【解决方案1】:

由于这似乎是一个家庭作业问题,我会尽量避免给你一个完整的答案,并尽量让你朝着正确的方向前进。

如果我们看一下给定的问题,我们可以看到我们有 3 个输入案例:

  1. 一个整数
  2. 一串数字
  3. 代表数字的字母字符串

您已尝试解决第 1/2 部分,但尚未解决第 3 种情况。这个特别棘手。

解决此问题的一种方法是生成表示 1-99 中所有数字的字符串(“一”、“二”...“九十九”),并将它们作为键放入字典中,这些值是它们所代表的整数值。

由于英语很奇怪,数字 1-19 的名称必须每个手动输入,但是从 20-99 有重复的模式,看看你是否能弄清楚这些模式是什么以及你是否可以为这些模式创建字符串他们的数字。

一旦你有了这个字符串和整数字典,你就可以简单地检查字典中是否存在输入,然后从字典中获取值。

【讨论】:

    【解决方案2】:

    您的代码不区分数字的两种类型的字符串表示(问题描述中列出的第二种和第三种类型)。尝试通过 Python 的 int 内置函数转换 twelveforty-two 等元素是行不通的。有关处理此类元素的建议,请参阅here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 2019-04-16
      • 2017-03-12
      相关资源
      最近更新 更多