300 likes | 435 Views
Доброгодин Евгений Санкт-Петербургский Государственный Университет Математико – Механический Факультет 222 группа. ВВОД / ВЫВОД 4.10.2010. Форматированный ввод / вывод.
E N D
Доброгодин Евгений Санкт-Петербургский Государственный Университет Математико – Механический Факультет 222 группа. ВВОД/ВЫВОД 4.10.2010
Форматированный ввод/вывод • Форматированный ввод/вывод – совокупность операций, обеспечивающая ввод/вывод переменных с применением определенного формата ввода/вывода.
Способы форматированного ввода/вывода 1) print– печатает переменные и кортежи . (вывод в удобном формате) 2)str()– преобразовывает значение любого типа в строку. (для вывода аргументов инструкцией print) 3)repr()- для получения строкового представления. ( для вывода значений выражений в интерактивном режиме)
Примеры: 1) s = ‘hello\nworld’ print s #hello #world 2) s = ‘hello\nworld’ print repr(s) #’hello\nworld’ 4) y = 40*40 l = [x,y] printrepr(l) #[0.00…01, 1600] 3) x = 0.1 printrepr(x) #0.0000000000000001
О выводе. • В Python используется динамическая типизация: название переменной не несет данных о типе. • Можно узнать тип с помощью функции type().
Пример: s = ‘hello’ l = [1,2] t = (1,’two’) print type(s), type(l), type(t), #<type ‘str’><type ‘list’><type ‘tuple’>
Ввод. • Данные можно задавать вручную в любом месте и использовать их в дальнейшем. • Для ввода с клавиатуры используется функция raw_input(). Она выводит на экран приглашение и ожидает ввода пользователя.
Пример: x = raw_input(‘What is your name?’) print ‘Your name is’, x a = abs(int(raw_input(‘Insert value a:’) print ‘Absolute value a =‘, a
Еще о выводе: • Функции модуля string: string.rjust(), string.ljust(), string.center() • Эти функции принимают 2 параметра: • Сама строка. • Количество символов зарезервированных под строку. Если они длиннее, то выведется вся, чтобы обрезать string.rjust(s,n)[0:n].
Пример: 1) import string for x in xrange(1,5): print string.rjust(str(x*x),2), string.rjust(str(x*x*x), 3) 1 1 4 8 9 27 16 64 25 125
Пример: 2) import string s = ‘Beautiful is better than ugly’ print string.ljust(s,len(s))[3:6] #uti
Еще о выводе: • Для этой же цели можно использовать printсо строкой формата. Пример: for x in xrange(1,5): print‘%-2d %-3d’ % (x*x, x*x*x) #тоже самое что было, только выравнивание по левому краю.
Строка форматирования: • Число после ‘%’ определяет число символов для выравнивания, а спецификатор обозначает тип: • %d – целое число; • %f – число с точкой; • %s – строка; • %c –символ; • %e – число с мантиссой.
Функция zfill: string.zfill(строка, ширина_поля) • Пример: import string printstring.zfill(‘12’,5) #’00012’ print string.zfill(‘-3.14’,7) #’-003.14’
Аналог zfill: • %ширина_поля, число_знаков_после_точки • Пример: import math print‘ Пи примерно равно%5.3f’ % math.pi #Пи примерно равно 3.142
Еще о выводе: • Если в строке нужно вывести несколько значений, в качестве правого операнда используется кортеж: Пример: table = {‘Msk’ : 600, ‘SPb’ : 400, ‘Vologda’ : 100} forcity,distancein table.items(): print‘%-10s == >%10d’ % (city,distance) #SPb == > 400 #Msk == > 600 #Vologda == > 100
И снова о выводе: • Можно передавать аргументы функции print не по порядку, а по именам переменных. Пример: table = {‘Msk’ : 600, ‘SPb’ : 400, ‘Vologda’ : 100} print ‘Msk:%(Msk)d; Vologda:%(Vologda)d; SPb:%(SPb)d’ % table #Msk:600; Vologda:100; SPb:400
Операции с файлами: • open(‘имя’,’режим’)– открывает файловый объект для работы. 2 параметра: • Строка, содержащая путь к файлу. • Несколько символов, обозначающих режим работы с файлом.
Режимы работы с файлами: w - для записи (если уже существует, то содержимое исчезает); r – для чтения; a – для добавления (сохр. то что было и добавляется в конец); r+ - для записи/чтения (содержимое сохр); w+ - для записи/чтения (содержимое исчезает); rb – открытие двоичного файла для чтения; wb – открытие двоичного файла для записи.
Операции с файлами: • read(n) – чтение из файла, если аргумент отсутствует, то считывается все, в ином случае не более чем n байт. • readline() – считывает строку файла. Возвращаемая строка всегда заканчивается символом конца строки \n, за исключением последней строки. Пустая строка представлена как ’\n’
Операции с файлами: • readlines() – считывает все содержимое файла и возвращает список строк. • write(s) – записывает содержимое строки s в файл.
Операции с файлами: • seek(offset[,from_what]) – перемещает указатель текущего положения путем прибавления offset к точке отсчета. • Точка отсчета выбирается в зависимости от аргумента from_what: 0 – начало(по умолчанию), 1 – текущее положение, 2 – конец.
Операции с файлами: • tell() – возвращает текущую позицию. • сlose() – закрытие файла. При попытке использовать закрытый файл для операций чтения/записи генерируется исключение ValueError: I/O operation on closed file.
Примеры: 1) f = open(‘C://input.txt’,’r’) printf.read() # This is the first line of the file. #Second line of the file. f.close() f = open('D://tmp/workfile.txt','r') for line in f: print line #This is the first line of the file. #Second line of the file. printf.readlines() # ['This is the first line of the file.\n', 'Second line of the file.'] f.close()
Примеры: 3) f = open(‘C://input.txt’,’r+’) f.write(‘0123456789abcdef’) f.seek(5) f.seek(-2,1) printf.read(1) f.close() #3
Модуль pickle: • Сохранение в файл любых объектов (списки, кортежи, словари) доступно с помощью модуля pickle. Сохранение объекта х в файловый объект f: pickle.dump(x,f) Восстановление объекта из файла: x = pickle.load(f)
Случайный и Последовательный Доступ: • Случайный: возможность доступа к любому элементу последовательности за одинаковое время. Время доступа к элементу О(1). • Последовательный: доступ в определенной последовательности. Время доступа к элементу О(k), где k номер эл-та. • Пример: диск и кассета (выбор трека и перемотка).
Случайный и Последовательный Доступ:
Содержание: • Форматированный Ввод/Вывод. • Чтение и Запись Файлов. • Методы Объектов-файлов. • Модуль Pickle. • Random and Sequential Access.
Используемая литература: • Г.Россум «Язык программирования Python» • Wikipedia.org