Увеличение или уменьшение введённой величины

808guard

Новичок
Пользователь
Май 14, 2020
13
0
1
Уважаемые друзья, нужен совет. Как сделать так, чтобы та величина, которую пользователь вводит, увеличивалась или уменьшалась? Пример: нормальное исходное значение величины равно 5. Пользователь вводит число 4,5. Система выводит ему сообщение о том, что введённое значение ниже нормы, и автоматически начинает прибавлять 0,1, пока введённое число не станет равно пяти. Я понимаю, что здесь нужно применять while, но как именно, не понимаю. Там в начале можно увидеть, как я экспериментировал.
Python:
choice = input("Выберите необходимый параметр. Если это давление, то введите 1. Если это вода, то введите 2 = ")


if choice == "1":
    pressure = input("Введите ваше значение уровня давления: ")

    if pressure <= "5":
        print("Уровень давления ниже нормы.")
        while pressure !=5:
            pressure += 0,1
            pressure -= pressure

    if pressure == "4,5":
        print("\aУровень давления достиг критического значения, необходимо отключить подачу питательной воды и топлива.")
 
    if pressure >= "5":
        print("Уровень давления выше нормы.")

    if pressure == "5,5":
        print("\aУровень давления достиг критического значения, необходимо отключить подачу питательной воды и топлива.")

    input("\n\nНажмите Enter, чтобы выйти.")

elif choice == "2":
    water = input("Введите ваше значение уровня воды: ")

    if water <= "2":
        print("Уровень воды ниже нормы, требуется подключить подпитку питательной воды.")

    if water == "1,5":
        print("\aУровень воды достиг критического значения, необходимо отключить подачу питательной воды и топлива.")
 
    if water >= "2":
        print("Уровень воды выше нормы, требуется подключить подсосную станцию и выкачать избыток.")

    if water == "2,5":
        print("\aУровень воды достиг критического значения, необходимо отключить подачу питательной воды и топлива.")

    input("\n\nНажмите Enter, чтобы выйти.")
 

borntohack

змееуст
Команда форума
Модератор
Апр 22, 2020
78
62
18
39
Москва, РФ
Во-первых, десятичный разделитель в python - это "."(точка), а не запятая.
Во-вторых pressure-=pressure сделать показатель pressure равным нулю, поскольку вы отнимаете от числа его самого.
В-третьих - все проверки должны выполняться внутри тела цикла while иначе получите бесконечный цикл.
Удачи
 
  • Мне нравится
Реакции: Vlad_SD

808guard

Новичок
Пользователь
Май 14, 2020
13
0
1
Python:
почему получается бесконечный цикл? 




choice = input("Выберите необходимый параметр. Если это давление, то введите 1. Если это вода, то введите 2 = ")


if choice == "1":
    pressure = input("Введите ваше значение уровня давления: ")

    if pressure <= "5":
        print("Уровень давления ниже нормы.")
        while pressure != 5:
            pressure = 0
            pressure += 0.1
            print("Уровень давления достиг оптимального значения. Отклонение от нормы было равно ", pressure, " Па.\n")

    if pressure == "4.5":
        print("\aУровень давления достиг критического значения, необходимо отключить подачу питательной воды и топлива.")
 
    if pressure >= "5":
        print("Уровень давления выше нормы.")

    if pressure == "5.5":
        print("\aУровень давления достиг критического значения, необходимо отключить подачу питательной воды и топлива.")

    input("\n\nНажмите Enter, чтобы выйти.")

elif choice == "2":
    water = input("Введите ваше значение уровня воды: ")

    if water <= "2":
        print("Уровень воды ниже нормы, требуется подключить подпитку питательной воды.")

    if water == "1.5":
        print("\aУровень воды достиг критического значения, необходимо отключить подачу питательной воды и топлива.")
 
    if water >= "2":
        print("Уровень воды выше нормы, требуется подключить подсосную станцию и выкачать избыток.")

    if water == "2.5":
        print("\aУровень воды достиг критического значения, необходимо отключить подачу питательной воды и топлива.")

    input("\n\nНажмите Enter, чтобы выйти.")
 

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
Предположим, что пользователь ввёл значение ниже или равное 5, условие будет верно и начнётся выполнение цикла (чтобы сравнивать, нужно, чтобы тип данных в вашем случае был int, а не str)
Python:
if pressure <= 5:
        print("Уровень давления ниже нормы.")
        while pressure != 5:
            pressure = 0   # зацикливание здесь
            pressure += 0.1
            print("Уровень давления достиг оптимального значения. Отклонение от нормы было равно ", pressure, " Па.\n")
после первого прохода цикла pressure = 0.1 , так как вы сами перед этим приравняли его к нулю, так бесконечно условие для while будет верным, так как 0.1 всегда меньше 5
 

808guard

Новичок
Пользователь
Май 14, 2020
13
0
1
Я понял свою ошибку, но не понял как её исправить. Когда я убираю строку pressure = 0, то при вводе значения, меньшего чем четыре, программа просто закрывается.
 

808guard

Новичок
Пользователь
Май 14, 2020
13
0
1
Просто подскажите, пожалуйста, что нужно сделать, чтобы при вводе, например, 4,5, появлялся цикл, который пять раз прибавляет по 0.1 и выдает текстовое сообщение.
 

808guard

Новичок
Пользователь
Май 14, 2020
13
0
1
помогите, пожалуйста, уже весь день бьюсь над этим одним циклом, ничего не получается
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
помогите, пожалуйста, уже весь день бьюсь над этим одним циклом, ничего не получается
Вот пример:
Python:
import time


choice = input("Выберите необходимый параметр. Если это давление, то введите 1. Если это вода, то введите 2 = ")


if choice == "1":
    pressure = float(input("Введите ваше значение уровня давления: "))

    while True:

        if pressure <= 5:
            print("Уровень давления ниже нормы." + ' {:.1f}'.format(pressure))
            pressure += 0.1

        if pressure == 4.5:
            print("\aУровень давления достиг критического значения, необходимо отключить подачу питательной воды и топлива.")
            
        if pressure >= 5:
            print("Уровень давления выше нормы.")
            break

        if pressure == 5.5:
            print("\aУровень давления достиг критического значения, необходимо отключить подачу питательной воды и топлива.")
            break

        time.sleep(.3)

    input("\n\nНажмите Enter, чтобы выйти.")
 

Форум IT Специалистов