获取非负整数的位数(Python)

use*_*511 -1 python numbers digits sizing

问题是:

<<背景故事:假设我们正在设计一个新的汉堡关节的销售点和订单跟踪系统.这是一个小型联合,它只出售4种组合选择:经典单人组合(汉堡配一个馅饼),经典双人奶酪组合(2个馅饼),经典三人配奶酪组合(3个馅饼),前卫四人组合Guacamole Combo(4个小馅饼).我们将这些组合分别编码为1,2,3和4.每餐的体型都很大,可以买到更大的薯条和饮料.对于组合1,2,3和4,大尺寸组合分别由5,6,7和8表示.>>

编写一个名为order_size的迭代函数,它接受一个顺序并返回顺序中的组合数.例如,order_size(237) - > 3.

我应该有

order_size(0) = 0

order_size(6) = 1

order_size(51) = 2

order_size(682) = 3
Run Code Online (Sandbox Code Playgroud)

我的代码是:

def order_size(order):

    # Fill in your code here
    if order > 0:
        size = 0
        while order > 0:
            size +=  1
            order = order // 10
            return size
        else:
            return 0
Run Code Online (Sandbox Code Playgroud)

但我没有得到// 10部分的订单.我猜这是错的,但我想不出任何东西可以替代它.

alf*_*sin 7

不需要迭代函数,您可以通过将其"转换"为字符串来测量数字的长度:

num = 127
order = len(str(num))
print(order) # prints 3
Run Code Online (Sandbox Code Playgroud)

但如果你真的想迭代地做到这一点:

def order(num):
    res = 0
    while num > 0:
        num = int(num / 10)
        res += 1
    return res

print(order(127))  # prints 3
Run Code Online (Sandbox Code Playgroud)