Попытка вернуть истинные ложные значения из оператора «in»

#python

Вопрос:

Я создаю последовательность для добавления списка на основе логических значений выходных данных из этого отрывка, но каждый раз, когда я запускаю последовательность, она возвращается только как истинная и не будет добавлена в список.

 yesvalues = ["yes", "Yes", "yeah", "ok", "okay"]

spcharacter = (input("Are special Charaters required?: "))
if spcharacter.lower() in yesvalues:
    spcharacter == True
else:
    spcharacter == False

if spcharacter == True:
    useableoptions.append(special)
 

Ответ №1:

Вы ошибочно == принимаете (сравнение) за = (назначение), поэтому переменная никогда не устанавливается в качестве чего-либо, кроме строки из input() , и никакой строки == True нет .

Кроме того, вы можете просто назначить напрямую.

 yesvalues = {"yes", "Yes", "yeah", "ok", "okay"}

spcharacter = input("Are special Charaters required?: ")
spcharacter = spcharacter.lower() in yesvalues
if spcharacter:
    useableoptions.append(special)
 

Или, короче говоря, не используйте логические переменные

 if spcharacter.lower() in yesvalues:
    useableoptions.append(special)
 

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

1. Спасибо за отзыв, я подумал == сослался на равные, а не на сравнение предметов.

2. Это действительно означает «равно». Подумайте о = том, как » присваивается значение»