Учебный сайт Мухалевой Лизаветы

Скрипт №1 (Python)

Подробный разбор скрипта.

       Данный скрипт отлично демонстрирует, как работает специальный тип данных - словарь (dict).
Первым делом создаём словарь, элементы которого состоят из ключа (key) - название месяца - и значения (value) - количества дней в месяце.

months = {"january" : 31, "february" : 28, "leap_february" : 29, "march" : 31, "april" : 30, "may" : 31, "june" : 30, "july" : 31, "august" : 31, "september" : 30, "october" : 31, "november" : 30, "december" : 31}

       Чтобы скрипт смог найти значение элемента, нам нужно ввести ему ключ. Это достигается с помощью функции raw_input. Но может возникнуть проблема, если пользователь введёт названия месяцев с большой буквы или просто большими буквами - скрипт не сможет найти значение, потому что ключи прописаны лишь для строчных букв. Чтобы этот казус не произошёл, вводим функцию key.lower(), которая заменит все заглавные буквы в введённой строке на строчные. key = str(key) просто преобразует входящие данные в строку, так как функция raw_input читает только строки. Функция months.keys() возвращает список ключей словаря.

key = raw_input("Please enter month's name:")
key = key.lower()
key = str(key)
months_list = months.keys()

       Далее идёт поиск нашего месяца в списке ключей. Сначала разберёмся со случаем, если данный месяц найден.

  • Год бывает високосный и нет, а это напрямую влияет на количество дней в феврале. Поэтому условие "Данный ключ имеется в списке" подразделяется ещё на два: февраль ли введённый месяц или нет. Если февраль, то опять с помощью функции raw_input интересуемся у пользователя, високосный ли год. При положительном ответе ("yes") выводим количество дней в феврале високосного года. В моём скрипте для високосного февраля введен отдельный элемент - leap_february, - поэтому выводить значение нужно именно от него, а не от обычного февраля. Если же ответ был отрицательный, то выводится количество дней в обычном феврале. Это будет значение элемента "february": 28.
    if key in months_list:
    	if key == "february":
    		year = raw_input("Is a year leap? Enter only yes or no.")
    		if year == "yes":
    			print months["leap_february"]
    		else:
     			print months[key]
    Если введённый ключ не является февралём, то скрипт обращается к условию else и сразу выводит значение элемента.
    if key in months_list:
    	if key == "february":
    		year = raw_input("Is a year leap? Enter only yes or no.")
    		if year == "yes":
    			print months["leap_february"]
    		else:
     			print months[key]
    	else:
    		print months[key]
  • Ситуация, когда месяц не найден в списке ключей, гораздо проще. Скрипт сразу обращается к условию else и выводит на экран сообщение о том, что данного месяца не существует.
    if key in months_list:
    	if key == "february":
    		year = raw_input("Is a year leap? Enter only yes or no.")
    		if year == "yes":
    			print months["leap_february"]
    		else:
     			print months[key]
    	else:
    		print months[key]
    else:
    	print "The month with such name does not exist!"

       На этом скрипт заканчивается. В итоге в диалоговом окне Far'а Вы получите следующее:


Вывод скрипта

Рисунок 1. Результат выполнения скрипта.

© Mukhaleva Elizaveta, FBB MSU, 2013
Дата последнего изменения: 21.12.2013

Valid HTML 4.01 Strict Правильный CSS!