2016-11-22 3 views
1

Это, вероятно, очень простой, но я пытаюсь вызвать Except работать, если cointype() не в словаре coin_int но он прыгает прямо из условия if без использования Except даже если ошибка значения выполнена? Спасибо за любую помощь.Python Проблема: Попробуйте и Excepts с, если

try: 
    coin_type = input("Input your coin: 1p, 2p, 5p etc... ") 
    if coin_type in coin_int: 
     print("That value is recognised inside the list of known coin types") 

except ValueError: 
    print("That value of coin is not accepted, restarting...") 

ответ

2

Во-первых, ваш исключением никогда не будет достигнуто ... вы не «попробовать» что-нибудь, что поднимет ValueError исключение ... Прежде всего позвольте мне показать, как к этому, а затем в основном говорят, что в этом случае вы не получите ничего, используя попробовать/за исключением:

coin_int = ("1p", "2p", "5p") 
while True: 
    coin_type = input("Input your coin: 1p, 2p, 5p etc.: ") 
    try: 
     coin_int.index(coin_type) 
     print("value accepted, continuouing...") 
     break 
    except ValueError: 
     print("That value of coin is not accepted, try again and choose from", coin_int) 

Но это равносильно, и в этом случае так же, как эффективный (если не лучше, на самом деле, как в производительности и читаемость):

coin_int = ("1p", "2p", "5p") 
while True: 
    coin_type = input("Input your coin: 1p, 2p, 5p etc.: ") 
    if coin_type in coin_int: 
     print("value accepted, continuouing...") 
     break 
    else: 
     print("That value of coin is not accepted, try again and choose from", coin_int) 

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

  • raise поднять excception пойманного с сообщением по умолчанию
  • raise ValueError("That value of coin is not accepted, try again and choose from", coin_int), которые также могут быть использованы в else воскрешать конкретное исключение с пользовательским сообщением
3

вы хотите рейза исключение. Только

raise ValueError("wrong coin type") 
0

Ваша программа должна выглядеть следующим образом. (Я привожу пример по списку вместо словаря)

coin_int = ['1p', '2p', '3p', '4p', '5p'] 
try: 
    coin_type = '6p' 
    if coin_type in coin_int: 
     print("That value is recognised inside the list of known coin types") 
    else: 
     raise ValueError("wrong coin type") 
except ValueError as error: 
    print("That value of coin is not accepted, restarting..." + repr(error)) 
Смежные вопросы