计算一个数字中一行中最多的零数| Python

2024-04-20 11:15:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个函数,该函数要求输入一个数字,然后在一行中看到最多的零并返回其值(例如:5400687000360045->;3 | 035004000046056000->;4)。 到目前为止,我只知道这些,但它不起作用:

def zeros():
    num = input('Write a number: ')
    row = 0
    result = 0
    for i in num:
        if i == '0':
            while i == '0':
                row += 1
                if row > result:
                    result = row
    return result

怎么了

编辑: 这就是所需的输出:

zeros()
Write a number: 03500400004605605600
4

我当前的输出是零,这意味着它不会返回任何东西


Tags: 函数ingtnumberforinputifdef
3条回答

这对你有帮助吗。。?regex(正则表达式操作)是一个非常方便的工具,可以让您的生活更轻松。请看一下Regular expression operations

import re
def zeros():
    num = input('Write a number: ') 
    return max(re.findall("(0+0)*", (num)))

输出:000


def zeros():
    num = input('Write a number: ') 
    return len(max(re.findall("(0+0)*", (num))))

输出:3

要按自己的方式进行,只需跟踪数字是否为0(即,要知道它是一行零还是需要重新开始计数)。类似这样的方法会奏效:

def zeros():    
    num = input('Write a number: ')
    row = 0
    result = 0
    for i in num:
        if i != '0':
            row = 0
        else:
            row += 1
            if row > result:
                result = row
    return result

输出正如您所期望的

如果您了解regex,则可以使用以下代码实现这一点:

import re

def zeros():    
    num = input('Write a number: ')
    result = max(map(len, re.findall(r'0+', num)))
    return result

这应该可以做到

def zeros():
    num = input('Write a number: ')
    row = 0
    count = 0
    for i in num:
        if i == '0':
            count += 1
        else:
            row = max(row, count)
            count = 0
    row = max(row, count)
    return row

您的代码在内部被卡在一个无限循环中

相关问题 更多 >