Python - sys.stdin.readline () - библиотека - PullRequest
1 голос
/ 09 мая 2020
import sys

lijst_salades = {'Eiersalade' : 5.99,
                 'Paprikasalade' : 6.05,
                 'truffelsalade': 3.99
                 }

input = (sys.stdin.readline())
print(lijst_salades[input])

это дает мне ошибку

Traceback (последний вызов последним): Файл «C: / some / random / dir / right / here / progr.py», строка 9, в печати (lijst_salades [input]) KeyError: 'truffelsalade \ n'

Может кто-нибудь объяснить, что случилось? Если я использую print(lijst_salades['Eiersalade'], он работает нормально.

1 Ответ

2 голосов
/ 09 мая 2020

Проблема в том, что вы читаете символ \n с переданным вводом как состояние ошибки:

KeyError: 'truffelsalade \ n'

Вы должен исправить код на:

import sys

lijst_salades = {'Eiersalade' : 5.99,
                 'Paprikasalade' : 6.05,
                 'truffelsalade': 3.99
                 }

input = (sys.stdin.readline()).rstrip()
print(lijst_salades[input])

Кроме того, рекомендуется добавить тестирование на вход, потому что, если ключ не существует, это также вызовет ошибку типа KeyError.

Редактировать

Вы можете прочитать о escape-символах по следующим ссылкам:

https://linuxconfig.org/list-of-python-escape-sequence-characters-with-examples

https://docs.python.org/2.0/ref/strings.html

...