类型错误:function()缺少1个必需的位置参数:“ s”

时间:2020-03-12 20:35:46

标签: python python-3.x

我是python的新手,我试图编写算法以找到最长的子字符串而不重复字符。当我明显使用参数调用函数时,我不断收到此错误:“ lengthOfLongestSubstring()缺少1个必需的位置参数:'s'。为什么会突然发作?感谢您的帮助。

class Solution:
    def lengthOfLongestSubstring(self, s):
        arr = [char1 for char1 in s]
        help_arr = [i*0 for i in range(26)]
        sub_strings = []
        sub = ""
        for char in s:
            index = ord(char) - ord('a')
            if help_arr[index] == 0:
                help_arr[index] = int(1)
                sub += char
            else:
                sub_strings.append(sub)
                sub = ""
                sub += char
                help_arr = [i * 0 for i in range(26)]
                help_arr[index] = int(1)
        max(sub_strings)


    def max(arr):
        max = 0
        index = -1
        for i in range(len(arr)):
            if len(arr[i]) > max:
                max = len(arr[i])
                index=  i
        return print("The answer is '{}', with the length of {}.".format(arr[index], max))

    #call to function
    lengthOfLongestSubstring("aabcdefffgges")

1 个答案:

答案 0 :(得分:0)

错误:“ lengthOfLongestSubstring()缺少1个必需的位置参数:'s'”

看看如何定义此功能:

def lengthOfLongestSubstring(self, s):

这需要两个参数,但是调用它时,只能传递一个参数:

lengthOfLongestSubstring("aabcdefffgges")

在这种情况下,您可以通过不使用class来解决问题。您所做的事情并不需要它。这也意味着您需要从self中删除lengthOfLongestSubstring()参数:

def lengthOfLongestSubstring(s):
    arr = [char1 for char1 in s]
    help_arr = [i*0 for i in range(26)]
    sub_strings = []
    sub = ""
    for char in s:
        index = ord(char) - ord('a')
        if help_arr[index] == 0:
            help_arr[index] = int(1)
            sub += char
        else:
            sub_strings.append(sub)
            sub = ""
            sub += char
            help_arr = [i * 0 for i in range(26)]
            help_arr[index] = int(1)
    max(sub_strings)


def max(arr):
    max = 0
    index = -1
    for i in range(len(arr)):
        if len(arr[i]) > max:
            max = len(arr[i])
            index=  i
    print("The answer is '{}', with the length of {}.".format(arr[index], max))

#call to function
lengthOfLongestSubstring("aabcdefffgges")

在旁注中,您不应执行return print(...)return在这里没有任何用处,因此我删除了ID。