【问题标题】:Function digits(n) that returns how many digits the number has , returns a random value in python返回数字有多少位的函数digits(n),在python中返回一个随机值
【发布时间】:2021-10-27 05:45:54
【问题描述】:

while 循环中的函数数字 - while (n > 0) 返回 325 326 327 和 1 作为计数值,如果我使用 while (n > 1) 它返回正确的数字计数。这种行为有什么合乎逻辑的原因吗?

def digits(n):
    count = 0
    if n == 0:
      return 1
    while (n > 0):
        count += 1
        n = n / 10
    return count
    
print(digits(25))   # Should print 2
print(digits(144))  # Should print 3
print(digits(1000)) # Should print 4
print(digits(0))    # Should print 1

【问题讨论】:

  • 你的意思是n = n // 10/正常划分和//楼层划分是有区别的

标签: python if-statement while-loop count return


【解决方案1】:

/// 之间存在差异。

/ 在 python 中给出一个精确的答案,精确到小数点后 15 位。但是//是地板除法,只返回除的商。

尝试替换:

n = n / 10

用这个:

n = n // 10

【讨论】:

  • 有道理!
  • @Annie 考虑接受并支持答案
【解决方案2】:

如果你将某个东西除以 10,它总是大于 0,一个更快的方法是:

def digits(n):
    return len(str(n))

【讨论】:

    【解决方案3】:

    正确代码

    def digits(n):
        count = 0
        if n == 0:
          return 1
            while (n > 0):
                count += 1
                n = n//10
            return count
            
        print(digits(25))   # Should print 2
        print(digits(144))  # Should print 3
        print(digits(1000)) # Should print 4
        print(digits(0))    # Should print 1
    

    正在使用的逻辑 我们使用的是楼层分割而不是普通分割,因为普通分割会使循环花费很多时间,但在这里什么也不返回, 我们将使用地板除法,直到 n 小于 10,然后计数将增加 1

    例如:我们将 25 作为输入

    • 25 // 10 = 2 count 得到 1

    • 2 // 10 = 输入小于零 count 增加 1 直到满足条件,所以现在计数为 2

    希望这会有所帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 2019-05-10
      • 2017-10-02
      • 1970-01-01
      • 2020-02-21
      • 2010-09-15
      相关资源
      最近更新 更多