Kai丶0727
2021-06-07 18:37
采纳率: 100%
浏览 130

关于Python输出一段字符串最大数字串的问题

题目如下:输入一段字符串,返回此段字符串中最大的数字串,并输出最大字符的个数。

 

我的代码如下:

ls_s1=[]
n=0
list1=[]
list2=[]
s2=input("Please enter a string:")
for i in range(0,len(s2)):
    if s2[i].isdigit()==True:
        n+=1
        ls_s1.append(s2[i])
    
    else:
        list1.append(n)
        result=''.join(ls_s1)
        list2.append(result)
        n=0
        ls_s1=[]

n=max(list1)
s_max=max(list2,key=len,default='')

print(n)
print(s_max)

但是我这个代码有BUG,即最后一个字符不为字母时无法正确输出。

我在网上找到了如下答案:

# coding=utf-8
import sys

def solve():
    for line in sys.stdin:
        # 字符串转列表进行遍历
        str = list(line)
        count = 0
        length = 0
        temp = []
        dig = []
        for i in range(str.__len__()):
            if (str[i] >= '0' and str[i] <= '9'):
                # 数字加一
                count += 1
                temp.append(str[i])
               
            else:
                if count >= length:
                    # 数字串大于之前的,由于题目要求长度相等输出最后一串,所以这里要用大于等于
                    length = count
                    count = 0
                    dig = temp.copy()
                    temp = []
                else:
                    # 数字串较短则清空
                    temp = []
                    count = 0
        # 结果输出
        result = ''.join(dig)
        print("%s,%d" % (result, length))

if __name__ == "__main__":
    solve()
我感觉这个代码和我遇到的问题一样,但是它却能进行正确输出。

例如,输入字符串123abc12345

在我的代码中,当进行到字符串中最后一个字符中,即5时,无法进入下一个else,即无法刷新列表

但在第二个代码中,却能进行正确输出,我在第二个if语句加入print(dig)时,发现其中存储了12345,最后一个位数字,不能if和else都满足吧?这让我有些矛盾。

求教各位,1.我的代码在现有的形式下如何修改;2.第二个代码中最后字符5怎么进入else循环的。

 

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题