Вычисление количества дней между датами и определение дат

Задача 1. Пользователь вводит две даты. Определить количество прошедших дней между ними.

import datetime
 
a = input('Первая дата (гггг-мм-дд): ')
b = input('Вторая дата (гггг-мм-дд): ')
a = a.split('-')
b = b.split('-')
aa = datetime.date(int(a[0]),int(a[1]),int(a[2]))
bb = datetime.date(int(b[0]),int(b[1]),int(b[2]))
cc = aa-bb
print(cc) # output days and time
dd = str(cc)
print(dd.split()[0]) # only days

Выполнение скрипта:

Теги

Методы списка

  • append() - добавляет элемент в конец списка.
    >>> lst = ['a', 45, 89, 'who']
    >>> lst.append(67)
    >>> lst
    ['a', 45, 89, 'who', 67]
  • extend() - добавляет в конец списка список-аргумент.
    >>> li = ['a1', (1,2,3)]
    >>> lst.extend(li)
    >>> lst
    ['a', 45, 89, 'who', 67, 'a1', (1, 2, 3)]
    >>> li.extend([8,3])
    >>> li
    ['a1', (1, 2, 3), 8, 3]
    >>> lst
    ['a', 45, 89, 'who', 67, 'a1', (1, 2, 3)]

Теги

Извлечение данных из словаря

>>> d = {'a':1, 'b':2, 'c':22, 'ap':'>'}
>>> for i in d:   # ключи
...     print(i)
... 
a
ap
c
b
>>> for i in d:   # ключи
...     print(d[i])   # но по ключам можно получить значения
... 
1
>
22
2
>>> for i in d.keys():   # Ключи, здесь не актуально, но может использоваться...
...     print(i)         # ...для получения всех ключей в выражении
... 
a
ap
c
b
>>> tuple(d.keys())   # Например (см. пояснение выше)
('a', 'ap', 'c', 'b')
>>> for i in d.values(): # Значения
...     print(i)
...

Теги

Генераторы списков

Допустим, имеется список, каждый элемент которого надо изменить на одну и туже величину. Это можно сделать очевидным, но далеко не лучшим способом:

>>> lst1
[4, 10, 7, 3, 8, 6, 4, 4, 8, 7, 7, 5, 4, 3, 7, 6, 7, 4, 5, 10]
>>> i = 0
>>> for item in lst1:
...     lst1[i] = item + 10
...     i += 1
... 
>>> lst1
[14, 20, 17, 13, 18, 16, 14, 14, 18, 17, 17, 15, 14, 13, 17, 16, 17, 14, 15, 20]

Есть более "хитрый" способ:

Работа с файловой системой

В модуле os есть методы для работы с файловой системой.

Узнать текущий каталог:

>>> os.getcwd()
'/home/pl/Documents/python'

Создать каталог:

>>> os.mkdir('TEXT')

Создать дерево каталогов:

>>> os.makedirs('ONE/TWO/THREE')
>>> os.listdir('ONE')
['TWO']
>>> os.listdir('ONE/TWO')
['THREE']

Список содержимого каталога (нерекурсивный):

Теги

Чтение данных из файла и запись в файл

Создание файла

Чтобы создать файл с помощью языка программирования Python, надо его открыть в режиме записи ('w', 'wb') или дозаписи ('a', 'ab').

f2 = open("text2.txt", 'w')

Объект, полученный в результате вызова функции open(), не обязательно связывать с переменной. В таком случае файл будет создан, но недоступен для программы.

Теги

Вставка элементов в сортированный список

Модуль bisect позволяет вставлять элемент в сортированный по возрастанию список, не нарушая сортировки.

В модуле bisect есть два основных метода:

Поиск квадратных уравнений, имеющих решение

# Программа принимает от пользователя диапазоны 
# для коэффициентов a,b,c квадратного уравнения.
# Перебирает все варианты коэффициентов и
# определяет те уравнения, которые имеют решение.
 
# Здесь прототип с текстовым интерфейсом.

Теги

Скрипт вывода методов типа

Методы типа можно увидеть, если выполнить команду dir([type]). В качестве аргумента можно указать тип (например, str, list и др.), переменную, передать данные непостредственно (число, строку и др.).

Теги