【问题标题】:Thinking logically: Calculate how many times a certain number appears in an integer逻辑思维:计算某个数字在整数中出现的次数
【发布时间】:2014-10-18 05:19:26
【问题描述】:

通过一本自学书,他们为您提供了一些代码,以找出特定数字在整数中的次数。他们是如何自动知道使用模 10 的?作为程序员,这是您在 CompSci 课程中学到的技巧吗?

def num_zero_and_five_digits(n):
    count = 0
    while n:
        digit = n % 10 # This divides w/10 for remainder. How did they know to use 10?
        if digit == 0 or digit == 5: #These can be changed to whatever digits you want.
            count = count + 1
            n = n / 10 
    return count

理解代码,但不拥有它。我的意思是,如果我被要求“编写代码”来找出某个数字在整数中的次数,我个人会 做这样的事情:

integer = str(22342445)
looker = list(integer)
counter = 0
find = raw_input("What number are you looking for")
for num in looker:
    if find == num:
        print "We found it!"
        counter += 1

print "There are %d, %s's in %s" % (counter, find,integer )

现在,我的主要问题是:

  1. 如果有人想查找整数“10”或更高的值怎么办?如何 我可以在第一个解决方案中解释这一点吗?

  2. 您个人会采取哪些步骤来提出第一个解决方案?你怎么会“知道”你需要做模10?

【问题讨论】:

  • 这太宽泛了,可能也应该转移到数学 SO 并且也在寻找外部资源。你真的应该把它分解成多个单独的问题。
  • 我会把它剪掉一点,让它不那么宽泛。

标签: python python-2.7 math logic modulo


【解决方案1】:

练习本身定义不正确。与其寻找特定的数字,不如询问寻找特定的数字。这将其限制为,因为我们使用十进制(以 10 为底)数字(我的意思是我们使用以 10 为底的数字表示),这是 10 种可能性之一。由于我们使用以 10 为基数的数字,因此我们需要除以 10 并取其模数,以将数字分成不同的数字,以便我们可以比较数字。如果我们讨论的是十六进制数字,那么我们将使用 16 来分隔数字,对于八进制我们将使用 8,等等。

【讨论】:

  • 所以这基本上意味着因为我们使用以 10 为底,我们无法“找到”任何超过 1-9 的数字。所以没有办法计算有多少个 10、21、22 等?
  • 你可以找到从 0 到 9 的数对,但你不会用同样的方法。
  • 我该怎么做?有提示就好。我尝试切换到 % 100,它可以返回两位数,但没有运气。我错过了什么?
  • 使用覆盖两个位置的模数将检查每个 other 对。在这种情况下,您应该切换到字符串搜索以保持解决方案的简单性。
  • 我很感激,所以事实上我的答案最接近正确的解决方案。谢谢!
猜你喜欢
  • 2013-12-25
  • 2023-04-02
  • 2019-07-09
  • 2018-06-30
  • 2017-10-09
  • 2010-11-12
  • 1970-01-01
相关资源
最近更新 更多