对从字符串的偶数位置返回最大整数的函数进行编码时出现问题

2024-07-04 05:56:10 发布

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

生成一个函数,该函数接收一个只包含数字的字符串,也可以是一个空字符串,它返回一个整数值,该整数值是原始字符串偶数位置上所有数字的最大值。你知道吗

如果为空字符串,则函数应返回-1。你知道吗

例如:

max\u even\u pos(“123454321”)返回5,因为5是1,3,5,3,1的最大值,这是原始字符串中偶数位置的数字。你知道吗


# My code
def max_even_pos(st):
    if not st:
        return -1          ### This line satisfies the empty list condition
    for i in range(len(st)):  ### Problem I have. Trying to find 
                                    ## the max integer from even positions
        num_list = [i]         # assigns elements to the list    
        if i%2 == 0:             # checks if elements are even
            return max(num_list)      # result

我唯一的问题是让代码在原始字符串的偶数位置找到最大整数。我认为“num\u list=[I]”会导致错误,但我不确定如何更改它以使其正确执行。你知道吗

到目前为止,它为所有情况输出0


Tags: theto函数字符串posreturnif数字
2条回答

@Prune是正确的。也许把下面的几行和你原来的比较会对你下一次有所帮助。。。。你知道吗

test_string = "123454321"
def max_even_pos(st):
    num_list = []
    if not st:
        return -1
    for i in range(len(st)):
        if i%2 == 0:
            num_list.append(st[i])
    return max(num_list)

print(max_even_pos(test_string))

当前代码确保num_list只有一个元素。当到达第一个偶数索引0时,停止并返回该索引,而不考虑输入值。您有几个错误需要更正:

  • 将返回值放在循环之后。在返回所需的值之前,必须完成所有输入。你知道吗
  • append累加值。您当前的代码只保留最后一个。你知道吗
  • 累加输入值;i是位置,而不是值。我相信你想要st[i]

同时也要寻找更好的方法来遍历列表。查看for循环或step为2的列表切片。如果您已经准备好学习另一个级别,请查阅列表理解;您可以将此函数缩减为一行return。你知道吗

相关问题 更多 >

    热门问题