Вопрос:

Не в состоянии выполнить операторы else, если условие if не выполнено

python loops for-loop python-3.7

25 просмотра

2 ответа

108 Репутация автора

Я пытаюсь напечатать числа, основанные на 2 числах ввода пользователя. Если первое меньше второго, печатайте от меньшего к большему. Если первое больше второго, печатайте от большего к меньшему.

Оба утверждения в операторах if & else были проверены на правильность логики. Однако работает только оператор if, но когда проверяется условие else, система не может выполнить операторы else.

def question1c():
    firstNum = int(input("Enter first number: "))
    secondNum = int(input("Enter second number: "))
    if firstNum < secondNum: 
        for n in range(firstNum, secondNum + 1):
            print(n)
    else: 
        for n in range(secondNum, firstNum - 1, -1):
            print(n)
question1c()

Сценарий 1:

Enter first number: 10
Enter second number: 12
10
11
12

Сценарий 2:

Enter first number: 12
Enter second number: 10
12
11
10

Фактические результаты для Сценария 2:

Enter first number: 12
Enter second number: 10 <-- fails to execute else statements
Автор: JJ2015 Источник Размещён: 11.08.2019 07:11

Ответы (2)


1 плюс

2843 Репутация автора

Решение

secondNum меньше, чем firstNum, поэтому вы не можете перейти вниз. Переключите их.

else: 
    for n in range(firstNumNum, secondNum - 1, -1):
        print(n)
Автор: HenryM Размещён: 11.08.2019 07:18

0 плюса

2492 Репутация автора

Ваша проблема в том, что firstNum = 12и secondNum = 10тогда elseвыполняется нормально (потому что 12> = 10), но тогда вы range:

range(10, 11, -1)

Таким образом, цикл не выполняется вообще и ничего не печатается.

Как вы можете видеть, вы хотели бы изменить на range:

range(firstNum, secondNum - 1, -1)

В качестве альтернативы вы можете устранить условия и использовать направление в одном range:

firstNum = int(input("Enter first number: "))
secondNum = int(input("Enter second number: "))

direction = 1 if firstNum < secondNum else -1

for n in range(firstNum, secondNum + direction, direction):
    print(n)
Автор: Tomerikoo Размещён: 11.08.2019 07:27
Вопросы из категории :
32x32