2015-07-09 5 views
2

Принимает две строки и возвращает True, если строки содержат одинаковые символы независимо от количества вхождений или порядка их возникновения. Необходимо рассмотреть все символы и чувствительны к регистру (например, sameChars("AA","a") возвращает False, в то время как sameChars("FgFFF","ggFF") возвращает TrueФункция sameChars не работает должным образом

Мой код:.

def sameChars(s1, s2): 
    if s1 <= s1: 
     return True 
    else: 
     return False 

Функция возвращает true, если я ставлю:

print sameChars('AA', 'a') 

Но он должен возвращать false.

ответ

5

Вы проверяете - s1 <= s1. Это всегда будет верно, поскольку вы проверяете s1 на s1.

Даже если вы проверили s1 с s2, я не думаю, что это удовлетворит ваши требования, поскольку s1 <= s2 проверяет ли s1 лексикографически ниже, чем s2.

Лучшим способом для вас было бы положить символы s1 и s2 в набор, а затем проверить это на равенство.

Пример -

def sameChars(s1, s2): 
    if set(s1) == set(s2): 
     return True 
    else: 
     return False 

Или просто возвращает результат set(s1) == set(s2)

def sameChars(s1, s2): 
    return set(s1) == set(s2) 

set - Unordered коллекции уникальных элементов

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

+0

Как вы думаете, могу ли я использовать два цикла «для», я могу заставить его работать? – Aleisha

+1

Почему вы используете для циклов? Почему вы не можете использовать 'set()'? –

+0

Вы можете сделать это с двумя циклами, но это просто усложнит ситуацию. Если вы не можете использовать 'set', вы можете просто создать списки для обеих строк, затем отсортировать их, а затем проверить, равен ли каждый элемент в списке. –

0

В первый:

s1 <= s1 

всегда будет правдой. Вы сделали опечатку.

И вообще вы не менее полезны. Везде, где вы его используете, как sameChars(s1, s2), можно было бы просто сделать s1 <= s2 с исправным же эффектом.

+0

все еще не работает ((( – Aleisha

0

Вы сказали в своем OP, что хотите проверить , если строки содержат одинаковые символы. Это один из способов сделать это:

>>> s1 = 'Hello' 
>>> s2 = 'lo' 
>>> s2 in s1 
True 
>>> s2 = 'LO' 
>>> s2 in s1 
False 
>>> 
+0

) Это не сработает, если 'S2 = 'Helo', который должен соответствовать требованиям OP ... –

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