Является ли переменная x строкой
Напишите код, который проверяет, является ли переменная x строкой, и если да, то если в строке больше одного слова (слово—последовательность подряд идущих символов без пробелов), то выводит на экран количество слов в этой строке и сами слова в алфавитном порядке
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Проверить что переменная является любой строкой или любым числом
Можно ли в Python (не через type) проверить, является ли переменная любой строкой\любым числом.
Дана переменная $str со строкой Выведите на экран символ, номер которого хранится в переменной $num
Дана переменная $str со строкой ‘abcde’ и переменная $num с номером символа. Выведите на экран.
Определить, является ли строка t строкой-подпоследовательностью строки s
привет подскажите решение на яве Назовем строку t строкой-подпоследовательностью строки s, если.
Функцию, определяющая является ли строка удвоенной строкой
Написать функцию, определяющую является ли строка удвоенной строкой, то есть имеет вид ww, где w –.
3540 / 2144 / 566
Регистрация: 02.09.2015
Сообщений: 5,435
1 2 3 4 5
In [1]: if type(x) == str: . words = x.split() . if words[1:]: . print(len(words), *words) .
Регистрация: 11.09.2015
Сообщений: 67
File «
print(len(words), *words)
^
IndentationError: expected an indented block
3540 / 2144 / 566
Регистрация: 02.09.2015
Сообщений: 5,435
Вероника_В, и как вы скопировали? Написано же, что проблема с отступами.
Регистрация: 11.09.2015
Сообщений: 67
In [1]: if type(x) == str:
. words = x.split()
. if words[1:]:
. print(len(words), *words)
.
тчно также скопировала ничего не выдает
3540 / 2144 / 566
Регистрация: 02.09.2015
Сообщений: 5,435
Вероника_В, а вот так?
1 2 3 4
if type(x) == str: words = x.split() if words[1:]: print(len(words), *words)
Регистрация: 11.09.2015
Сообщений: 67
тоже ничего,грузит и все ток
Просто Лис
![]()
5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9
if isinstance(x, str):
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как проверить является ли текст пустой строкой, т.е. пробелом
Подскажите пожалуйста
Является ли переменная массивом?
Как можно определить является ли переменная массивом? В PHP есть функция is_array. Есть ли в java.
Проверка является ли переменная числом
Всем привет! Столкнулся с проблемой: Вводится число с клавиатуры, надо проверить что-бы это было.

Проверить, является ли переменная путём
String filePath = @"C:\1.txt" Диска C не существует, файла не существует. Это просто переменная. .

Проверить является ли переменная числом
Проверить, является ли переменная числом в C++ Builder не охота в цикл загонять и проверять, есть.
Проверить что переменная является любой строкой или любым числом
Можно ли в Python (не через type) проверить, является ли переменная любой строкой\любым числом.
Может как-то через регулярки? но я не понимаю как с помощью них сделать.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как проверить, что переменная является числом?
Добрый день, уважаемые. Скучая на работе и просто решив побаловаться BAT, я написал небольшой.

Проверить является ли переменная числом
Проверить, является ли переменная числом в C++ Builder не охота в цикл загонять и проверять, есть.
Как проверить, является ли переменная числом
Есть структура точки struct Point < double x; double y; >; Есть вектор из структур.
Определить, чем является строка – целым числом, вещественным, датой или текстовой строкой
Помогите разобраться.. Это задание на семинар — Вобщем здесь меня интересует сам алгоритм.
Проверить, является ли введенное значение числом или нет
Здрасти. как проверить число на то, является ли оно им или нет. Пробовал с помощью cin.good(), и с.
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
isinstance если тебе нужно проверить строка это или число
Регистрация: 08.05.2013
Сообщений: 136
Сообщение от alex925 
isinstance если тебе нужно проверить строка это или число
Я хочу сделать проверку вида:
if var == любая_строка: .
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
А зачем тебе это понадобилось? Вообще в python такие проверки на тип данных не приветствуются.
Регистрация: 08.05.2013
Сообщений: 136
Сообщение от alex925 
А зачем тебе это понадобилось? Вообще в python такие проверки на тип данных не приветствуются.
Из базы данных надо извлечь данные по нескольким фильтрам. Использую:
имя_таблицы.objects.filter(name=name, surname = любая_строка, . )
Не хотел логику менять, но похоже придется. Видимо где-то до этого ошибочным путём пошёл.
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Так и в чем проблема? Откуда поступают данные в твою гипотетическую переменную? Почему ты сомневаешься, что туда попадет НЕ строка?
Регистрация: 08.05.2013
Сообщений: 136
html,
если подробнее:
на каждое поле стоит checkbox, если активен — получаю значение переменной, если нет — не могу придумать с чем сравнить (post-запрос ничего не возвращает)
Ну не писать же на каждую комбинацию чекбоксов отдельное получение данных
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830

