Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
18
Добавлен:
09.08.2021
Размер:
198.6 Кб
Скачать

Python, ПОАС, ОКЗ, ИКЗ 21 и протокол по теме 6

#Общее контрольное задание по Теме 6 import random

i=1; kort=() while i<=125:

kort=kort+(str(random.randint(6,56)),)

i+=1 spis=['Аб','Ла','По','Му','Че'] import pickle fp=open('two.bin','wb') pickle.dump(kort,fp) pickle.dump(spis,fp) fp.close() fp=open('two.bin','rb') obj1=pickle.load(fp) obj2=pickle.load(fp) fp.close()

if obj1==kort:

print('Исходный и считанный кортежи одинаковы') else: print('Исходный и считанный кортежи различаются') if obj2==spis:

print('Исходный и считанный списки одинаковы') else: print('Исходный и считанный списки различаются') k=0;nam=[];znach=[]

while k<125: nam.append('m'+str(int(k/5)+1)) znach.append(list(kort[k:k+5])) k+=5

for x, y in zip(nam,znach): globals()[x]=y print(x,'=',y)

#Индивидуальное контрольное задание № 21 по Теме 6 import os

os.chdir('d:\\')

#Пункт 1 kort=('Москва','Тула','Рязань','Красноярск','Новосибирск','Ярославль','Казань','Кострома') import random

spis=random.sample(kort,5)

#Пункт 2

fl=input('Введите имя текстового файла (без расширения):') i=0

import sys vr_out=sys.stdout fc=open(fl+'.txt','w') sys.stdout=fc

while len(spis)-i>=2:

print(str(spis[i])+' '+str(spis[i+1])) i+=2

else:

if len(spis)%2!=0: print(str(spis[i]))

fc.close() sys.stdout=vr_out

#Пункт 3

chisl=[random.randint(100,200) for k in range(30)] ch=0

for n in chisl:

if n>=130 and n<=170: ch+=1

print('В интервале',ch,'чисел')

#Пункт 4 chetn=0

1

for m in chisl: if m%2==0: chetn+=1

nechetn=len(chisl)-chetn

print('В списке',chetn,'четных чисел и',nechetn,'нечетных чисел')

#Пункт 5

if os.path.isfile(fl+'.txt'): tmp_in = sys.stdin

fd = open(fl+'.txt') sys.stdin = fd print('Города России') while True:

try:

line = input () print(line)

except EOFError: break

fd.close() sys.stdin=tmp_in

else: print('Файла ',fl,'.txt не существует',sep='')

#Протокол по Теме 6

#Пункт 2.1

>>>stroka='Автоматизированная система управления'

>>>stroka

'Автоматизированная система управления'

#Пункт 2.2

>>>fff=234.5;gg='Значение температуры = '

>>>print(gg, fff)

Значение температуры = 234.5

>>>print(gg, fff, sep='/')

Значение температуры = /234.5

>>>print(gg, fff,sep='/',end='***'); print('____')

Значение температуры = /234.5***____

>>>print()

>>>print(""" Здесь может выводиться большой текст, занимающий несколько строк""")

Здесь может выводиться большой текст, занимающий несколько строк

>>> print("Здесь может выводиться", "большой текст,", "занимающий несколько строк")

Здесь может выводиться большой текст, занимающий несколько строк

#В первом случае текст выводится на 3 строки, так как он является одной символьной строкой, записанной на трех строках. Во втором случае текст представляет собой 3 символьные строки, которые указаны через запятые для функции print, поэтому эти символьные строки выводятся на одной строке (то, что символьные строки записаны на 3 строках для print, не влияет на форму их вывода).

>>># -*- coding: utf-8 -*-

#Пункт 2.3

>>>import sys

>>>sys.stdout.write('Функция write')

Функция write13

>>>sys.stdout.write('Функция write\n')

Функция write 14

#Пункт 3

>>>psw=input('Введите пароль:')

Введите пароль:abc123

>>>print(psw)

abc123

2

>>>type(psw) <class 'str'>

# psw - символьная строка.

>>>while True:

znach=float(input('Задайте коэф.усиления = ')) if znach<17.5 or znach>23.8:

print('Ошибка!')

else:

break

Задайте коэф.усиления = 15.4 Ошибка!

Задайте коэф.усиления = 21.6

