Строки
Мы уже рассматривали строки как простой тип данных наряду с целыми и вещественными числами и знаем, что строка – это последовательность символов, заключенных в одинарные или двойные кавычки.
В Python нет символьного типа – типа данных, объектами которого являются одиночные символы. Однако язык позволяет рассматривать строки как объекты, состоящие из подстрок длинной в один и более символов. При этом, в отличие от списков, строки не принято относить к структурам данных. Видимо потому, что структуры данных состоят из более простых типов данных, а для строк в Python нет более простого (символьного) типа.
С другой стороны, строка, как и список, – это упорядоченная последовательность элементов. Следовательно, из нее можно извлекать отдельные символы и срезы.
>>> s = "Hello, World!" >>> s[0] 'H' >>> s[7:] 'World!' >>> s[::2] 'Hlo ol!'
В последнем случае извлечение идет с шагом, равным двум, то есть извлекается каждый второй символ. Извлекать срезы с шагом также можно из списков.
Важным отличием от списков является неизменяемость строк в Python. Нельзя перезаписать какой-то отдельный символ или срез в строке:
>>> s[-1] = '.' Traceback (most recent call last): File "", line 1, in TypeError: 'str' object does not support item assignment
Интерпретатор сообщает, что объект типа str не поддерживает присвоение элементам.
Если требуется изменить строку, то можно создать новую из срезов старой:
>>> s = s[0:-1] + '.' >>> s 'Hello, World.'
В примере берется срез из исходной строки, соединяется с другой строкой. Получается новая строка, которая присваивается переменной s . Ее старое значение при этом теряется.
Методы строк
В Python для строк есть множество методов. Посмотреть их можно по команде dir(str) , получить информацию по каждому – help(str.имя_метода) . Рассмотрим наиболее интересные из них.
Методы split() и join()
Метод split() позволяет разбить строку по пробелам. В результате получается список слов. Если пользователь вводит в одной строке ряд слов или чисел, каждое из которых должно в программе обрабатываться отдельно, то без split() не обойтись.
>>> s = input() red blue orange white >>> s 'red blue orange white' >>> sl = s.split() >>> sl ['red', 'blue', 'orange', 'white'] >>> s 'red blue orange white'
Список, возвращенный методом split() , мы могли бы присвоить той же переменной s , то есть s = s.split() . Тогда исходная строка была бы потеряна. Если она не нужна, то лучше не вводить дополнительную переменную.
Метод split() может принимать необязательный аргумент-строку, указывающей по какому символу или подстроке следует выполнить разделение:
>>> s.split('e') ['r', 'd blu', ' orang', ' whit', ''] >>> '40030023'.split('00') ['4', '3', '23']
Метод строк join() выполняет обратное действие. Он формирует из списка строку. Поскольку это метод строки, то впереди ставится строка-разделитель, а в скобках — передается список:
>>> '-'.join(sl) 'red-blue-orange-white'
Если разделитель не нужен, то метод применяется к пустой строке:
>>> ''.join(sl) 'redblueorangewhite'
Методы find() и replace()
Данные методы строк работают с подстроками. Методы find() ищет подстроку в строке и возвращает индекс первого элемента найденной подстроки. Если подстрока не найдена, то возвращает -1.
>>> s 'red blue orange white' >>> s.find('blue') 4 >>> s.find('green') -1
Поиск может производиться не во всей строке, а лишь на каком-то ее отрезке. В этом случае указывается первый и последний индексы отрезка. Если последний не указан, то ищется до конца строки:
>>> letters = 'ABCDACFDA' >>> letters.find('A', 3) 4 >>> letters.find('DA', 0, 6) 3
Здесь мы ищем с третьего индекса и до конца, а также с первого и до шестого. Обратите внимания, что метод find() возвращает только первое вхождение. Так выражение letters.find(‘A’, 3) последнюю букву ‘A’ не находит, так как ‘A’ ему уже встретилась под индексом 4.
Метод replace() заменяет одну подстроку на другую:
>>> letters.replace('DA', 'NET') 'ABCNETCFNET'
Исходная строка, конечно, не меняется:
>>> letters 'ABCDACFDA'
Так что если результат надо сохранить, то его надо присвоить переменной:
>>> new_letters = letters.replace('DA', 'NET') >>> new_letters 'ABCNETCFNET'
Метод format()
Строковый метод format() уже упоминался при рассмотрении вывода на экран с помощью функции print() :
>>> print("This is a . It's .".format("ball", "red")) This is a ball. It's red.
Однако к print() он никакого отношения не имеет, а применяется к строкам. Лишь потом заново сформированная строка передается в функцию вывода.
Возможности format() широкие, рассмотрим основные.
>>> s1 = "length - <>, width - <>, height - <>" >>> s1.format(3, 6, 2.3) 'length - 3, width - 6, height — 2.3'
Если фигурные скобки исходной строки пусты, то подстановка аргументов идет согласно порядку их следования. Если в фигурных скобках строки указаны индексы аргументов, порядок подстановки может быть изменен:
>>> s2 = "height - , length - " >>> s2.format(3, 6) 'height - 6, length - 3'
Кроме того, аргументы могут передаваться по слову-ключу:
>>> info = "This is a . It's ." >>> info.format(subj="table", prop="small") "This is a table. It's small."
Пример форматирования вещественных чисел:
>>> " ".format(3.33333, 10/6) '1.67 3.333'
Практическая работа
- Вводится строка, включающая строчные и прописные буквы. Требуется вывести ту же строку в одном регистре, который зависит от того, каких букв больше. При равном количестве преобразовать в нижний регистр. Например, вводится строка «HeLLo World», она должна быть преобразована в «hello world», потому что в исходной строке малых букв больше. В коде используйте цикл for , строковые методы upper() (преобразование к верхнему регистру) и lower() (преобразование к нижнему регистру), а также методы isupper() и islower() , проверяющие регистр строки или символа.
- Строковый метод isdigit() проверяет, состоит ли строка только из цифр. Напишите программу, которая запрашивает с ввода два целых числа и выводит их сумму. В случае некорректного ввода программа не должна завершаться с ошибкой, а должна продолжать запрашивать числа. Обработчик исключений try-except использовать нельзя.
Примеры решения и дополнительные уроки в pdf-версии курса
X Скрыть Наверх
Python. Введение в программирование
Определить,какой символ встречается в строке чаще всего
Определите символ, который чаще всего встречается в файле
Текстовый файл 24-157.txt содержит только заглавные буквы латинского алфавита (ABC. Z). Определите.
Определите символ,который чаще всего встречается в файле после буквы Е
Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите символ.
Строка: Определите символ, который чаще всего встречается в файле сразу после буквы A.
Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите символ.
Определите символ, который чаще всего встречается в файле после двух одинаковых символов
Текстовый файл содержит только заглавные буквы латинского алфавита (ABC…Z). Определите символ.
Определить пару различных товаров чаще всего встречается в различных покупках
Приветствую! Подскажите пожалуйста, куда смотреть для решения такой задачи: "Какая пара различных.
Самый частый символ
Хочу сделать чтобы я вводил слово и мне писало символ который появляется в слове наиболее часто. Не лезет в голову как можно сделать это. Пожалуйста помогите. Например у нас есть слово: приоритет. Нам должно вывести, что наиболее частый символ это и, т . Не нужно чтобы оно писало количество, а только выводило символ.
Отслеживать
16.4k 2 2 золотых знака 15 15 серебряных знаков 24 24 бронзовых знака
задан 12 ноя 2019 в 14:26
125 1 1 золотой знак 2 2 серебряных знака 7 7 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
from collections import Counter word = 'приоритет' c = Counter(word) print(c.most_common(1)[0][0])
Т.к. метод most_common возвращает список самых частых значений (даже если мы запросили одно самое частое значение), то нужно взять первый элемент (для этого нужен первый [0] ). Каждый элемент в этом списке — пара (элемент, количество) , поэтому нужно взять первый элемент еще раз.
Вообще, в слове «приоритет» есть 3 буквы, которые встречаются по два раза (р, и, т), выведет только одну из них (у меня вывело «р»).
Вариант решения без использования Counter :
word = 'приоритет' # Подсчитываем количество вхождений каждой буквы в слове c = dict() for letter in word: c[letter] = c.get(letter, 0) + 1 # .get(letter, 0) вернет значение по ключу letter или 0, если такого ключа нет print(c) # # Выводим ключ, которому соответствует наибольшее из значений # (точнее, один из таких ключей) print(max(c.items(), key=lambda item: item[1])[0]) # р
Определить часто встречающийся символ в строке
Как определить какой из двух символов встречается в строке чаще?
Serg94
string str = «dskjaabbbsjijbbaaa»;
int kb1 = 0,kb2 = 0;
for (int i = 0; i kb2) Console.WriteLine(«больше a»);
if (kb1
Купить рекламу на сайте за 1000 руб
пишите сюда — alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
- Форум Web программирование (веб)
-
- Форум Python (питон)
- Форум PHP (пхп)
- Форум Perl (перл)
- Форум Ruby (руби)
- Форум JavaScript (яваскрипт)
- Форум Ajax (аякс)
- Форум SQL (эскюэл)
- Форум HTML (хтмл)
- Форум CSS (сиэсэс)
- Форум XML (иксмл)
- Форум JSON (джсон)
- Форум Pascal (паскаль)
- Форум Delphi (делфи)
- Форум C++ (си плюс плюс)
-
- Форум C++ Builder (си билдер)
- Форум Visual C++ (визуал си)
- Форум .NET (точка нет)
- Форум ASP.NET (асп нет)
- Форум Windows Forms (виндовс формс)
- Форум базы данных ADO.NET (адо нет)
- Форум .NET Framework WPF, UWP, WinRT, XAML ()
- Форум Java Android (джава андроид)
- Форум Java web (джава веб)
- Форум Kotlin (котлин)
- Форум Assembler (ассемблер)
- Форум WinApi (вин апи)
- Форум Excel (эксель)
- Форум Word (ворд)
- Форум Access (аксесс)
- Форум по администрированию ОС
- Форум по администрированию серверов и VDS
- Форум Windows
- Форум Ubuntu
- Форум Android