Построение цикла while в функции для проверки, находится ли пользовательский ввод между двумя значениями с плавающей запятой - PullRequest
0 голосов
/ 31 октября 2019

Я создаю функцию, которая будет принимать один аргумент (значение). Это значение будет преобразовано в число с плавающей точкой, чтобы проверить, существует ли оно между двумя границами (которые также являются значениями с плавающей точкой). Если пользовательское значение ввода не попадает между границами, продолжайте спрашивать пользователя о вводимом значении.

def check(value):
    value = float(value)
    while -10.0 > value < 1.5:
        value = raw_input("False. Please enter a number:")
    else:
        return True

Когда я запускаю код со значением, которое не существует между границами, математика по-прежнемуоценивается как True (ожидалось, что пользователю снова будет предложено ввести данные, т.е. ожидается False).

>>> check(-11)
True

Также я прошу прощения за любое странное форматирование для приведенных выше кодов (когда я скопировал и вставил их здесь, я не мог понять, как сделать так, чтобы весь блок кода появлялся вместе).

РЕДАКТИРОВАТЬ:

Поэтому, прежде чем я увидел другие ответы, я переписал некоторый код;Я также понял, что мой синтаксис был неправильным в коде, который я разместил, поэтому я изменил его соответствующим образом в новом коде. Вот ответ, который я сейчас придумал (я также был бы признателен за отзывы о новом решении, которое у меня есть): def check (value):

value = float(value)

if -10.0 < value < 1.5:
    return True

while not -10.0 < value < 1.5:
    value = float(raw_input("False. Please enter a number:"))

1 Ответ

1 голос
/ 31 октября 2019

Число никогда не может быть одновременно меньше -10.0 и больше 1.5, поэтому условие while также будет False, и цикл всегда завершится немедленно. Поскольку break не происходит во время цикла, блок else всегда будет выполняться, поэтому всегда будет возвращаться True.

. Вместо этого следует использовать оператор or, чтобы проверить, находится ли вход внеграницы:

while -10.0 > value or value > 1.5:
    value = float(raw_input("False. Please enter a number:"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...