#При вводе значения 15.4 выполняется условие 15.4<17.5, поэтому выводится сообщение об ошибке. При вводе значения 21.6 ни одно из условий 21.6<17.5 и 21.6>23.8 не выполняется, поэтому происходит выход из цикла по инструкции break.

>>>import math

>>>print(eval(input('введите выражение для расчета = ')))

введите выражение для расчета = math.log10(23/(1+math.exp(-3.24))) 1.34504378689765

# 1.34504378689765 - выводимый на экран результат расчета выражения, введенного пользователем.

#Пункт 4.1

>>>import os

>>>os.getcwd()

'C:\\Users\\qwer\\AppData\\Local\\Programs\\Python\\Python37'

>>>Family=os.getcwd()

>>>print(Family)

C:\Users\qwer\AppData\Local\Programs\Python\Python37

#При отображении значения переменной с помощью функции print каждый двойной обратный слэш стал одним.

>>>os.chdir('d:\\Family\\Tema6\\')

>>>os.getcwd()

'd:\\Family\\Tema6'

>>> help(os.mkdir)

Help on built-in function mkdir in module nt:

mkdir(path, mode=511, *, dir_fd=None) Create a directory.

If dir_fd is not None, it should be a file descriptor open to a directory, and path should be relative; path will then be relative to that directory.

dir_fd may not be implemented on your platform.

If it is unavailable, using it will raise a NotImplementedError.

The mode argument is ignored on Windows.

# os.mkdir(path) позволяет создать каталог с указанным именем и расположением. Для создания каталога в рабочем каталоге указывается только имя создаваемого каталога.

>>> os.mkdir('test')

#В рабочем каталоге создан каталог test.

>>> help(os.rmdir)

Help on built-in function rmdir in module nt:

rmdir(path, *, dir_fd=None) Remove a directory.

If dir_fd is not None, it should be a file descriptor open to a directory, and path should be relative; path will then be relative to that directory.

dir_fd may not be implemented on your platform.

If it is unavailable, using it will raise a NotImplementedError.

# os.rmdir(path) позволяет удалить каталог с указанным именем и расположением. Для удаления каталога из рабочего каталога указывается только имя удаляемого каталога.

>>> os.rmdir('test')

#Из рабочего каталога удален каталог test.

>>> help(os.listdir)

Help on built-in function listdir in module nt:

3

listdir(path=None)

Return a list containing the names of the files in the directory.

path can be specified as either str, bytes, or a path-like object. If path is bytes, the filenames returned will also be bytes; in all other circumstances

the filenames returned will be str. If path is None, uses the path='.'.

On some platforms, path may also be specified as an open file descriptor;\ the file descriptor must refer to a directory.

If this functionality is unavailable, using it raises NotImplementedError.

The list is in arbitrary order. It does not include the special entries '.' and '..' even if they are present in the directory.

# os.listdir(path) показывает список файлов и директорий в указанном каталоге. При отсутствии входного параметра возвращает список из файлов и директорий в рабочем каталоге.

>>> os.listdir()

['oplata.DBF', 'ПОАС_Отчет6.txt']

#В рабочем каталоге есть файлы ПОАС_Отчет6.txt и oplata.DBF.

>>> help(os.path.isdir)

Help on built-in function _isdir in module nt:

_isdir(path, /)

Return true if the pathname refers to an existing directory.

# os.path.isdir(path) возвращает True, если указанный путь существует.

>>>os.path.isdir('d:\\Family')

True

#На диске d есть каталог Family.

>>>os.path.isdir('c:\\Family') False

#На диске c нет каталога Family.

>>>fil=os.path.abspath("oplata.dbf")

>>>fil 'd:\\Family\\Tema6\\oplata.dbf'

>>>fil2=os.path.abspath("ПОАС_Отчет6.txt")

>>>fil2

'd:\\Family\\Tema6\\ПОАС_Отчет6.txt'

>>>drkt=os.path.dirname(fil)

>>>drkt

'd:\\Family\\Tema6'

>>>nam=os.path.basename(fil)

>>>nam

'oplata.dbf'

>>> help(os.path.split)

Help on function split in module ntpath:

split(p)

Split a pathname.

Return tuple (head, tail) where tail is everything after the final slash.

Either part may be empty.

# os.path.split(p) возвращает кортеж из двух значений - символьных строк для указанного пути, где первое значение - все до последнего двойного обратного слэша, второе значение - все после последнего слэша.

>>>os.path.split('d:\\Family\\Tema6\\ПОАС_Отчет6.txt') ('d:\\Family\\Tema6', 'ПОАС_Отчет6.txt')

>>>os.path.exists('d:\\Family\\Tema6')

True

#Указанный путь существует.

>>>os.path.exists('c:\\Family\\Tema6') False

#Указанного пути не существует.

>>>os.path.isfile('d:\\Family\\Tema6\\ПОАС_Отчет6.txt')

4

True

#Файл с указанным расположением существует.

>>>os.path.isfile(fil)

True

#Файл с указанным расположением существует.

>>>os.path.isfile(os.path.dirname(fil)+'fil1.txt') False

#Файла Tema6fil1.txt с расположением d:\\Family\\Tema6fil1.txt не существует.

>>>os.path.isfile(os.path.dirname(fil)+'\\oplata.DBF')

True

#Файл с указанным расположением существует.

#Пункт 4.3

>>> help(open)

#В результате была выведена справочная информация о функции open.

#У функции open 8 формальных аргументов, некоторые из которых могут не указываться при вызове функции:

#первый - строка, содержащая имя и путь открываемого файла,

#второй - режим, в котором файл будет открываться,

#третий - способ организации буферизации,

#четвертый - кодировка, которая нужна при чтении файла в текстовом режиме,

#пятый - режим, в котором будут обрабатываться ошибки кодирования/декодирования для текстового файла,

#шестой - строка, определяющая режим работы универсальных переводов строк для текстовых файлов,

#седьмой - флаг необходимости закрытия файлового дескриптора,

#восьмой - пользовательский объект, поддерживающий вызов, который следует использовать для открытия файла.

>>>fp=open(file=drkt+'\\zapis1.txt',mode='w')

>>>type(fp)

<class '_io.TextIOWrapper'>

>>> dir(fp)

['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'reconfigure', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'write_through', 'writelines']

>>>fp1=open(drkt+'\\zapis2.bin',mode='wb+')

#Пункт 4.4

>>>fp.close()

>>>fp1.close()

#При открытии в текстовом редакторе файлов zapis1.txt и zapis2.bin видно, что файлы не содержат данных.

#Пункт 4.5

>>>sps=list(range(1,13))

>>>fp2=open('zapis3.txt','w')

>>>fp2.write(str(sps[:4])+'\n')

13

>>>fp2.write(str(sps[4:8])+'\n')

13

>>>fp2.write(str(sps[8:])+'\n')

16

>>>fp2.close()

#Содержание файла zapis3.txt: [1, 2, 3, 4] [5, 6, 7, 8] [9, 10, 11, 12]

#Конец содержания zapis3.txt.

>>>sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]]

>>>fp3=open('zapis4.txt','w')

>>>for i in range(len(sps3)):

stroka4=sps3[i][0]+' '+str(sps3[i][1]) fp3.write(stroka4)

11

11

12

>>> fp3.close()

#Содержание файла zapis4.txt:

5

Иванов И. 1Петров П. 2Сидоров С. 3

#Конец содержания zapis4.txt.

#Файл zapis4.txt содержит значения-строки без разделителей между списками-элементами списка sps3, что затрудняет понимание информации.

>>>gh=open('zapis5.txt','w')

>>>for r in sps3:

gh.write(r[0]+' '+str(r[1])+'\n')

12

12

13

>>> gh.close()

#Содержание файла zapis5.txt: Иванов И. 1 Петров П. 2 Сидоров С. 3

#Конец содержания zapis5.txt.

#Файл zapis5.txt содержит значения-строки списков, вложенных в список sps3, причем символьная строка для каждого списка начинается с новой строки в отличие от расположения в файле zapis4.txt.

#Запись в файл при помощи одной строки с циклом по перечислению. Результат при этом остается такой же, как от предыдущего цикла:

>>>gh=open('zapis5.txt','w')

>>>for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n')

12

12

13

>>>gh.close()

#Пункт 4.6

>>>sps1=[]

>>>fp=open('zapis3.txt')

>>>for stroka in fp: stroka=stroka.rstrip('\n') stroka=stroka.replace('[','') stroka=stroka.replace(']','') sps1=sps1+stroka.split(',')

>>>fp.close()

>>>print(sps1)

['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']

#Полученный список отличается от списка sps тем, что элементы sps - числа, а элементы полученного списка - символьные строки, содержащие числа.

