Вложенный оператор if не выполняется в Python - PullRequest
1 голос
/ 13 февраля 2020

Я пытаюсь написать программу на Python 3, которая усреднит ввод пользователя в течение нескольких часов сна, а затем вернет сообщение на основе среднего значения. Программа не будет ничего печатать. Там нет ошибки, которая показывает.

Это первый блок if, который я написал. Я хотел, чтобы программа усреднила часы, а затем напечатала отчет, основанный на возрасте и среднем значении часов. Например, если пользователю 18 лет и он спит в среднем 8 часов, он напечатает | «слишком мало спит».

  import sys

  h1 = float(sys.argv[1]) 
  h2 = float(sys.argv[2])
  h3 = float(sys.argv[3])
  h4 = float(sys.argv[4])
  h5 = float(sys.argv[5])
  age = float(sys.argv[6])

  sleeph =(h1+h2+h3+h4+h5)/5

 if (age >18 and age < 25):
    if(sleeph>7 and sleeph<9):
        print(name,"  sleeps too little")
elif(sleeph>= 10 and sleeph<= 11):
    print(name,"sleeps enough")
else:
    print(name, " sleeps too much") `

Я не могу сказать, что мне не хватает. Я думаю, что он выполняется после первого оператора if и затем выходит из программы. Любые идеи?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Кажется, что ваш отступ неверен. Сначала вы должны исправить это.

h = [7.8, 4.5, 6.7, 10, 9]
age = int(input('Enter your age'))
sleeph = (h[0] + h[1] + h[2] + h[3] + h[4]) / 5
if age > 18 and age < 25:
    if sleeph > 7 and sleeph < 9:
        print('Sleeping too little')
    elif sleeph >= 10 and sleeph <= 11:
        print('Sleeping enough')
    else:
        print('Sleeping too much')

Выход

Enter your age23
Sleeping too little

Лестница if-else должна иметь отступ внутри основного блока if, как и все sleeph условия должны быть проверены для возраста от 18 до 25 лет. Кроме того, если необходимо также проверить возрастные условия, отступ будет выглядеть следующим образом:

h = [7.8, 4.5, 6.7, 10, 9]
age = int(input('Enter your age'))
sleeph = (h[0] + h[1] + h[2] + h[3] + h[4]) / 5
if age > 18 and age < 25:
    if sleeph > 7 and sleeph < 9:
        print('Sleeping too little')
    elif sleeph >= 10 and sleeph <= 11:
        print('Sleeping enough')
    else:
        print('Sleeping too much')
elif age >= 25 and age <= 40:
    # if - else ladder for sleeph repeated
else:
    # Repeat the if - else ladder of sleeph for age > 40

Надеюсь, это решит вашу проблему.

0 голосов
/ 13 февраля 2020

Ваш второй оператор «if» проверяет значение меньше 9, а «elif» проверяет значение больше или равно 10, что полностью исключает девять. Кроме того, вы игнорируете любые часы сна менее 7, которые были бы у большинства людей в возрасте от 18 до 25;)

name = 'Ranger Rick'
    sleeph = 9 
    age = 19
    if (age >18 and age < 25):
        if(sleeph<9):
            print(name,"  sleeps too little")
        elif(sleeph>= 9 and sleeph<= 11):
            print(name,"sleeps enough")
        else:
            print(name, " sleeps too much")
...