2010-10-12-Input_Output

advertisement
Доброгодин Евгений
Санкт-Петербургский Государственный Университет
Математико – Механический Факультет
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’
3)
x = 0.1
print repr(x)
#0.0000000000000001
4)
y = 40*40
l = [x,y]
print repr(l)
#[0.00…01, 1600]
О выводе.
• В 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)
#тоже самое что было, только выравнивание
по левому краю.
Строка форматирования:
• Число после ‘%’ определяет число символов
для выравнивания, а спецификатор
обозначает тип:
1) %d – целое число;
2) %f – число с точкой;
3) %s – строка;
4) %c –символ;
5) %e – число с мантиссой.
Функция zfill:
string.zfill(строка, ширина_поля)
• Пример:
import string
print string.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}
for city,distance in 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 параметра:
1) Строка, содержащая путь к файлу.
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’)
print f.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.
print f.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)
print f.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
Download