Поиск дубликата в списке на Python

#python

#python

Вопрос:

 newWord = print(input('Enter a word: '))
myList = ["apple", "mango"]

def ifWordAlreadyExists(str):
    for x in myList:
        if x == str:
            index = index(x)
            query = print(input('Word ', x ,'is already in index ', index , 'are you sure you want to include it? '))
            if query == 'y':
                return str
            else:
                return 0
myList.append(ifWordAlreadyExists(newWord))
print(myList)
 

Вывод

 Enter a word: apple
apple
['apple', 'mango', None]
 

Почему запрос не отображается, а новое слово не добавляется в myList?
PS. Я новичок в Python, поэтому был бы признателен, если бы кто-нибудь указал, что я делаю неправильно :))

Комментарии:

1. Вы должны изменить имя своей переменной на str, так как это буквально строковая функция. Например. str(1) возвращает строку "1"

2. Что вы ожидали x == str сделать? Кроме того, что такое index ? он не определен, и вы его вызываете. Функция добавляется None , потому что return оператор не достигнут

3. @Countour-Integral я хочу сравнить newWord с x и, если они равны, показать запрос

4. печать возвращает тип None

Ответ №1:

В основном print() возвращает None , и вам не нужно размещать input() метод, print() потому input() что он также может выводить что-то на экран, но принимать ввод. Вы можете изменить код на:

 myList = ["apple", "mango"]
newWord = input('Enter a word: ')
check = newWord in myList
if not check:
    myList.append(newWord)
else:
    print('Word', newWord ,'is already on the list are you sure you want to include it?', end=" ")
    query = input().lower().startswith('y')
    if query:
        myList.append(newWord)
print(myList)
 

Вывод

 Enter a word: apple
Word apple is already on the list are you sure you want to include it? yes
['apple', 'mango', 'apple']
 

Комментарии:

1. Вы неправильно поняли свое условие, вам следует сразу добавить слово, если newWord not in myList

Ответ №2:

Функция print не возвращает никаких значений

Если вы хотите распечатать введенное значение, вы должны использовать print в нижней строке.

 newWord = input("Word:")
print(newWord) #like this
myList = ["apple", "mango"]

def ifWordAlreadyExists(str):
    for x in myList:
        if x == str:
            index = myList.index(x)
            query = input("Word {0} is already in index {1} are you sure you want to include it:".format(str,index))
            if query == 'y':
                return str
            else:
                return 0
myList.append(ifWordAlreadyExists(newWord))
print(myList)
 

Ответ №3:

newWord None если вы используете newWord = print(input('Enter a word: ')) , так и должно быть newWord = input('Enter a word: ') . Кроме того, вам не нужно использовать цикл for внутри функции, метод index списка python может решить его напрямую, например

 newWord = input('Enter a word: ')
myList = ["apple", "mango"]

def ifWordAlreadyExists(to_check):

    try:
        idx = myList.index(to_check)
        query = input('%s is already in the list, are you sure you want to include it? ' % to_check)
        if query == 'y': return to_check
        return 0
    except ValueError:
        return to_check
    
myList.append(ifWordAlreadyExists(newWord))
print(myList)