2017-01-04 3 views
0

У меня есть следующее упражнение: Два слова - это анаграммы, если вы можете переставить буквы из одного для написания другого. Напишите функцию is_anagram, которая принимает две строки и возвращает True, если они являются анаграммами.while цикл для проверки анаграмм в python

У меня есть функция, но она не работает должным образом, и я не могу понять, почему. Может ли кто-нибудь сказать мне, что я делаю неправильно? Большое спасибо.

def isa(s,t): 
    if len(s)!=len(t): 
     print "impossible" 
    if len(s)==len(t): 
     i=0 
     while i<len(s)-1: 
      for i in s: 
       if i in t: 
        print "yay" 
       print "NO" 
+0

Вам кажется, не увеличивающиеся 'i', который используется в состоянии вашего' While-loop'. Кроме того, я путаюсь о комбинации циклов 'while' и' for' здесь. Просто «for-loop» хватило бы. – Abdou

+1

Попробуйте 'def isa (t, s): return sorted (t) == sorted (s)'. Это ставит строки в одном порядке и затем сравнивает их. – Abdou

+0

Огромное вам спасибо, Абду. Я исключил цикл while и применил несколько изменений. Теперь это работает. Еще раз спасибо. – Maya

ответ

0
import collections 

def is_anagram(s,t): 
    return collections.Counter(s) == collections.Counter(t) 
+0

Спасибо за ваш быстрый ответ, но это не то, что я ищу. Я хотел бы отладить структуру, которую я разработал с помощью цикла while, и понять мою ошибку. – Maya

+0

@Ajla. Лучший способ для вас сделать это - просто просто взломать его. – Totem

Смежные вопросы