Оператор печати Python не отображается в операторе If in range - PullRequest
0 голосов
/ 06 февраля 2019

Я посмотрел в Интернете, как написать оператор if in range в python, и меня смущает, почему мое заявление на печать не отображается.

print("Hello User What Is The Wind Chill Today?")
windChill = int(input())

if windChill <= -25:
    print("No School!!!")

if windChill >= 0:
    print("Theres School ):")

if int(windChill) in range(-1, -24):
    print("Maybe school")

Ожидаемый результат: если я добавлюна входе -20 будет написано «Может быть, школа», но сейчас я не показываю оператор печати, когда я набираю число от -1 до -24.

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

Ваша команда range обратная, она должна идти от наименьшего (самого отрицательного) числа к наибольшему.Если вы хотите диапазон от -1 до -24, вы должны сделать range(-24, -1)

0 голосов
/ 06 февраля 2019

Функция Python's range увеличивает значение на 1. Первый аргумент в range равен start, второй - stop и 3-й (необязательно) аргументравен step, то есть на что он увеличивается.У вас есть 2 варианта здесь.

Либо начните с нижнего числа и остановитесь на более высоком :

if int(windChill) in range(-24, -1):

Или сохраните то, что у вас есть, но скажите range, чтобы увеличить на -1 :

if int(windChill) in range(-1, -24, -1):

Оба вышеперечисленных результата принесут вам одинаковый результат, хотя, к вашему сведению, оба они приведут к обратному списку друг друга, если вы запустите на них list()

print(list(range(-24, -1)))
#[-24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2]

print(list(range(-1, -24, -1)))
#[-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23]

Редактировать

Если копать глубже, диапазоны определяются по следующим формулам:

Для положительного шага содержимое диапазонаr определяются по формуле r[i] = start + step*i, где i >= 0 и r[i] < stop.

Для отрицательного шага содержимое диапазона все еще определяется по формуле r[i] = start + step*i, но ограниченияi >= 0 и r[i] > stop.

Ссылка

Таким образом, по сути, range фактически исключает значение стопа в моих примерах (соответственно -1 и -24) , поэтому обязательно примите это во внимание.Используйте

if int(windChill) in range(-24, 0):
#or
if int(windChill) in range(-1, -25, -1):
0 голосов
/ 06 февраля 2019

Ваша функция дальности обратная.Но вам не нужно включать последнее условие if, если вы используете синтаксис if - elif-else.

Вы должны использовать здесь оператор if-elif-else, как показано ниже:

print("Hello User What Is The Wind Chill Today?")
windChill = int(input())

if windChill <= -25:
    print("No School!!!")

elif windChill >= 0:
    print("Theres School ):")

else:
    print("Maybe school")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...