【问题标题】:How to find specific digit in integer in Python? [duplicate]如何在 Python 中找到整数中的特定数字? [复制]
【发布时间】:2019-01-20 14:45:04
【问题描述】:

我需要编写一个函数来检查输入的数字中是否有特定的数字。

def number(m):

    while (m>0):
        n=m%10
        m = m/100

        if n==2:
           return True         
     return False

some_number = 223
number(some_number)

例如,我正在搜索数字 2。但使用此代码,只有当数字 2 在最后一个位置时,它才会返回 True。 谢谢。

【问题讨论】:

  • 一种(诚然不太高效)的方法就是使用 str(m) 将数字转换为字符串,然后在该字符串中搜索数字(使用标准库函数或您自己的)
  • 可能仍然比算术方法更高效。
  • 你应该试试regex。您的案例很简单,但正则表达式甚至可以帮助您检查复杂的模式。

标签: python


【解决方案1】:

你很接近。为什么100的步骤?使用 floor division 代替 10 的步骤,否则你会错过一些算法并且你的循环将比它应该的更深(例如,对于数字 123,你的循环现在将检查 12.3、1.23 , 0.123, 0.0123, 0.00123...... 直到它太小以至于它在计算上为 0 - 你不希望这样,因为你只会在 m2 中添加越来越多的零无论如何都不会出现)。

def number(m):

    while (m>0):
        n = m%10
        m = m//10

        if n==2:
            return True         
    return False

检查

>> print(number(1))
False
>> print(number(2))
True
>> print(number(13))
False
>> print(number(12))
True
>> print(number(21))
True
>> print(number(11))
False
>> print(number(121))
True

【讨论】:

  • 我真的不知道为什么我放了 100 而不是 10。上帝 xD 非常感谢。它有效!
  • 很高兴我能帮上忙 :)
  • 使用divmod同时获取结果和余数
【解决方案2】:

您应该在代码中除以 10 而不是 100。

正如 Tilman B. aka Nerdyyy 提到的,您可以将整数转换为 str,然后使用 in 运算符进行搜索:

def number(m):
    return '2' in str(m)

【讨论】:

  • 或者你可以像这样搜索(可能不是最好的解决方案):1 in list(map(lambda x: int(x), list(str(1234))))
  • @FUNNYDMAN 我唯一想说的是,这并不是那么可读。 "2" in str(m) 在我看来更容易理解。
  • lambda x: int(x) 实际上是int
  • 不错的收获!谢谢。也只是因为好奇,我检查了这两个的速度。 "2" in str(m) 工作得更快。这是意料之中的。
猜你喜欢
  • 2018-03-01
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 2020-09-09
  • 1970-01-01
  • 2019-11-16
相关资源
最近更新 更多