2012-03-08 4 views
1

Моя программа до сих порУдаление дубликатов в Python

def RemoveDuplicates(text): 
    result=[] 
    used=set() 
    for char in text: 
     if char not in used: 
      used.add(char) 
      result.append(char) 
    return ''.join(result) 

text=input('Enter some text: ') 
print(join(result)) 

Я новичок в Python, так что это довольно сложная задача для меня. Я знаю, что это не складывается, но где я допустил ошибку?

+1

Это не выглядит, как вы когда-либо вызова RemoveDuplicates в примере кода. –

+0

Ну, у Python нет никакой магии. Вы не можете писать случайные вещи и надеяться, что это сработает. –

ответ

0

Несколько вещей здесь:

  1. Вы определили функцию RemoveDuplicates, но никогда не называют.

  2. Вы используете set(), но затем проверяйте наличие дубликатов вручную. Набор, по определению, автоматически удалит дубликаты.

  3. Вы не сказали нам, что вы на самом деле пытаетесь выполнить. Сделай это, тогда мы сможем помочь тебе больше.

+0

Хотя, поскольку он пытается удалить повторяющиеся символы из строки, set() не будет поддерживать порядок сортировки – jdi

+0

Извините. Я хочу, чтобы программа попросила пользователя ввести текст. Результатом должен быть текст с удалением дубликатов. Введенный текст: «Stackoverflow», Output: Stackoverflw – user1248367

+1

Я уверен, что 'set' используется вручную, потому что необходимо сохранить порядок исходного текста. – kindall

1

Вы никогда на самом деле называется вашей RemoveDuplicates() функции.

Заменить:

text=input('Enter some text: ') 
print(join(result)) 

с:

print(RemoveDuplicates(input("Enter some text:"))) 
+0

Это сработало. Большое спасибо. Есть ли способ сократить его? – user1248367

+0

@ user1248367: Он может быть написан даже в одной строке, но с худшей производительностью. Функция кажется хорошей. –

+0

О, есть много способов написать, что короче - в одной или двух строках. Но это домашнее задание и то, что у вас есть, поэтому я бы включил его.:-) – kindall

0

Ваша функция выглядит хорошо для меня, хотя я не эксперт. Я думаю, что проблема заключается в том, что вы на самом деле ничего не называете. Попробуйте называть это следующим образом: print(RemoveDuplicates(text)).

1

В дополнение к другим ответам: если вы используете Python 2, вам необходимо использовать raw_input вместо input.

0

Одна небольшая проблема заключается в том, что вы забыли назвать свою функцию! Кроме того, если вы используете Python 2.x, пользовательский ввод необходимо собрать с помощью raw_input.

Два небольших исправлений и ваш код работает отлично:

def RemoveDuplicates(text): 
    result=[] 
    used=set() 
    for char in text: 
     if char not in used: 
      used.add(char) 
      result.append(char) 
    return ''.join(result) 

text = raw_input('Enter some text: ') 
print(RemoveDuplicates(text)) 
+0

raw_input - это python 2. Он был переименован в 'input' для python 3.x. – Darthfett

+0

Да, возможно, опрометчивое предположение ... – fraxel

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