Как запретить ввод пустой строки?

Как можно улучшить программу на Python, которая решает квадратные уравнения, поощряя пользователя вводить значения и выводить результаты шаг за шагом?
  • 25 июля 2024 г. 9:02
Ответы на вопрос 2
Чтобы запретить ввод пустой строки в Python, можно использовать цикл, который будет продолжаться до тех пор, пока пользователь не введет непустую строку. Например:

```python
user_input = input("Введите что-то: ")
while not user_input.strip():
    print("Вы ввели пустую строку, попробуйте еще раз.")
    user_input = input("Введите что-то: ")
```

Чтобы улучшить программу на Python, которая решает квадратные уравнения, можно добавить пошаговый вывод результатов. Например:

```python
import math

print("Решение квадратного уравнения вида ax^2 + bx + c = 0")
a = float(input("Введите коэффициент a: "))
b = float(input("Введите коэффициент b: "))
c = float(input("Введите коэффициент c: "))

discriminant = b**2 - 4*a*c

if discriminant > 0:
    x1 = (-b + math.sqrt(discriminant)) / (2*a)
    x2 = (-b - math.sqrt(discriminant)) / (2*a)
    print("У уравнения два корня:")
    print(f"x1 = {x1}")
    print(f"x2 = {x2}")
elif discriminant == 0:
    x = -b / (2*a)
    print("У уравнения один корень:")
    print(f"x = {x}")
else:
    print("У уравнения нет вещественных корней.")
```

Этот способ не только поощряет пользователя вводить значения, но и выводит результаты шаг за шагом, что делает процесс более понятным и интерактивным.
Тебе нужно повторять ввод аргументов, пока пользователь не введёт их правильно? Ну вот и повод почитать про циклы. 
while True:  # бесконечный цикл
  x_str = input('Введите x:')  # вводим число
  try:  # внутри блока try мы будем отлавливать ошибки - исключения
    x = float(x_str)  # пробуем преобразовать строку в число
  except ValueError:  # в случае чего float() выкинет исключение ValueError
    print(x_str, 'это не число. Попробуйте ещё раз.')  # сообщаем пользователю
  else:  # если ошибки не было
    break  #  то прерываем цикл, у нас в x лежит нужное значение
  # мы делаем break только в ветке else - значит, пока отрабатывает ветка except, цикл продолжится

В принципе, если тебе нужна только одна попытка, ты можешь вытащить блок try-except из цикла, убрать ветку else, и заменить ветку except на что-то типа:
except ValueError:
  print(x_str, 'это не число. У вас есть ещё одна попытка')  # сообщаем пользователю
  x_str = input('Введите x: ')
  x = float(x_str)

Тогда получится обойтись без циклов.

Но без try-except обойтись сложнее. Да, ты можешь предварительно проверить строку на соответствие шаблону десятичного дробного числа, но честно? try-except куда проще, так что стоит его освоить. Главное - не "глотай" ошибки, реагируй на них.
Похожие вопросы