Голосование If / Else / Elif

1

Новое для Python (и для StackOverflow). Попытка выяснить, как заставить это выполнить правильно. Хотя сама программа выполняется отлично, я бы хотел, чтобы у нее не было дополнительного шага. Я имею в виду, что если он не выполняет первый оператор, я хотел бы завершить и распечатать сообщение, связанное с инструкцией else.

def main():

    # init
    messageOne = 'You are too young to vote.'
    messageTwo = 'You can vote.'
    messageThree = 'You need to register before you can vote.'

    # input
    age = int(input('Please enter your age: '))
    registration = input('Are you registered to vote(Y/N)?: ')

    # calculate / display
    if age >= 18:
        if registration.upper() == "Y":
            print(messageTwo)
        else:
            print(messageThree)
    else:
        print(messageOne)

main()
  • 1
    Можем ли мы предположить, что отсутствие отступа в теле main функции является ошибкой копирования-вставки, а не самого кода? Вы можете редактировать свой пост, чтобы исправить его. Также неясно, каким должно быть поведение - вы бы отредактировали свой вопрос, чтобы предоставить пример ввода и вывода, который проясняет ?
  • 0
    Сожалею. Это лучше? Просто так я знаю для дальнейшего использования.
Показать ещё 2 комментария
Теги:
if-statement

2 ответа

0
Лучший ответ

Программа написана хорошо. Единственное, что я хотел бы изменить, это поставить registration = input('Are you registered to vote(Y/N)?: ') после проверки, если age >= 18 (поэтому пользователю не будет задано вопрос о том, зарегистрированы ли они, если они зарегистрированы моложе 18 лет). Я ничего не изменил бы.

def main():

    # init
    messageOne = 'You are too young to vote.'
    messageTwo = 'You can vote.'
    messageThree = 'You need to register before you can vote.'

    # input
    age = int(input('Please enter your age: '))

    # calculate / display
    if age >= 18:
        registration = input('Are you registered to vote(Y/N)?: ')
        if registration.upper() == "Y":
            print(messageTwo)
        else:
            print(messageThree)
    else:
        print(messageOne)

main()
  • 0
    Благодарю. Это определенно работает. Я не думал, чтобы перенести ввод регистрации в расчет.
  • 0
    Нет проблем! Поставьте галочку рядом с этим ответом, если вы удовлетворены им.
Показать ещё 1 комментарий
0

Если вы находитесь внутри функции, вы можете пропустить оставшиеся операторы с return.

def main():

    # init
    messageOne = 'You are too young to vote.'
    messageTwo = 'You can vote.'
    messageThree = 'You need to register before you can vote.'

    # input
    age = int(input('Please enter your age: '))


    # calculate / display
    if age < 18:
         print(messageOne)
         return    
    registration = input('Are you registered to vote(Y/N)?: ')
    if registration.upper() == "Y":
         print(messageTwo)
         return
    print(messageThree)
    return

main()
  • 0
    Спасибо! Не похоже, что книги, о которых я смотрю, говорили о возвращении, но я ценю вклад.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню