ответвлено от main/python-labs
отчет
Этот коммит содержится в:
@@ -26,33 +26,45 @@
|
||||
>>>fff=234.5;gg='Значение температуры = '
|
||||
>>>print(gg, fff) #Можно вывести несколько объектов за одно обращение к функции
|
||||
Значение температуры = 234.5
|
||||
|
||||
По умолчанию выводимые объекты разделяются одним пробелом. Если нужен другой разделитель его можно указать в отдельном аргументе sep:
|
||||
|
||||
>>>print(gg, fff, sep="\n")
|
||||
|
||||
Значение температуры =
|
||||
234.5
|
||||
|
||||
После вывода автоматически осуществляется переход на другую строку. Если курсор надо оставить в той же строке, то следует использовать еще один аргумент:
|
||||
|
||||
>>>print(gg, fff,sep='\n',end='***'); print('____')
|
||||
|
||||
Значение температуры =
|
||||
234.5***____
|
||||
|
||||
После end= надо указать какими символами должна закончиться выводимая строка или указать пустую строку. Если в какой-то момент требуется просто перейти на новую строку, можно использовать следующее обращение к функции:
|
||||
|
||||
>>>print()
|
||||
|
||||
|
||||
Оператор вывода может располагаться на нескольких строках с использованием тройных кавычек:
|
||||
|
||||
>>>print(""" Здесь может выводиться
|
||||
большой текст,
|
||||
занимающий несколько строк""") #В этом варианте текст выводится в три отдельные строки как и при вводе команды, благодаря троиным кавычкам.
|
||||
занимающий несколько строк""") #В этом варианте текст выводится в три отдельные строки как и при вводе команды, благодаря тройным кавычкам.
|
||||
|
||||
Здесь может выводиться
|
||||
большой текст,
|
||||
занимающий несколько строк
|
||||
>>>print("Здесь может выводиться",
|
||||
"большой текст,",
|
||||
"занимающий несколько строк") #В данном случае текст выводится подрят в одну строку.
|
||||
"большой текст,",
|
||||
"занимающий несколько строк") #В данном случае текст выводится подрят в одну строку.
|
||||
|
||||
Здесь может выводиться большой текст, занимающий несколько строк
|
||||
|
||||
Разница в двух случаях состоит в том, что в первом случае тройные кавычки воспроизводят текст ровно так, как он был введен. Во втором случае три выводимых объекта-строки перечислены через запятую и выведены как три объекта, разделённые пробелом.
|
||||
|
||||
# 2.3 Изучение вывода данных с помощью функции write
|
||||
|
||||
Был испортирован модуль sys, и использована функция write, которая записывает и выводит текст, а так же возвращается количество байтов, записанных в строку.
|
||||
Был импортирован модуль sys, и использована функция write, которая записывает и выводит текст, а так же возвращается количество байтов, записанных в строку.
|
||||
|
||||
>>> import sys
|
||||
>>> sys.stdout.write('Функция write')
|
||||
@@ -67,15 +79,7 @@
|
||||
|
||||
Так же был создан цикл, который просит пользователя ввести значение до тех пор, пока оно не будет удовлетворять определенному интервалу, а потом выводит это значение на дисплей.
|
||||
|
||||
Также с помощью функции eval Была создана команда, благодаря которой выражение, введенное пользователен с консоли исполняется, и выдается результат расчета.
|
||||
|
||||
>>> import sys
|
||||
>>> sys.stdout.write('Функция write')
|
||||
Функция write13
|
||||
>>> sys.stdout.write('Функция write\n')
|
||||
Функция write
|
||||
14
|
||||
|
||||
Также с помощью функции eval Была создана команда, благодаря которой выражение, введенное пользователем с консоли исполняется, и выдается результат расчета.
|
||||
|
||||
>>> psw=input('Введите пароль:')
|
||||
Введите пароль:398fhg
|
||||
@@ -84,6 +88,7 @@
|
||||
>>> type(psw)
|
||||
<class 'str'>
|
||||
|
||||
input() всегда возвращает строку. Если нужна не строка, то input надо поместить внутрь функции, изменяющей тип данных.
|
||||
|
||||
>>> while True:
|
||||
... znach=float(input('Задайте коэф.усиления = '))
|
||||
@@ -105,6 +110,8 @@
|
||||
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
|
||||
1.34504378689765
|
||||
|
||||
Введенная строка преобразуется в исполнительные инструкции с помощью eval(), далее они выполняются и результат выводится на экран. Строка имеет тип, соответствующий результату вычислений. В данном случае - float.
|
||||
|
||||
# 4 Изучение различных способов чтения данных из файла и записи в файл
|
||||
|
||||
Были изучены и применены разные способы чтения и записи данных.
|
||||
@@ -145,20 +152,31 @@ path.isdir - возвращает true, если папка является с
|
||||
>>> os.path.isdir("new_folder")
|
||||
False
|
||||
|
||||
Функция преобразования пути, переданного в качестве аргумента, в абсолютный путь - os.path.abspath(). Абсолютный путь — это полный путь к файлу или каталогу, начиная от корневого каталога системы, а не относительный путь (который зависит от текущего рабочего каталога).
|
||||
|
||||
>>> fil=os.path.abspath("report.txt")
|
||||
>>> fil
|
||||
'C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6\\report.txt'
|
||||
|
||||
Функции отделения из абсолютного пути только каталога/только имени файла - dirname/basename:
|
||||
|
||||
>>> drkt=os.path.dirname(fil)
|
||||
>>> drkt
|
||||
'C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6'
|
||||
>>> name = os.path.basename(fil)
|
||||
>>> name
|
||||
'report.txt'
|
||||
|
||||
Функция разделения на кортеж из пути и из имени файла - split:
|
||||
|
||||
>>> head, tail = os.path.split(fil)
|
||||
>>> head
|
||||
'C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6'
|
||||
>>> tail
|
||||
'report.txt'
|
||||
|
||||
Функция проверки существования пути, заданного в символьной строке - exists:
|
||||
|
||||
>>> os.path.exists(g)
|
||||
True
|
||||
>>> os.path.exists('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA7')
|
||||
@@ -166,6 +184,13 @@ path.isdir - возвращает true, если папка является с
|
||||
>>> os.path.exists('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA11')
|
||||
False
|
||||
|
||||
Функция проверки существования файла - isfile:
|
||||
|
||||
>>> os.path.isfile('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6\\report.txt') # Такой файл есть
|
||||
True
|
||||
>>> os.path.isfile('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6\\figure_1.png") # Такого файла нет
|
||||
False
|
||||
|
||||
# 4.2 Изучение обобщенного процесса работы с файлами
|
||||
|
||||
Было определено, что для обмена данными с файлами необходимо:
|
||||
@@ -187,6 +212,8 @@ path.isdir - возвращает true, если папка является с
|
||||
>>> type(fp)
|
||||
<class '_io.TextIOWrapper'>
|
||||
|
||||
fp – это файловый объект. Он сохраняет ссылку на открываемый файл и позволяет в дальнейшем ссылаться на файл, не указывая путь и имя открытого файла.
|
||||
|
||||
>>> 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__', '__module__', '__ne__', '__new__', '__next__', '__reduce__',
|
||||
@@ -194,6 +221,10 @@ path.isdir - возвращает true, если папка является с
|
||||
'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']
|
||||
|
||||
Если требуются другие операции с открываемым файлом, то для второго аргумента «mode=…» могут быть заданы следующие значения: w – запись с созданием нового файла или перезапись существующего файла, w+ - чтение и запись/перезапись файла, r – только чтение (это значение - по умолчанию), r+ - чтение и/или запись в существующий файл, a – запись в конец существующего файла или, если его нет, запись с созданием файла, a+ - то же, что и в «a», но с возможностью чтения из файла.
|
||||
|
||||
Создаваемые и читаемые файлы могут быть бинарными или символьными. При открытии бинарного файла к указанным выше буквам в аргументе-цели надо добавить символ «b»:
|
||||
|
||||
>>> fp1=open(drkt+'\\zapis2.bin',mode='wb+')
|
||||
|
||||
# 4.4 Изучение закрытия файла
|
||||
@@ -219,6 +250,8 @@ path.isdir - возвращает true, если папка является с
|
||||
16
|
||||
>>> fp2.close()
|
||||
|
||||
Метод выполняет действия по записи данных в файл, но возвращает количество записанных символов.
|
||||
|
||||

|
||||
|
||||
Далее был создан список из трех списков и с помощью цикла for все элементы списка были вписаны в файл в одну строку.
|
||||
@@ -282,14 +315,15 @@ path.isdir - возвращает true, если папка является с
|
||||
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
||||
>>> sps1
|
||||
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
|
||||
>>> sps2=[]
|
||||
>>> for i in sps1:
|
||||
... sps2.append(int(i))
|
||||
...
|
||||
...
|
||||
|
||||
Здесь, перед занесением строки в список с помощью метода rstrip, из неё удаляется символ конца строки (если не задавать аргументов, он удалит любые пробелы (пробел, табуляция, символы новой строки и т.п.) с конца строки.), а с помощью метода replace – скобки. Видно, что полученный список отличается от исходного sps типом данных, а также не убраны некоторые пробелы. Исправим это:
|
||||
|
||||
>>> sps2 = [int(i.strip()) for i in sps1]
|
||||
>>> sps2
|
||||
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
|
||||
|
||||
Это list comprehension, который у каждого элемента sps1 убирает лишние пробелы с обеих сторон (в этом отличие rstrip от strip). Затем полученная строка конвертируется в число.
|
||||
|
||||
# 4.7 Изучение способа чтения данных из файла с помощью функции read
|
||||
|
||||
Был открыт текстовый файл и с помощью функции read из него сначала было прочитано и отображено 12 символов, а потом прочитаны остальные символы с помощью функции read без указания аргумента.
|
||||
|
||||
Ссылка в новой задаче
Block a user