Пайтон условное выражение if

s = ""
input(s)
if s == "":
    print("Пусто")
else:
    print("End")

Почему эта конструкция не работает?
На выходе всегда "Пусто"


Ответы (4 шт):

Автор решения: Fox Fox
s = input("Введите значение: ")
if not s: print("Пусто!")
else: print("Конец!")
→ Ссылка
Автор решения: Amgarak
s = ""
input(s)
if s == "":
    print("Пусто")
else:
    print("End")

Если откроете документацию input() то мир станет проще:

Синтаксис:

  • input(prompt)

Параметры:

  • prompt - строка подсказки.

Возвращаемое значение:

  • строка str, даже если вводятся цифровые значения.

Вы передаёте в функцию аргумент s в качестве prompt который должен выводится на экран. При этом значение переменной s не будет перезаписано.

input() возвращает введённое пользователем значение, вы же его не сохраняете обратно в переменную s. А следовательно значение s остаётся неизменно пустым.

Если по простому, то s у вас изначально пустая, и после вызова input(s) она остаётся пустой, потому что результат ввода не был присвоен переменной s и условие if s == "" всегда будет True

s = input()  # Вот тут и нужно сохранить ввод в s
if s == "":
    print("Пусто")
else:
    print("End")
→ Ссылка
Автор решения: Pak Uula

Это не ответ, а флуд и оффтопик )

Я задал ваш вопрос нескольким AI-ассистентам.

Итого:

  • Gemini 1.5 дал какие-то бредовые объяснения, но исправленный код работает. До кучи нафлудил две страницы текста с ненужными добавлениями.
  • Gemini 2.0 Preview и GPT 4o дали разумные объяснения на русском языке и правильное исправление,
  • Claude 3.5 Sonnet (Preview) вопрос на русском понял, ответил на английском. Ответ правильный, исправление правильное.

Google Gemini 1.5

Давайте разберем, почему ваша конструкция в Python всегда выдает "Пусто", и как это исправить.

Проблема:

Проблема в том, что input() в Python считывает ввод пользователя как строку. Даже если пользователь ничего не ввел, input() вернет пустую строку "", а не пустое значение None.

В результате, условие if s == "" всегда будет истинным, потому что input() всегда возвращает строку, даже если она пустая.

Решение:

Чтобы ваша конструкция работала корректно, вам нужно проверять, действительно ли пользователь что-то ввел. Вот несколько способов это сделать:

  1. Проверка на пустую строку:

Этот способ вы уже использовали, и он подходит, если вам нужно различать случаи, когда пользователь ничего не ввел, и когда ввел пустую строку.

Python

s = input()  # Считываем ввод пользователя

if s == "":
    print("Пусто")
else:
    print("End")
  1. Проверка на None (если ожидается число):

... дальше были многословные рассуждения на тему, как проверять None, 0, строки из пробелов... Главное мы увидели: ошибку в рассуждениях.

Google Gemini 2.0

Давайте разберем, почему ваша конструкция в Python всегда выводит "Пусто", и как это исправить.

Проблема:

Проблема в том, как вы используете функцию input(). Функция input() предназначена для получения ввода от пользователя. Когда вы вызываете input(s), вы передаете текущее значение переменной s (в данном случае, пустую строку "") в качестве аргумента. Это значение будет отображено пользователю в качестве приглашения (prompt). Однако, значение, которое введет пользователь, НЕ будет присвоено переменной s напрямую.

Функция input() ВОЗВРАЩАЕТ введенное пользователем значение. Это возвращенное значение нужно присвоить переменной, чтобы она изменилась.

Решение:

Чтобы ваша конструкция работала корректно, вам нужно присвоить результат функции input() переменной s:

s = input()  # Получаем ввод от пользователя и присваиваем его s

if s == "":
    print("Пусто")
else:
    print("End")

Рассуждения верные, рецепт верный.

GPT 4o

Конструкция не работает, потому что функция input() ожидает ввода от пользователя и не использует переданный аргумент. Вместо этого, нужно использовать input() без аргументов и присвоить результат переменной s.

Вот исправленный код:

s = input()
if s == "":
    print("Пусто")
else:
    print("End")

Рассуждения верные, рецепт верный

Claude 3.5 Sonnet (Preview)

Let me explain the issue and provide a solution:

Steps to fix the code:

  1. The problem is that input(s) doesn't store the user input in the variable s
  2. The string passed to input() is just used as a prompt message
  3. We need to assign the result of input() to the variable s

The main issue in the original code was that input(s) doesn't modify the variable s. Instead, input() returns the user's input as a string, which needs to be assigned to a variable. That's why the original code always evaluated s as an empty string, resulting in "Пусто" being printed every time.

s = input()  # or s = input("Enter a string: ") if you want a prompt
if s == "":
    print("Пусто")
else:
    print("End")

Рассуждения верные, рецепт верный. Есть бонус - предложен вариант input() с промтом. Вопрос на русском понял, но ответил на английском.

→ Ссылка
Автор решения: hexique

Потому что ты не сохраняешь инпут в определённую переменную, а код проверяет является ли перменная s пустой, а строка input(s) просто выводит пустую строку

Исправленый код:

s = input()
if s == "":
    print("Пусто")
else:
    print("End")
→ Ссылка