Создание проверки анаграммы - PullRequest
0 голосов
/ 13 ноября 2018

Итак, я смог создать следующую программу, которая сравнивает две строки, чтобы увидеть, являются ли они анаграммами друг друга.

def anagrams( string1, string2 ):
    if sorted(string1.lower()) == sorted(string2.lower()):
        return True
    else:
        return False

Однако моя проблема в том, что я не хочу возвращать значение True, если обе входные строки будут одинаковыми.Например:

anagrams('silent','silent')

Это выводит True, но я не хочу, чтобы это делалось, какие изменения я должен внести, чтобы реализовать это?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018
def anagrams( string1, string2 ):
  if sorted(string1.lower()) == sorted(string2.lower()) and string1.lower() != string2.lower():
    return True
  else:
    return False

print(anagrams('silent','silent'))
0 голосов
/ 13 ноября 2018

Просто проверьте, отличаются ли строки:

def anagrams(string1, string2):
    if sorted(string1.lower()) == sorted(string2.lower()) and string1.lower() != string2.lower():
        return True
    else:
        return False

result = anagrams('silent', 'silent')
print(result)

выход

False

Вы можете использовать Счетчик вместо сортировки:

from collections import Counter


def anagrams(string1, string2):
    if string1.lower() != string2.lower() and Counter(string1.lower()) == Counter(string2.lower()):
        return True
    else:
        return False

print(anagrams('silent', 'silent'))
print(anagrams('silent', 'sitlen'))

выход

False
True

UPDATE

Как предлагает @RoadRunner, вы можете сделать:

from collections import Counter


def anagrams(string1, string2):
    ls1, ls2 = string1.lower(), string2.lower()
    return ls1 != ls2 and Counter(ls1) == Counter(ls2)

print(anagrams('silent', 'silent'))
print(anagrams('silent', 'sitlen'))
...