Я пытаюсь использовать одну функцию Python, предназначенную для создания каждой буквы в строке в верхнем регистре, но после ее использования строка string не работает над этой строкой. Что я имею в виду, спросите вы? Ну давайте просто скажем, следующие булевы:str.upper() возвращает строку, которая, по-видимому, не равна чему-либо, в том числе другому str.upper()
"b".upper() is "B"
".".upper() is "."
".".upper() is ".".upper()
являются все ложные.
Я так смущен. Он действует, как после преобразования строки в форму upper() вместо того, чтобы возвращать одну и ту же строку с заглавными буквами (это то, о чем говорит документация), она возвращает целый новый объект, который не равен ни одному объекту в тех же условиях.
Установка контрольных точек и просмотр фактических значений переменных кажется бесплодным. Я наматываю на is_graduate_input = input("Enter (y/n)").upper()
, и он показывает мне значение «Y», потому что это то, что я вошел. Но потом сразу после этой строки мой оператор print(is_graduate_input is "Y")
печатает False?!?! Зачем?!?!
Документация для python гласит, что их алгоритм для ввода букв в верхнем регистре описан в некоторых стандартах Unicode. Я не хочу читать это. Я не думаю, что это поможет. Может кто-то просто скажет мне, что, черт возьми, происходит. Я хочу лечь спать. У меня завтра школа.
См [здесь] (http://stackoverflow.com/questions/132988/is-there-a-difference -between-and-is-in-python) - это плохая идея использовать 'is' для сравнения с чем-либо, кроме одиночных, таких как' None'. Используйте '=='.Очень похоже на то, что происходит в Java с '==' и '.equals()'. – yeputons
@yeputons Это моя проблема?!?! Что мне делать? –
Это, вы должны использовать '==' в Python для сравнения объектов для равенства. Не используйте 'is' вне' None 'и 'is None', если вы четко не понимаете, что вы делаете и почему. – yeputons