使用 Python 中的函数:长度错误

Using functions in Python: Wrong length

我正在尝试使用函数来解决问题。该函数应该计算字符串中的位数。这是我写的:

def count_digits(input):
    digits = 0
    for digits in range (len(input)):
        if input.isdigit():
            digits = digits + 1
    return digits
print count_digits("xx87xhyx6x5x00")

所以在这种情况下,当我打印时,我应该看到 shell 中弹出数字 6,但是,我看到的是字符串的长度 - 1,而不是位数. 请指教!

首先,您需要清理变量名。

for 循环的每次迭代,您都将 digits 变量覆盖为范围内的当前数字。

改变

for digits 变为 for digit

更改完成后,您需要更正此错误:

if input.isdigit():

这应该变成

if digit.isdigit():

您已使用相同的变量命名计数器和循环中的每个数字。

您还使用 input.isdigit()

一次检查整行

在 Python 中,您无需知道项目的长度即可跨过它。

你的代码因此被简化为:

def count_digits(input):
    total_digits = 0
    for item in input:
       if item.isdigit():
          total_digits += 1
    return total_digits

>>> print count_digits("xx87xhyx6x5x00")
6

你可以这样使用

>>> def count_digits(input):
...     return len([x for x in input if x.isdigit()]
...
>>> print count_digits("xx87xhyx6x5x00")
6
>>>

正如其他人所说,您的命名很乱 -- 而且您的方法太低级了。怎么样:

def count_digits(input):
    return sum(x.isdigit() for x in input)