使用 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)
我正在尝试使用函数来解决问题。该函数应该计算字符串中的位数。这是我写的:
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)