Занятие 10.
Краткое содержание: dict и всё, что с ним связано. Важные частные случаи работы со строками: русский язык, кодировки, специальные типы строк.
План рассказа
- Что такое dict
Основные методы работы с dict:
1 >>> x = { 1: 2, "3": [4, 5] } 2 >>> x[1] 3 2 4 >>> x["3"] 5 [4, 5] 6 >>> x["3"][0] 7 4 8 >>> x[(1,2,3)] = 4 9 >>> x 10 {1: 2, '3': [4, 5], (1, 2, 3): 4} 11 >>> x.keys() 12 [1, '3', (1, 2, 3)] 13 >>> x.values() 14 [2, [4, 5], 4] 15 >>> x.items() 16 [(1, 2), ('3', [4, 5]), ((1, 2, 3), 4)] 17 >>> 1 in x 18 True 19 >>> 2 in x 20 False 21 >>> for i in x: print i, x[i] 22 ... 23 1 2 24 3 [4, 5] 25 (1, 2, 3) 4 26 >>> for k, v in x.iteritems(): print k, v 27 ... 28 1 2 29 3 [4, 5] 30 (1, 2, 3) 4
Один очень важный частный случай операции % над строками или почему не стоит пользоваться string.format:
1 >>> data = { "title": "Hello, world", "text": "This is my page." } 2 >>> template = """<html> 3 ... <head><title>%(title)s</title></head> 4 ... <body><p>%(text)s</p></body> 5 ... </html>""" 6 >>> print template % data 7 <html> 8 <head><title>Hello, world</title></head> 9 <body><p>This is my page.</p></body> 10 </html>
- Русский язык
- Суть проблемы: где могут встречаться кодировки?
ввод-вывод программы (например, print, sys.stdin.read, open().read(), optparse, urllib2) – кодировки в разных местах могут быть разные
- строки в теле программы
- Существуют настройки кодировок в системе (в UNIX команда locale), они разные на разных системах
- Как с этим бороться в python:
Декларация кодировки в тексте программы, e.g:
- Добиться, чтобы внутреннее представление строк в интерпретаторе всегда было уникодным
- Правильно конвертировать строки на вводе-выводе. (Surprize! Это почти всегда делается автоматически! locale, кодировки в протоколе http, etc)
- И всё-таки, подумайте десять раз, прежде, чем использовать русский язык.
- Суть проблемы: где могут встречаться кодировки?
- Типы строк в python:
уникодные строки: u"Привет"
строки, в которых игнорируются \: r">>> print '\n'"
короткие строки (требуют \ перед переносом строк): "...", '+'
длинные строки: """...""", '''-'''
Задачи
- Напишите программу "привет, мир" (русскоязычную версию). Проверьте её работоспособность и в windows, и на kodomo.
См. зачётное задание