Как использовать команду try-exc в цикле while, запрашивая ввод пользователя

Облачные функции Google теперь позволяют отправлять push-уведомления с устройства на устройство без сервера приложений.

В документации по облачным функциям Google:

Разработчики могут использовать функции облака, чтобы пользователи могли общаться и получать актуальную информацию о приложении. Рассмотрим, например, приложение, которое позволяет пользователям следить за действиями друг друга в приложении. В таком приложении функция, инициированная записью базы данных Realtime для хранения новых подписчиков, может создавать уведомления Firebase Cloud Messaging (FCM), чтобы сообщить соответствующим пользователям, что они получили новых подписчиков.

Пример:

  1. Функция запускает запись в путь базы данных Realtime, где хранятся последователи.
  2. Функция составляет сообщение для отправки через FCM.
  3. FCM отправляет уведомление сообщение на устройство пользователя.

Вот демонстрационный проект для отправки push-уведомлений устройства на устройство с помощью Firebase и облачных функций Google.

0
задан SuperShoot 31 March 2019 в 02:48
поделиться

2 ответа

@Luca Bezerras ответ хорош, но вы можете сделать его немного более компактным:

travel_score = input("How many times per year do you travel? Please give an integer number: ")

while type(travel_score) is not int:    
    try:
        travel_score = int(travel_score)
    except ValueError:
        travel_score = input("This was not a valid input please try again: ")


print ("User travels per year:", travel_score)
0
ответ дан Lucas 31 March 2019 в 02:48
поделиться

Проблема в том, что для вашего второго ввода нет обработки исключений.

travel_score = 0

while True:
    try:
        travel_score = int(input("How many times per year do you travel? Please give an integer number"))
    except ValueError:
        # if an exception raised here it propagates
        travel_score = int(input("This was not a valid input please try again"))


print ("User travels per year:", travel_score)

Лучший способ справиться с этим - это вернуть информативное сообщение пользователю, если его ввод неверен, и позволить циклу вернуться в начало и повторить запрос таким образом:

# there is no need to instantiate the travel_score variable
while True:
    try:
        travel_score = int(input("How many times per year do you travel? Please give an integer number"))
    except ValueError:
        print("This was not a valid input please try again")
    else:
        break  # <-- if the user inputs a valid score, this will break the input loop

print ("User travels per year:", travel_score)
0
ответ дан SuperShoot 31 March 2019 в 02:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: