If / Elif / Else Statement в Python - Else Statement печатается даже при соблюдении ограничений if - PullRequest
0 голосов
/ 23 февраля 2020

У меня первый месяц программирования, и я столкнулся с проблемой в приложении, которое разрабатываю. Я уверен, что это довольно просто для кого-то опытного, но я не знаю, как это исправить без синтаксической ошибки. Вот мой код (см. Ниже ошибку вывода)

def what_to_find():
    find = (input(": "))
    if find == int(1):
        find_slope()
    elif find == int(2):
        find_elevation1()
    elif find == int(3):
        find_elevation2()
    else:
        print("Choose a number corresponding to what you want to find")


what_to_find()

Таким образом, функция ввода работает, но независимо от того, какое число я ввел (1, 2 или 3), «print» под остальным Команда всегда печатает. Вот что вывод, например:

Что вы пытаетесь найти? 1 = наклон, 2 = более высокая отметка, 3 = более низкая отметка: 1 Выберите число, соответствующее тому, что вы хотите найти. Вставьте более высокую отметку:

Итак, после этого у меня есть код, который создает запрос для более высокой отметки , но я просто хочу знать, как убедиться, что он не печатает инструкцию else после запуска. Также я использую код Visual Studio для своей IDE.

От очень неопытного кодера, заранее спасибо за вашу помощь!

ОБНОВЛЕНИЕ: После пересмотра и использования ввода от других, это то, что я have:

def what_to_find():
    find = int(input(": "))
    if find == 1:
        find_slope()
    elif find == 2:
        find_elevation1()
    elif find == 3:
        find_elevation2()
    else:
        print("Choose a number corresponding to what you want to find")


what_to_find()

Что все имело смысл, поставьте, что это становится выходом (после того, как я подключаю одно из соответствующих номеров оператора if):

What are you trying to find?
1 = Slope, 2 = Higher Elevation, 3 = Lower Elevation
: 1
Traceback (most recent call last):
  File "gcalc.py", line 24, in <module>
    what_to_find()
  File "gcalc.py", line 15, in what_to_find
    find_slope()
NameError: name 'find_slope' is not defined

Не уверен, как это произошло или почему изменение в начале 'find' сделало этот вывод. Пожалуйста, помогите мне! Спасибо

1 Ответ

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

Чтобы устранить накладные расходы на выполнение int(find) для каждого из операторов if, просто внедрите необходимое условие для начального пользовательского ввода, например, так:

 find = int(input(": "))

, а затем каждый оператор if может быть просто проверка значения следующим образом:

 if find == 1:
   #run this scope

et c et c ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...