【问题标题】:Why does my count is coming 1 instead calculating all the digits in the number in Python?为什么我的计数是 1 而不是计算 Python 中数字中的所有数字?
【发布时间】:2022-11-26 21:07:26
【问题描述】:

我正在尝试计算随机数中的位数,例如数字 5675,我期望计数值 4 作为输出,但它返回的不是那个,而是 1。我试图在 while 循环中编写逻辑直到条件满足。 下面是我的代码。

class Solution(object):

    def calculate(self, num):
        count_no = 0
        while num > 0:
            num = num / 10
            count_no += 1
            return count_no


if __name__ == "__main__":
    p = Solution()
    no = 5675
    print(p.calculate(no))

【问题讨论】:

    标签: python while-loop division


    【解决方案1】:

    您的逻辑是正确的,但您将 return count_no 放在 while 循环中。 所以它会在第一次迭代中返回,并且不会继续到循环结束。 做这个:

    def calculate(self, num):
        count_no = 0
        while num > 0:
            num = num / 10
            count_no += 1
    
        return count_no
    

    查看this link 了解 python 中的块。

    【讨论】:

      【解决方案2】:

      您的代码中有多个错误。

      1. Mehrdad Pedramfar 所说的。您在第一次循环迭代中返回,而您应该只在退出循环后返回。
      2. 查看每次迭代中 num 的值。如果将 print(num) 添加到循环中,您会看到类似
        5675
        567.5
        56.75
        5.675
        .5675
        

        不是你所期望的,对吧?那是因为您使用的是真正的除法运算符 (/) 而不是整数除法运算符 (//)

        1. 这堂课有什么意义?如果您不需要课程,请不要使用课程。此外,调用方法 calculate 也很糟糕。将其命名为number_of_digits

        因为这是一项学校作业,所以我把它们放在一起留给你。

      【讨论】:

        【解决方案3】:

        您的解决方案的问题是 while 循环内的返回,这样 counto_no 的值在第一次迭代时返回,该值始终为 1。 另一个解决方案可能是这样的:

        def countDigit(self,num:int) -> int:
            return len(str(num))
        

        【讨论】:

          猜你喜欢
          • 2013-02-09
          • 2014-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多