Удаление дубликатов в Python

1

Моя программа до сих пор

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
    Ну, у Питона нет никакой магии. Вы не можете писать случайные вещи и надеяться, что это сработает.
Теги:

5 ответов

1

Вы никогда не называли вашу RemoveDuplicates().

Заменить:

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

с:

print(RemoveDuplicates(input("Enter some text:" )))
  • 0
    Это сработало. Большое спасибо. Есть ли способы сократить его?
  • 0
    @ user1248367: Он может быть записан даже в одну строку, но с худшей производительностью. Функция кажется хорошей.
Показать ещё 1 комментарий
1

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

0

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

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

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

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

  • 0
    Хотя, поскольку он пытается удалить повторяющиеся символы из строки, set () не будет поддерживать порядок сортировки
  • 0
    Сожалею. Я хочу, чтобы программа попросила пользователя ввести текст. На выходе должен быть текст с удаленными дубликатами. Введенный текст: "Stackoverflow", вывод: Stackoverflw
Показать ещё 3 комментария
0

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

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.
  • 0
    Да, возможно, опрометчивое предположение ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню