Язык Python. Уроки Python. Python Lessons Oleg Kishinskii мар. 30
Скачать 406.31 Kb.
|
ЧислаЧисла - Это не изменяемый тип данных. Числа в Python бывают трёх типов: целые, с плавающей точ- кой и комплексные. * Примером целого числа может служить 2. * Примерами чисел с плавающей точ- кой (или «плавающих» для краткости) могут быть 3.23 и 52.3E-4. Обозначение E показывает степени числа 10. В данном случае 52.3E-4 означает 52.3 · 104. * Примерыкомплексныхчисел:(-5+4j)и(2.3-4.6j) Примечание: Нет отдельного типа ‘long int’ (длинное целое). Целые числа по умолчанию могут быть произвольной длины. СтрокиСтроки - это неизменяемая упорядоченная последовательность символов, заключенная в кавычки. Строки применяются для записи текстовой информации (кажем, вашего имени) и произвольных со- вокупностей байтов (наподобие содержимого файла изображения). Они являются первым примером того, что в Python называется последовательностью — позиционно упорядоченной коллекцией других объектов. Для содержащихся элементов последовательности поддерживают порядок слева направо: элементы сохраняются и извлекаются по своим относительным позициям. Строго говоря, строки пред- ставляют собой последовательности односимвольных строк. firts_string = "asdfgh" second_string = "oiuytr" print(firts_string + second_string) Строки можно суммировать. Тогда они объединяются в одну строку, такая операция называется «Кон- катенацией строк»: Примечание: В Python 3 нет ASCII-строк, потому что Unicode является надмножеством (вклю- чает в себя) ASCII. Если необходимо получить строку строго в кодировке ASCII, используйте str.encode(«ascii»). По умолчанию все строки в Unicode. Предупреждение: Нельзя производить арифметтические операции над строкам и числами На- пример: «qwerty» + 3 Это вызовет ошибку, Но строки можно перемножать «#» * 10 выведет на экран строку ########## Логические и физические строки i=5 print(i) #тожесамое,что i = 5; print(i); #итожесамоеможетбытьзаписановвиде i = 5; print(i); Физическая строка – это то, что вы видите, когда набираете программу. Логическая стро- ка – это то, что Python видит как единое предложение. Python неявно предполагает, что каждой физической строке соответствует логическая строка. Примером логической строки может служить предложение print(„Привет, Мир!“) – ес- ли оно на одной строке (как вы видите это в редакторе), то эта строка также соответствует физической строке. Python неявно стимулирует использование по одному предложению на строку, что об- легчает чтение кода. Чтобы записать более одной логической строки на одной физической строке, вам придёт- ся явно указать это при помощи точки с запятой (;), которая отмечает конец логической строки/предложения. Например: Однако я настоятельно рекомендую вам придерживаться написания одной логической строки в каждой физической строке. Таким образом вы можете обойтись совсем без точки с запятой. Кстати, я никогда не использовал и даже не встречал точки с запятой в программах на Python. Можно использовать более одной физической строки для логической строки, но к этому следует прибегать лишь в случае очень длинных строк. Пример написания одной логиче- ской строки, занимающей несколько физических строк, приведён ниже. Это называется явным объединением строк. Операции над последовательностями #!/usr/bin/env python3#-*-coding:utf-8-*- simple_string = 'Spam' len(simple_string) #4 simple_string[0] #'S' simple_string[1] #'p' Как последовательности, строки поддерживают операции, которые предполагают наличие позицион- ного порядка среди элементов. Например, если мы имеем четырех символьную строку, записанную в кавычках (обычно одинарных), то можем проверить ее длину с помощью встроенной функции len() и извлечь ее компоненты посредством выражений индексации. Нумерация всех символов в строке идет с нуля. Но, если нужно обратиться к какому-то по счету символу, начиная с конца, то можно указывать отрицательные значения (на этот раз с единицы). example_string = "Lorem Ipsum is simply dummy text of the printing and typesetting" example_string[0:9] #'LoremIps' example_string[10:22] #'missimply' #Еслинеуказываетсявтороечисло,тосрезбудетдоконцастроки: example_string[-3:] #'ing' Кроме обращения к конкретному символу, можно делать срезы строк, указав диапазон номеров (срез выполняется по второе число, не включая его): Также в срезе можно указывать шаг: #Такможнополучитьнечетныечисла a = '0123456789' a[1::2] #'13579' #Атакимобразомможнополучитьвсечетныечисластрокиa: (continues on next page) a[::2] #'02468' #Срезытакжеможноиспользоватьдляполучениястрокивобратномпорядке: a[::-1] #'9876543210' (продолжение с предыдущей страницы) Методы для работы со строками Методы upper, lower, swapcase, capitalize string1 = 'FastEthernet' string1.upper() #'FASTETHERNET' string1.lower() #'fastethernet' string1.swapcase() #'fASTeTHERNET' string2 = 'tunnel 0' string2.capitalize() #'Tunnel0' #Оченьважнообращатьвниманиенато,чточастометодывозвращаютпреобразованнуюстроку.И,␣ ˓→значит,надонезабытьприсвоитьеекакой-топеременной(можнотойже). string1 = string1.upper() print(string1) #FASTETHERNET Методы upper(), lower(), swapcase(), capitalize() выполняют преобразование регистра строки: Метод countstring1 = 'Hello, hello, hello, hello' string1.count('hello') #3 string1.count('ello') #4 string1.count('l') #8 Метод count() используется для подсчета того, сколько раз символ или подстрока встречаются в строке: Метод findstring1 = 'interface FastEthernet0/1' string1.find('Fast') #10 string1[string1.find('Fast')::] #'FastEthernet0/1' Методу find() можно передать подстроку или символ, и он покажет, на какой позиции находится первый символ подстроки (для первого совпадения): Методы startswith, endswithПроверка на то, начинается или заканчивается ли строка на определенные символы (методы startswith(), endswith()): Метод replacestring1 = 'FastEthernet0/1' string1.replace('Fast', 'Gigabit') #'GigabitEthernet0/1' Замена последовательности символов в строке на другую последовательность (метод replace()): Метод stripЧасто при обработке файла файл открывается построчно. Но в конце каждой строки, как правило, есть какие-то спецсимволы (а могут быть и в начале). Например, перевод строки. string1 = '\n\tinterface FastEthernet0/1\n' print(string1) # #interfaceFastEthernet0/1# string1.strip() #'interfaceFastEthernet0/1' Для того, чтобы избавиться от них, очень удобно использовать метод strip(): Примечание: По умолчанию метод strip() убирает пробельные символы. В этот набор символов входят: tnrfv Методу strip можно передать как аргумент любые символы. Тогда в начале и в конце строки будут удалены все символы, которые были указаны в строке: Метод strip() убирает спецсимволы и в начале, и в конце строки. Если необходимо убрать символы только слева или только справа, можно использовать, соответственно, методы lstrip() и rstrip(). Метод splitstring1 = 'switchport trunk allowed vlan 10,20,30,100-200' commands = string1.split() print(commands) #['switchport','trunk','allowed','vlan','10,20,30,100-200'] #Поумолчаниювкачестверазделителяиспользуютсяпробельныесимволы(пробелы,табы,перевод␣ ˓→строки),новскобкахможноуказатьлюбойразделитель: vlans = commands[-1].split(',') print(vlans) #['10','20','30','100-200'] Метод split() разбивает строку на части, используя как разделитель какой-то символ (или символы) и возвращает список строк: Метод joinМетод join() позволяет объеденить список, кортеж или словарь в строку разделяя ее елементы другой строкой. myTuple = ("John", "Peter", "Vicky") x = "-".join(myTuple) print(x) #John-Peter-Vicky Метод formatМетод format() позволяет подставлять в отмеченные в строке области символами «{}» значени из списка аргументов price = 49 txt = "The price is {} dollars" print(txt.format(price)) например: Так же можно указать тип подставлемых значений: (continues on next page) '{:4d}'.format(42) #42 '{:06.2f}'.format(3.141592653589793) #003.14 '{:04d}'.format(42) #0042 #знаковыечисла '{:+d}'.format(42) #+42 '{:d}'.format((- 23)) #-23 '{:d}'.format(42) #42 '{:=5d}'.format((- 23)) #-23 '{:=+5d}'.format(23) #+23 #можновставлятьзначенияпоименам data = {'first': 'Hodor', 'last': 'Hodor!'} '{first}{last}'.format(**data) #HodorHodor! '{first}{last}'.format(first='Hodor', last='Hodor!') #HodorHodor! #Форматдатыивремени from datetime import datetime '{:%Y-%m-%d%H:%M}'.format(datetime(2001, 2, 3, 4, 5)) #2001-02-0304:05 (продолжение с предыдущей страницы) другие примеры форматированого вывода можно ныйти по следующим ссылкам pyformat.info w3schools.com Пример программы Подсчет слов #!/usr/bin/env python3#-*-coding:utf-8-*- #Программаподсчетасловвфайле import os #подульдлявзаимодействиясоперационнойсистемой,напримерпросмотрфайлов def get_words(filename): '''функципринимаетвкачествеаргументапутьдофайла''' with open(filename, encoding="utf8") as file: #этастрокаоткрываетфайл text = file.read() #читаемсодержимоефайлаизаписываемвсевпеременнуюtext text = text.replace("\n", " ") #преобразуемнаштекстводнудлиннуюстрокузаменивсимвол␣ ˓→переводастрокинапробел text = text.replace(",", "").replace(".", "").replace("?", "").replace("!", "") #атакже␣ ˓→уберемвсезапетые,пробелы,ипрочиезнакипунктуации text = text.lower() #перведемвсесловавстрочные,тоестьеслибыло"Началоизучения␣ ˓→ЯзыкаПрограммирования",тобудет"началоизученияязыкапрограммирования" words = text.split() #создадимсписокслов("списки","выгледят","вот","так") words.sort() #методsortотсортируетвсесловапоалфовиту return words #этастрокавернетнаммассивстрок def get_words_dict(words): ''''этафункциясодастьсловарьгдеключь,этослово,азначение,тосколькоразоно␣ ˓→встречаетсявтексте''' words_dict = dict() #создаемпростойсловарь for word in words: #циклкоторыйперебираетнашсписокизаписываеткаждоеслововотдельную␣ ˓→переменнуюword (continues on next page) if word in words_dict: #проверимусловие,еслисловоужеестьвсловаре, words_dict[word] = words_dict[word] + 1 #увеличимегозначениена1 else: words_dict[word] = 1 #еслиневстречается,топростоприсвоимзначение1 return words_dict #вернемнашсловарь def main(): '''нашаглавнаяфункциявкоторойвыполняетсяосновнаялогиканашейпрограммы Вызываютсявсесозданныеранеефункции,передаютсязначения,выводятсянаэкранрезультаты''' filename = input("Введите путь к файлу: ") #функцияinput()выводитнаэкрансообщениеи␣ ˓→ожидаетввода,всечтобудетвведенобудетзаписановпеременнуюfilename if not os.path.exists(filename): #проверяемсоществуетлинашфайлнадиске print("Указанный файл не существует") else: words = get_words(filename) #получаемсписокслов words_dict = get_words_dict(words) #получаемсловарьизсловиихколичествавтексте print("Кол-во слов: %d" % len(words)) #печатаемколичествословвтексте print("Кол-во уникальных слов: %d" % len(words_dict)) #печатаемколичествоуникальныхслов print("Все использованные слова:") #ивсеслова for word in words_dict: print(word.ljust(20), words_dict[word]) if name == "main": main() (продолжение с предыдущей страницы) |