#Чтобы полученный список совпал с исходным, нужно осуществить следующий цикл по перечислению:

>>>for i in sps1: sps1[sps1.index(i)]=int(sps1[sps1.index(i)])

>>>print(sps1)

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

#Проверка совпадения списков:

>>>sps==sps1

True

#Списки совпадают.

#Пункт 4.7

>>>fp=open('zapis3.txt')

>>>stroka1=fp.read(12)

>>>stroka2=fp.read()

>>>fp.close()

>>>print(stroka1)

[1, 2, 3, 4]

>>> print(stroka2)

[5, 6, 7, 8] [9, 10, 11, 12]

6

#Пункт 4.8

>>> help(fp.readline)

Help on built-in function readline:

readline(size=-1, /) method of _io.TextIOWrapper instance Read until newline or EOF.

Returns an empty string if EOF is hit immediately.

#Метод readline считывает из файла одну строку и возвращает ее.

>>> fp=open('zapis3.txt')

#Считывание первой строки:

>>>fp.readline() '[1, 2, 3, 4]\n'

#Считывание второй строки:

>>>fp.readline()

'[5, 6, 7, 8]\n'

#Считывание третьей строки:

>>>fp.readline() '[9, 10, 11, 12]\n'

#Считывание четвертой строки:

>>>fp.readline()

''

#Метод вернул пустую строку, следовательно, достигнут конец файла.

>>>fp.close()

>>>help(fp.readlines)

Help on built-in function readlines:

readlines(hint=-1, /) method of _io.TextIOWrapper instance Return a list of lines from the stream.

hint can be specified to control the number of lines read: no more lines will be read if the total size (in bytes/characters) of all

lines so far exceeds hint.

#Метод readlines считывает из файла все строки в список и возвращает его.

>>>fp=open('zapis3.txt')

>>>fp.readlines()

['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n']

#Файл fp содержит 3 строки, которые метод вернул в виде элементов списка.

>>>fp.close()

#Пункт 4.9

>>>import pickle

>>>mnoz1={'pen','book','pen','iPhone','table','book'}

>>>fp=open('zapis6.mnz','wb')

>>>pickle.dump(mnoz1,fp)

>>>fp.close()

#Содержание файла zapis6.mnz:

Ђ cbuiltins set

q ]q (X bookq X penq X iPhoneq X tableq e…q Rq .

#Конец содержания zapis6.mnz.

>>>fp=open('zapis6.mnz','rb')

>>>mnoz2=pickle.load(fp)

>>>fp.close()

>>>print(mnoz2)

{'book', 'iPhone', 'table', 'pen'}

# mnoz2 содержит элементы из mnoz1. Переменные mnoz1 и mnoz2 - множества, то есть они содержат неповторяющиеся элементы в случайном порядке. Элементы 'book','pen' записаны 2 раза при задании mnoz1, и остаются в множестве в единственном экземпляре.

>>>mnoz1==mnoz2

True

#Следовательно, mnoz1 и mnoz2 совпадают.

>>>fp=open('zapis7.2ob','wb')

>>>pickle.dump(mnoz1,fp)

7

>>>pickle.dump(sps3,fp)

>>>fp.close()

>>>fp=open('zapis7.2ob','rb')

>>>obj1=pickle.load(fp)

>>>obj2=pickle.load(fp)

>>>fp.close()

>>>print(obj1)

{'book', 'iPhone', 'table', 'pen'}

#obj1 совпадает с mnoz1.

>>> print(obj2)

[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]

#obj2 совпадает с sps3.

#Пункт 5

>>>import sys

>>>vr_out=sys.stdout

>>>fc=open('Stroka.txt','w')

>>>sys.stdout=fc

>>>print('запись строки в файл')

>>>sys.stdout=vr_out

>>>print('запись строки на экран') запись строки на экран

>>>fc.close()

#Содержание файла Stroka.txt: запись строки в файл

#Конец содержания Stroka.txt.

>>>tmp_in = sys.stdin

>>>fd = open("Stroka.txt", "r")

>>>sys.stdin = fd

>>>sys.stdin

<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='cp1251'>

>>> while True: try:

line = input () #Считываем из файла строку print(line) # Отображаем считанное

except EOFError: break

запись строки в файл

>>>fd.close()

>>>sys.stdin=tmp_in

8

Соседние файлы в папке Лабораторные_Python