30. Почтовые индексы.
Условие:
Первый, третий и пятый символы в канадском почтовом индексе представляют собой буквы, а второй, четвертый и шестой – цифры. Провинцию или территорию, которой принадлежит индекс, можно определить по первому символу индекса, как показано в словаре:
post_index = {
"A": "Ньюфаундленд",
"B": "Новая Шотландия",
"C": "Остров Принца Эдуарда",
"E": "Нью-Брансуик",
"G": "Квебек",
"H": "Квебек",
"J": "Квебек",
"K": "Онтарио",
"L": "Онтарио",
"M": "Онтарио",
"N": "Онтарио",
"P": "Онтарио",
"R": "Манитоба",
"S": "Саскачеван",
"T": "Альберта",
"V": "Британская Колумбия",
"X": "Нунавут или Северо-Западные территории",
"Y": "Юкон"
}
Символы D, F, I,O, Q, U, W и Z в настоящее время не используются в почтовых индексах Канады.
Второй символ в почтовом индексе определяет, расположен ли интересующий нас адрес в городе или в сельской местности. Если на этом месте стоит ноль, значит, это сельская местность, иначе город.
Напишите программу, которая будет запрашивать почтовый индекс у пользователя и отображать провинцию или территорию, которой он принадлежит, с указанием того, городская это территория или сельская.
Например, если пользователь введет индекс T2N1N4, программа должна определить, что речь идет о городе на территории провинции Альберта. А индекс X0A1B2 соответствует сельской местности в провинции Нунавут или в Северо-Западных территориях.
Используйте словарь для хранения информации о соответствии первого символа индекса конкретной провинции или территории. Выведите на экран соответствующее сообщение.
Код:
# ввод данных
post_index = {
"A": "Ньюфаундленд",
"B": "Новая Шотландия",
"C": "Остров Принца Эдуарда",
"E": "Нью-Брансуик",
"G": "Квебек",
"H": "Квебек",
"J": "Квебек",
"K": "Онтарио",
"L": "Онтарио",
"M": "Онтарио",
"N": "Онтарио",
"P": "Онтарио",
"R": "Манитоба",
"S": "Саскачеван",
"T": "Альберта",
"V": "Британская Колумбия",
"X": "Нунавут или Северо-Западные территории", # здесь ключу соответствуют две территории (не может быть два одинаковых ключа)
"Y": "Юкон"
}
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
digits = "0123456789"
print()
while True:
index = input("%100s" % "Введите индекс Канады (6 символов): ")
index = index.upper()
if len(index) != 6:
print("%99s" % "Индекс не той длины.")
elif index[0] not in alphabet and index[2] not in alphabet and index[4] not in alphabet:
print("%99s" % "Первый, третий или пятый символ не буква.")
elif index[1] not in digits and index[3] not in digits and index[5] not in digits:
print("%99s" % "Второй, четвёртый или шестой символ не цифра.")
elif index[0] not in post_index: # внимательно, есть буквы, кот. не соответствуют ни одной провинции
print("%99s" % "Первый символ не соответствует ни одной провинции.")
elif index[1].isdigit() == False:
print("%99s" % "Второй символ не соответствует ни одной территории в провинции.")
elif index[1] == "0":
print("%99s" % f"Это провинция: {post_index[index[0]]}. Сельская местность.")
break
elif index[1] in "123456789":
print("%99s" % f"Это провинция: {post_index[index[0]]}. Городская территория.")
break