Как решить недостающий 1 обязательный позиционный аргумент в этом коде python? - PullRequest
3 голосов
/ 29 мая 2020

Я тестирую эти два строковых символа, являются ли они перестановкой строк или нет, для следующего python кода, но я получаю сообщение об ошибке, которое я добавил после кода.

from collections import Counter

    str_1 = "driving"
    str_2 = "drivign"

    def check_permutation(str_1,str_2):
        if len(str_1) != len(str_2):
            return False
        counter = Counter()
        for c in str_1:
            counter[c] += 1
        for c in str_2:
            if counter[c] == 0:
                return False
            counter[c] -= 1
        return True
    print(check_permutation((str_1, str_2)))

Ошибка:

Traceback (most recent call last):
TypeError: check_permutation() missing 1 required positional argument: 'str_2'

Как я могу решить эту ошибку и распечатать результат в консоли?

1 Ответ

1 голос
/ 29 мая 2020
  • Думаю, у вас в коде были лишние круглые скобки с небольшой проблемой отступа во входных данных str_1 и str_2:

  • Кроме того, это лучше всего объявлять переменные рядом с тем местом, где вы их вызываете или используете.

  • Вы также можете немного улучшить именование своих переменных.

Код

from collections import Counter


def check_permutation(str_1, str_2):
    if len(str_1) != len(str_2):
        return False
    count_map = Counter()
    for char in str_1:
        count_map[char] += 1
    for char in str_2:
        if count_map[char] == 0:
            return False
        count_map[char] -= 1
    return True


str_1 = "driving"
str_2 = "drivign"

print(check_permutation(str_1, str_2))

Вывод

True

Думаю, вы, вероятно, пытаетесь сделать следующий код:

from collections import Counter


def check_permutation(str_1, str_2):
    if len(str_1) != len(str_2):
        return False
    count_map_1 = Counter(str_1)
    count_map_2 = Counter(str_2)
    return count_map_2 == count_map_1


str_1 = "driving"
str_2 = "drivign"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...