Сообщение было отмечено Headmaster как решение
Решение
Ну раз данные получаются из формы, то во 1 данные нужно проверять сначала на клиентской стороне (и если, что-то не заполнили или заполнили не правильно то сообщать об этом), а потом на сервере сначала проверять пришли данные вообще и потом парсить строку и проверять на соответвие правилам.
Если очень по простому, то проверять, что вероятно это фамилия можно так (но эта регулярка допускает строку из одних цифр)
1 2 3 4 5 6
import re data = ['Иванов', 'Сидоров', 'Петров3', 'Петров@'] for i in data: res = re.fullmatch('[a-zA-Zа-яА-Я0-9]*', i) print(i, True if res else False)
Сообщение от Headmaster 
Ну не писать же на каждую комбинацию чекбоксов отдельное получение данных
А причем тут checkbox? Они сюда вообще ни как не относятся, они в твоей задаче тебе даже близко не нужны.
![]()
5890 / 3348 / 1034
Регистрация: 03.11.2009
Сообщений: 9,977
Я тоже как-то не проникся почему речь идёт про чекбоксы. Может опишите нам всю свою проблему? Потому что пока вопрос и задача в моей голове друг с другом не коррелируют.
Регистрация: 08.05.2013
Сообщений: 136
форма на странице поиска должна иметь все параметры перечисленные в модели + содержит checkbox для каждого поля, говорящий нужно ли использовать это поле при фильтрации или нет.
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
Сообщение от Headmaster 
содержит checkbox для каждого поля, говорящий нужно ли использовать это поле при фильтрации или нет.
Бессмысленное занятие. Если поле не заполнено, значит его не нужно использовать (то есть будет передана на сервер пустая строка или вообще оно не будет упоминаться), если какие-то данные переданы, то проверяем их на допустимость и выполняем запрос.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как проверить, что строка является вещественным числом?
например задана строка string str="6.9" и как проверить что вещественное? для целого типа можно.
Проверить, что целое число N является четным двузначным числом
Составить линейную программу, печатающую значение true, если указанное высказывание является.
Проверить, что заданное целое число является трехзначным нечетным числом
Заданное целое число является трехзначным нечетным числом (учитывайте и отрицательные числа).

