python whileloop的一个bug,我解决不了

Thisfunctionshouldcounthowmanydigitsthereareintheinputstringst,startingtocountfrompos... This function should count how many digits there are in the input string st, starting to count from position pos (counting the character in pos if it is a digit) and advancing one position at a time until encountering a letter or until reaching the end of the string. The string may contain letters, digits and also special characters. If pos is not a valid position in the string, the function should return 0.

For example:
countDigitsFromPosUntilLetter('12abc!#456', 0) should return 2

countDigitsFromPosUntilLetter('12abc!#456', 1) should return 1

countDigitsFromPosUntilLetter('12abc!#456', 2) should return 0

以下是我的程序:
num=0
i=0
while (i>=pos) and (i<=len(st))and(st[i].isdigit()==True):
num=num+1
i=i+ 1
return num
展开
 我来答
tim_spac
2013-11-04 · TA获得超过3628个赞
知道大有可为答主
回答量:1804
采纳率:100%
帮助的人:2012万
展开全部
#!/usr/bin/python
# encoding: utf-8

def countDigitsFromPosUntilLetter(st, pos):
    """This function should count how many digits there are in the input string st,
    starting to count from position pos (counting the character in pos if it is a digit)
    and advancing one position at a time until encountering a letter or until reaching
    the end of the string. The string may contain letters, digits and also special
    characters. If  pos  is not a valid position in the string, the function should return 0.
    """
    if pos >= len(st):
        return 0
    for i, ch in enumerate(list(st)[pos:]):
        if not ch.isdigit():
            break
    return i


print countDigitsFromPosUntilLetter('12abc!#456',  0)  # should return  2
print countDigitsFromPosUntilLetter('12abc!#456',  1)  # should return  1
print countDigitsFromPosUntilLetter('12abc!#456',  2)  # should return  0


 or usage while-loop:

#!/usr/bin/python
# encoding: utf-8

def countDigitsFromPosUntilLetter(st, pos):
    """This function should count how many digits there are in the input string st,
    starting to count from position pos (counting the character in pos if it is a digit)
    and advancing one position at a time until encountering a letter or until reaching
    the end of the string. The string may contain letters, digits and also special
    characters. If  pos  is not a valid position in the string, the function should return 0.
    """
    if pos >= len(st):
        return 0
    cnt = 0
    while pos < len(st) and st[pos].isdigit():
        pos += 1
        cnt += 1
    return cnt


print countDigitsFromPosUntilLetter('12abc!#456',  0)  # should return  2
print countDigitsFromPosUntilLetter('12abc!#456',  1)  # should return  1
print countDigitsFromPosUntilLetter('12abc!#456',  2)  # should return  0
wanghan519
2013-11-01 · TA获得超过7820个赞
知道小有建树答主
回答量:1285
采纳率:60%
帮助的人:535万
展开全部
i的初始值要等于pos
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式