Строка: Проверить, является ли заданный символ буквой, числом или специальным символом?
Напишите программу, в которой пользователь должен ввести 1 символ. По окончанию программа должна.
Является ли переменная x строкой
Напишите код, который проверяет, является ли переменная x строкой, и если да, то если в строке.
Является ли строка целым числом, вещественным или не является числом
Задание. Определите, является ли заданная строка записью целого числа, записью вещественного числа.
7. Типы данных в Python
В предыдущем уроке на вас обрушился, возможно, новый поток информации. Начнем с разбора понятия «тип данных» в программировании и необязательно на Python. Тип данных – это множество значений и операций, которые можно совершить над ними. Дальше углубляться не будем. Какие стандартные типы данных есть в Python?
В Python есть числа, строки, списки, словари, кортежи, множества и логический тип данных. Списки, словари, кортежи и множества мы рассмотрим позднее, по каждому из них будет несколько уроков. Итак, типы данных в Python можно классифицировать следующим образом:
- изменяемые (множества, списки, словари);
- неизменяемые (кортежи, строки, числа);
- упорядоченные (списки, строки, кортежи, словари);
- неупорядоченные (множества).
Важной особенностью языка Python является его типизация. Python относится к языкам с неявной сильной динамической типизацией. Что это означает? Неявная типизация: вам не нужно при объявлении переменной указывать конкретный тип данных, к которой она относится, как, например, в языке С++:
int a = 10
В Python объявить переменную очень просто:
a = 10
Под динамической типизацией понимается то, что поиск ошибок будет осуществляться на стадии выполнения программы. В языках со статической типизацией поиск ошибок выполняется на стадии компиляции. Например, в Python возможно присвоить одной переменной сначала объект одного типа данных, а потом другого:
a = "Hello"
a = 1
Под сильной (или строгой) типизацией понимается то, что язык Python не позволяет смешивать типы данных. Если вы задали переменную как число, вы не сможете сложить ее со строкой:
a = 10
print('Десять = ' + a)
Это увеличивает надежность кода, так как вам необходимо явно преобразовать число к строке:
a = 10
print('Десять = ' + str(a))
Модель данных
Прежде чем переходить к конкретным типам данных, поверхностно рассмотрим, что такое модель данных, как создаются объекты в памяти и работу операции присваивания ( = ).
Чтобы объявить переменную в языке Python, необходимо указать ее имя, поставить знак присваивания ( = ) и написать значение, которое будет сохранено в переменной. Пример:
a = 10
Переменной с именем a мы присвоили число десять. Целочисленное число десять является объектом, как и все в Python: числа, строки, списки и т.д. Объект является абстракцией данных. Данные – это не только объекты, но и отношения между ними. Объект состоит из трех частей: тип, идентификатор и значение.
Что происходит при инициализации переменной на уровне интерпретатора? Создается целочисленный объект 10 , который сохраняется где-то в памяти. Данный объект имеет идентификатор, значение 10 и целочисленный тип. С помощью оператора присваивания ( = ) создается ссылка между переменной a и объектом 10 , целочисленного типа.
Имя переменной не должно совпадать с ключевыми словами Python. Чтобы это проверить, можно воспользоваться методом iskeyword() из модуля keyword .
import keyword
keyword.iskeyword("for") # => True
Рассмотрим следующий пример, чтобы лучше понять, как работает присвоение в Python:
a = 5
b = 10
print(id(a)) # => 140732499849616
print(id(b)) # => 140732499849776
a = b
print(id(a)) # => 140732499849776
Мы используем функцию id , чтобы определить идентификатор, на который ссылается переменная. Не привязывайтесь к конкретным числам, у вас они будут другими. Обратите внимание, что после присвоения поменялся идентификатор, на который ссылается переменная. Мы об этом еще вспомним, когда будем говорить про копирование списков. А еще вспомним, когда будем знакомиться с аргументами и параметрами функций в Python.
Чтобы узнать тип переменной, воспользуйтесь функцией type() :
a = 5
print(type(a)) # =>
Теперь вы готовы к разбору конкретных типов данных в Python.
Числа
С числами в Python можно выполнять различные математические операции:
a = 5 + 6
b = (4 * 6) + 12
c = 2 ** 16 # возведение в степень
d = 3 / 2 # => 1.5
При помощи функции round() можно округлять результат до определенного знака:
d = 10 / 6
print(round(d, 5)) # => 1.66667
Остаток от деления можно найти при помощи оператора % :
d = 10 % 6
d # => 4
С операторами сравнения вы уже познакомились из практики предыдущего урока.
print(10 > 5) # => True
и так далее…
Так как язык строго типизированный, часто необходимо преобразовать строку в число. Это можно сделать при помощи функции int() :
a = ‘100’
b = int(a)
print(type(a)) # =>
print(type(b)) # =>
Чтобы получить двоичное или шестнадцатеричное значение числа, используются функции bin() и hex() , соответственно. Кстати, результат является строкой:
a = 16
print(bin(a)) # => 0b10000
print(hex(a)) # => 0x10
Так же вы можете комбинировать операции и функции как угодно:
a = bin(int('100') + 20)
print(a) # => 0b1111000
Для более сложных математических операций существует модуль math , о котором поговорим позже. Например, найдем корень из числа десять:
import math
print(math.sqrt(10))
Подведем итог. С числами могут производиться различные математические операции и преобразования. В Python есть целые, числа с плавающей точкой и комплексные.
Строки
Строками в Python называется последовательность символов, обрамленных кавычками. Строки являются неизменяемым типом данных. Строки могут обрамляться как одинарными, так и двойными кавычками. Так же можно присвоить переменной несколько строк, для чего текст ограничивается тремя подряд кавычками:
a = 'Hello'
a = "Hello"
a = """
Несколько
Строк
"""
Строки можно складывать (конкатенировать) в одну. О конкатенации мы поговорим позже в теме про списки.
a = 'Hello '
b = "World"
print(a + b) # => Hello World
Строки можно умножать на число. Число указывает на количество раз, сколько строка будет повторена.
Строки в Python являются упорядоченным типом данных, как и списки, поэтому к отдельным символам можно обращаться по индексу. Индексация начинается с нуля:
a = 'Hello'
print(a[0]) # => H
Так же можно обратиться к последнему символу, если использовать отрицательное значение. Про обратное индексирование еще вспомним в теме про списки.
a = 'Hello'
print(a[-1]) # => o
В Python возможно сделать срез строки (про срезы будем говорить подробнее позднее):
a = 'Hello'
print(a[0:3]) # => Hel
print(a[1:]) # => ello
print(a[-3:]) # => llo
print(a[::2]) # => Hlo
Чтобы посчитать количество символов в строке (или количество элементов в списке), используйте функцию len() :
a = 'Hello'
print(len(a)) # => 5
Уже не раз звучали понятия «функция» и «метод». В чем разница? Как правило, метод привязан к объекту конкретного типа, а функция является более универсальной и может быть применена к объектам разного типа.
Про форматирование строк вы узнаете в следующем уроке.
Булевы значения
Это самый примитивный тип данных в Python, да и в любом языке программирования, который может принимать два значения: истина ( True ) или лож ( False ). Небольшая оговорка, в Python ложными и истинными значениями считаются не только True и False .
К истинным значениям в Python относятся:
- любое число не равно нулю;
- любая непустая строка;
- любой непустой объект.
К ложным значениям в Python относятся:
- ноль ( 0 );
- None ;
- пустая строка;
- пустой объект.
Чтобы проверить, является ли значение объекта ложным или истинным, используйте функцию bool() :
list_a = [1, 2, 3]
list_b = []
num_a = 0
str_a = ''
print(bool(list_a)) # => True
print(bool(list_b)) # => False
print(bool(num_a)) # => False
print(bool(str_a)) # => False
Еще ближе познакомитесь с логическим типом данных в уроке, посвященном условной конструкции if/else .
Неопределенный тип данных None
Неопределенное значение None можно отнести к отдельному типу данных. Если присвоить значение None переменной, то она будет сброшена в исходное состояние.
Списки, словаря, кортежи и множества
Это очень обширная и важная тема, о которой мы поговорим позднее и подробнее, начиная с этого урока.
Список – это последовательность разделенных запятой элементов и обрамленная квадратными скобками, например:
a = [1, 2, 3, 4, 5]
b = ["Hello", 1, 2, a]
Кстати, такая форма создания списков (и не только) называется литеральная. Литерал в программировании – это выражение, которое создает объект.
Словарь – это упорядоченный тип данных, в котором значения хранятся в виде ключ/значение. В других языках программирования он может называться ассоциативным массивом. Выглядит он так:
c = 1: "Один",
2: "Два"
>
Обратите внимание, словарь в Python задается в фигурных скобках.
Кортеж – это тот же список, но только неизменяемый. Он выглядит так:
d = (1, 2, 3)
То есть элементы в кортеже помещаются в круглые скобки.
Множество – неупорядоченный список уникальных элементов. Например:
e =
e # =>
Элементы множества записываются в фигурных скобках через запятую.
В этом уроке мы разобрали, что такое модель данных, какие основные типы данных есть в Python, а так же начали знакомиться со списками, словарями, кортежами и множествами.
41 вопрос о работе со строками в Python
Я начал вести список наиболее часто используемых функций, решая алгоритмические задачи на LeetCode и HackerRank.
Быть хорошим программистом — это не значит помнить все встроенные функции некоего языка. Но это не означает и того, что их запоминание — бесполезное дело. Особенно — если речь идёт о подготовке к собеседованию.
Хочу сегодня поделиться со всеми желающими моей шпаргалкой по работе со строками в Python. Я оформил её в виде списка вопросов, который использую для самопроверки. Хотя эти вопросы и не тянут на полноценные задачи, которые предлагаются на собеседованиях, их освоение поможет вам в решении реальных задач по программированию.
1. Как проверить два объекта на идентичность?
Оператор is возвращает True в том случае, если в две переменные записана ссылка на одну и ту же область памяти. Именно об этом идёт речь при разговоре об «идентичности объектов».
Не стоит путать is и == . Оператор == проверяет лишь равенство объектов.
animals = ['python','gopher'] more_animals = animals print(animals == more_animals) #=> True print(animals is more_animals) #=> True even_more_animals = ['python','gopher'] print(animals == even_more_animals) #=> True print(animals is even_more_animals) #=> False
Обратите внимание на то, что animals и even_more_animals не идентичны, хотя и равны друг другу.
Кроме того, существует функция id() , которая возвращает идентификатор адреса памяти, связанного с именем переменной. При вызове этой функции для двух идентичных объектов будет выдан один и тот же идентификатор.
name = 'object' id(name) #=> 4408718312
2. Как проверить то, что каждое слово в строке начинается с заглавной буквы?
Существует строковый метод istitle() , который проверяет, начинается ли каждое слово в строке с заглавной буквы.
print( 'The Hilton'.istitle() ) #=> True print( 'The dog'.istitle() ) #=> False print( 'sticky rice'.istitle() ) #=> False
3. Как проверить строку на вхождение в неё другой строки?
Существует оператор in , который вернёт True в том случае, если строка содержит искомую подстроку.
print( 'plane' in 'The worlds fastest plane' ) #=> True print( 'car' in 'The worlds fastest plane' ) #=> False
4. Как найти индекс первого вхождения подстроки в строку?
Есть два метода, возвращающих индекс первого вхождения подстроки в строку. Это — find() и index() . У каждого из них есть определённые особенности.
Метод find() возвращает -1 в том случае, если искомая подстрока в строке не найдена.
'The worlds fastest plane'.find('plane') #=> 19 'The worlds fastest plane'.find('car') #=> -1
Метод index() в подобной ситуации выбрасывает ошибку ValueError .
'The worlds fastest plane'.index('plane') #=> 19 'The worlds fastest plane'.index('car') #=> ValueError: substring not found
5. Как подсчитать количество символов в строке?
Функция len() возвращает длину строки.
len('The first president of the organization..') #=> 41
6. Как подсчитать то, сколько раз определённый символ встречается в строке?
Ответить на этот вопрос нам поможет метод count() , который возвращает количество вхождений в строку заданного символа.
'The first president of the organization..'.count('o') #=> 3
7. Как сделать первый символ строки заглавной буквой?
Для того чтобы это сделать, можно воспользоваться методом capitalize() .
'florida dolphins'.capitalize() #=> 'Florida dolphins'
8. Что такое f-строки и как ими пользоваться?
В Python 3.6 появилась новая возможность — так называемые «f-строки». Их применение чрезвычайно упрощает интерполяцию строк. Использование f-строк напоминает применение метода format() .
При объявлении f-строк перед открывающей кавычкой пишется буква f .
name = 'Chris' food = 'creme brulee' f'Hello. My name is and I like .' #=> 'Hello. My name is Chris and I like creme brulee'
9. Как найти подстроку в заданной части строки?
Метод index() можно вызывать, передавая ему необязательные аргументы, представляющие индекс начального и конечного фрагмента строки, в пределах которых и нужно осуществлять поиск подстроки.
'the happiest person in the whole wide world.'.index('the',10,44) #=> 23
Обратите внимание на то, что вышеприведённая конструкция возвращает 23 , а не 0 , как было бы, не ограничь мы поиск.
'the happiest person in the whole wide world.'.index('the') #=> 0
10. Как вставить содержимое переменной в строку, воспользовавшись методом format()?
Метод format() позволяет добиваться результатов, сходных с теми, которые можно получить, применяя f-строки. Правда, я полагаю, что использовать format() не так удобно, так как все переменные приходится указывать в качестве аргументов format() .
difficulty = 'easy' thing = 'exam' 'That <> was <>!'.format(thing, difficulty) #=> 'That exam was easy!'
11. Как узнать о том, что в строке содержатся только цифры?
Существует метод isnumeric() , который возвращает True в том случае, если все символы, входящие в строку, являются цифрами.
'80000'.isnumeric() #=> True
Используя этот метод, учитывайте то, что знаки препинания он цифрами не считает.
'1.0'.isnumeric() #=> False
12. Как разделить строку по заданному символу?
Здесь нам поможет метод split() , который разбивает строку по заданному символу или по нескольким символам.
'This is great'.split(' ') #=> ['This', 'is', 'great'] 'not--so--great'.split('--') #=> ['not', 'so', 'great']
13. Как проверить строку на то, что она составлена только из строчных букв?
Метод islower() возвращает True только в том случае, если строка составлена исключительно из строчных букв.
'all lower case'.islower() #=> True 'not aLL lowercase'.islower() # False
14. Как проверить то, что строка начинается со строчной буквы?
Сделать это можно, вызвав вышеописанный метод islower() для первого символа строки.
'aPPLE'[0].islower() #=> True
15. Можно ли в Python прибавить целое число к строке?
В некоторых языках это возможно, но Python при попытке выполнения подобной операции будет выдана ошибка TypeError .
'Ten' + 10 #=> TypeError
16. Как «перевернуть» строку?
Для того чтобы «перевернуть» строку, её можно разбить, представив в виде списка символов, «перевернуть» список, и, объединив его элементы, сформировать новую строку.
''.join(reversed("hello world")) #=> 'dlrow olleh'
17. Как объединить список строк в одну строку, элементы которой разделены дефисами?
Метод join() умеет объединять элементы списков в строки, разделяя отдельные строки с использованием заданного символа.
'-'.join(['a','b','c']) #=> 'a-b-c'
18. Как узнать о том, что все символы строки входят в ASCII?
Метод isascii() возвращает True в том случае, если все символы, имеющиеся в строке, входят в ASCII.
print( 'Â'.isascii() ) #=> False print( 'A'.isascii() ) #=> True
19. Как привести всю строку к верхнему или нижнему регистру?
Для решения этих задач можно воспользоваться методами upper() и lower() , которые, соответственно, приводят все символы строк к верхнему и нижнему регистрам.
sentence = 'The Cat in the Hat' sentence.upper() #=> 'THE CAT IN THE HAT' sentence.lower() #=> 'the cat in the hat'
20. Как преобразовать первый и последний символы строки к верхнему регистру?
Тут, как и в одном из предыдущих примеров, мы будем обращаться к символам строки по индексам. Строки в Python иммутабельны, поэтому мы будем заниматься сборкой новой строки на основе существующей.
animal = 'fish' animal[0].upper() + animal[1:-1] + animal[-1].upper() #=> 'FisH'
21. Как проверить строку на то, что она составлена только из прописных букв?
Имеется метод isupper() , который похож на уже рассмотренный islower() . Но isupper() возвращает True только в том случае, если вся строка состоит из прописных букв.
'Toronto'.isupper() #=> False 'TORONTO'.isupper() #= True
22. В какой ситуации вы воспользовались бы методом splitlines()?
Метод splitlines() разделяет строки по символам разрыва строки.
sentence = "It was a stormy night\nThe house creeked\nThe wind blew." sentence.splitlines() #=> ['It was a stormy night', 'The house creeked', 'The wind blew.']
23. Как получить срез строки?
Для получения среза строки используется синтаксическая конструкция следующего вида:
string[start_index:end_index:step]
Здесь step — это шаг, с которым будут возвращаться символы строки из диапазона start_index:end_index . Значение step , равное 3, указывает на то, что возвращён будет каждый третий символ.
string = 'I like to eat apples' string[:6] #=> 'I like' string[7:13] #=> 'to eat' string[0:-1:2] #=> 'Ilk oetape' (каждый 2-й символ)
24. Как преобразовать целое число в строку?
Для преобразования числа в строку можно воспользоваться конструктором str() .
str(5) #=> '5'
25. Как узнать о том, что строка содержит только алфавитные символы?
Метод isalpha() возвращает True в том случае, если все символы в строке являются буквами.
'One1'.isalpha() #=> False 'One'.isalpha() #=> True
26. Как в заданной строке заменить на что-либо все вхождения некоей подстроки?
Если обойтись без экспорта модуля, позволяющего работать с регулярными выражениями, то для решения этой задачи можно воспользоваться методом replace() .
sentence = 'Sally sells sea shells by the sea shore' sentence.replace('sea', 'mountain') #=> 'Sally sells mountain shells by the mountain shore'
27. Как вернуть символ строки с минимальным ASCII-кодом?
Если взглянуть на ASCII-коды элементов, то окажется, например, что прописные буквы имеют меньшие коды, чем строчные. Функция min() возвращает символ строки, имеющий наименьший код.
min('strings') #=> 'g'
28. Как проверить строку на то, что в ней содержатся только алфавитно-цифровые символы?
В состав алфавитно-цифровых символов входят буквы и цифры. Для ответа на этот вопрос можно воспользоваться методом isalnum() .
'Ten10'.isalnum() #=> True 'Ten10.'.isalnum() #=> False
29. Как удалить пробелы из начала строки (из её левой части), из её конца (из правой части), или с обеих сторон строки?
Здесь нам пригодятся, соответственно, методы lstrip() , rstrip() и strip() .
string = ' string of whitespace ' string.lstrip() #=> 'string of whitespace ' string.rstrip() #=> ' string of whitespace' string.strip() #=> 'string of whitespace'
30. Как проверить то, что строка начинается с заданной последовательности символов, или заканчивается заданной последовательностью символов?
Для ответа на этот вопрос можно прибегнуть, соответственно, к методам startswith() и endswith() .
city = 'New York' city.startswith('New') #=> True city.endswith('N') #=> False
31. Как закодировать строку в ASCII?
Метод encode() позволяет кодировать строки с использованием заданной кодировки. По умолчанию используется кодировка utf-8 . Если некий символ не может быть представлен с использованием заданной кодировки, будет выдана ошибка UnicodeEncodeError .
'Fresh Tuna'.encode('ascii') #=> b'Fresh Tuna' 'Fresh Tuna Â'.encode('ascii') #=> UnicodeEncodeError: 'ascii' codec can't encode character '\xc2' in position 11: ordinal not in range(128)
32. Как узнать о том, что строка включает в себя только пробелы?
Есть метод isspace() , который возвращает True только в том случае, если строка состоит исключительно из пробелов.
''.isspace() #=> False ' '.isspace() #=> True ' '.isspace() #=> True ' the '.isspace() #=> False
33. Что случится, если умножить некую строку на 3?
Будет создана новая строка, представляющая собой исходную строку, повторённую три раза.
'dog' * 3 # 'dogdogdog'
34. Как привести к верхнему регистру первый символ каждого слова в строке?
Существует метод title() , приводящий к верхнему регистру первую букву каждого слова в строке.
'once upon a time'.title() #=> 'Once Upon A Time'
35. Как объединить две строки?
Для объединения строк можно воспользоваться оператором + .
'string one' + ' ' + 'string two' #=> 'string one string two'
36. Как пользоваться методом partition()?
Метод partition() разбивает строку по заданной подстроке. После этого результат возвращается в виде кортежа. При этом подстрока, по которой осуществлялась разбивка, тоже входит в кортеж.
sentence = "If you want to be a ninja" print(sentence.partition(' want ')) #=> ('If you', ' want ', 'to be a ninja')
37. Строки в Python иммутабельны. Что это значит?
То, что строки иммутабельны, говорит о том, что после того, как создан объект строки, он не может быть изменён. При «модификации» строк исходные строки не меняются. Вместо этого в памяти создаются совершенно новые объекты. Доказать это можно, воспользовавшись функцией id() .
proverb = 'Rise each day before the sun' print( id(proverb) ) #=> 4441962336 proverb_two = 'Rise each day before the sun' + ' if its a weekday' print( id(proverb_two) ) #=> 4442287440
При конкатенации ‘Rise each day before the sun’ и ‘ if its a weekday’ в памяти создаётся новый объект, имеющий новый идентификатор. Если бы исходный объект менялся бы, тогда у объектов был бы один и тот же идентификатор.
38. Если объявить одну и ту же строку дважды (записав её в 2 разные переменные) — сколько объектов будет создано в памяти? 1 или 2?
В качестве примера подобной работы со строками можно привести такой фрагмент кода:
animal = 'dog' pet = 'dog'
При таком подходе в памяти создаётся лишь один объект. Когда я столкнулся с этим в первый раз, мне это не показалось интуитивно понятным. Но этот механизм помогает Python экономить память при работе с длинными строками.
Доказать это можно, прибегнув к функции id() .
animal = 'dog' print( id(animal) ) #=> 4441985688 pet = 'dog' print( id(pet) ) #=> 4441985688
39. Как пользоваться методами maketrans() и translate()?
Метод maketrans() позволяет описать отображение одних символов на другие, возвращая таблицу преобразования.
Метод translate() позволяет применить заданную таблицу для преобразования строки.
# создаём отображение mapping = str.maketrans("abcs", "123S") # преобразуем строку "abc are the first three letters".translate(mapping) #=> '123 1re the firSt three letterS'
Обратите внимание на то, что в строке произведена замена символов a , b , c и s , соответственно, на символы 1 , 2 , 3 и S .
40. Как убрать из строки гласные буквы?
Один из ответов на этот вопрос заключается в том, что символы строки перебирают, пользуясь механизмом List Comprehension. Символы проверяют, сравнивая с кортежем, содержащим гласные буквы. Если символ не входит в кортеж — он присоединяется к новой строке.
string = 'Hello 1 World 2' vowels = ('a','e','i','o','u') ''.join([c for c in string if c not in vowels]) #=> 'Hll 1 Wrld 2'
41. В каких ситуациях пользуются методом rfind()?
Метод rfind() похож на метод find() , но он, в отличие от find() , просматривает строку не слева направо, а справа налево, возвращая индекс первого найденного вхождения искомой подстроки.
story = 'The price is right said Bob. The price is right.' story.rfind('is') #=> 39
Итоги
Я часто объясняю одному продакт-менеджеру, человеку в возрасте, что разработчики — это не словари, хранящие описания методов объектов. Но чем больше методов помнит разработчик — тем меньше ему придётся гуглить, и тем быстрее и приятнее ему будет работаться. Надеюсь, теперь вы без труда ответите на рассмотренные здесь вопросы.
Уважаемые читатели! Что, касающееся обработки строк в Python, вы посоветовали бы изучить тем, кто готовится к собеседованию?

- Блог компании RUVDS.com
- Веб-разработка
- Python
- Программирование