- Занятия по ПИТОНу. Занятие 5. Строки
- Find python второе вхождение
- 2. Срезы (slices)
- Find python второе вхождение
- S.capitalize()
- S.upper()
- S.lower()
- S.count(sub)
- S.count(sub[, start[, end]]
- S.find(sub)
- S.find(sub[, start[, end]])
- S.index(sub)
- S.index(sub[, start[, end]])
- S.replace(old, new[, count])
- S.isalpha()
- S.isdigit()
- S.rjust(width[, fillchar])
Занятия по ПИТОНу. Занятие 5. Строки
После if и for не забудьте отрегулировать отступы пробелами или Tab
1.Задача «Делаем срезы»
Условие
Дана строка.
Сначала выведите третий символ этой строки.
Во второй строке выведите предпоследний символ этой строки.
В третьей строке выведите первые пять символов этой строки.
В четвертой строке выведите всю строку, кроме последних двух символов.
В пятой строке выведите все символы с четными индексами (считая, что индексация начинается с 0, поэтому символы выводятся начиная с первого).
В шестой строке выведите все символы с нечетными индексами, то есть начиная со второго символа строки.
В седьмой строке выведите все символы в обратном порядке.
В восьмой строке выведите все символы строки через один в обратном порядке, начиная с последнего.
В девятой строке выведите длину данной строки.
Входные данные: Abrakadabra
s = input() # И далее оператор и значение ниже
print(s[2])
r
print(s[-2])
r
print(s[:5])
Abrak
print(s[:-2])
Abrakadab
print(s[::2])
Arkdba
print(s[1::2])
baaar
print(s[::-1])
arbadakarbA
print(s[::-2])
abdkrA
print(len(s))
11
2.Задача «Количество слов»
Условие
Дана строка, состоящая из слов, разделенных пробелами. Определите, сколько в ней слов. Используйте для решения задачи метод count.
a=input()
s=1
for i in range(0, len(a)):
if a[i]==” “:
s+=1
print(s)
a=input() s=1 for i in range(0, len(a)): if a[i]==" ": s+=1 print(s) Видны все преимущества Питона
Если входные данные Hello world – ответ 2
- Задача «Две половинки»
Условие
Дана строка. Разрежьте ее на две равные части (если длина строки — четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами, результат запишите в новую строку и выведите на экран.
При решении этой задачи не стоит пользоваться инструкцией if.
Решение.
import math
a=input()
s=len(a)
l=math.ceil(s/2)
print(a[l::]+a[0:l])
Решение разработчиков
s = input()
print(s[(len(s) + 1) // 2:] + s[:(len(s) + 1) // 2])
Если входные данные – Hello, то результат будет – loHel
Для Qwerty результат – rtyQwe
Ещё решение участника
from math import *
S = input()
l = len(S)
num = int(l)
num1 = int(ceil(num / 2))
num2 = int(floor(num – num1))
str = S[: num1]str2 = S[num1:]print(str2 + str)
- Задача «Переставить два слова»
Условие
Дана строка, состоящая ровно из двух слов, разделенных пробелом. Переставьте эти слова местами. Результат запишите в строку и выведите получившуюся строку.
При решении этой задачи не стоит пользоваться циклами и инструкцией if.
Во всех задачах считывайте входные данные через input() и выводите ответ через print().
Входные данные: Hello, world!
Выходные данные: world! Hello,
s = input()
first_word = s[:s.find(‘ ‘)]second_word = s[s.find(‘ ‘) + 1:]print(second_word + ‘ ‘ + first_word)
Примеры решений участниками:
s=input()
i=s.find(” “)
print(s[i+1::]+” “+s[0:i+1])
n = input()
a = n.find(‘ ‘)
x = n[0:a]y = n[a:]print(y + ‘ ‘ + x)
a,b=input().split()
print(b,a)
- Задача «Первое и последнее вхождения»
Условие
Дана строка. Если в этой строке буква f встречается только один раз, выведите её индекс. Если она встречается два и более раз, выведите индекс её первого и последнего появления. Если буква f в данной строке не встречается, ничего не выводите.
При решении этой задачи не стоит использовать циклы.
Во всех задачах считывайте входные данные через input() и выводите ответ через print().
Входные данные:
comfort –Ответ 3
office –Ответ 1 2
fffffffffffffff – Ответ 0 14
afafafafafafafa – Ответ 1 13
Решение разработчиков
s = input()
if s.count(‘f’) == 1:
print(s.find(‘f’))
elif s.count(‘f’) >= 2:
print(s.find(‘f’), s.rfind(‘f’))
Примеры решений участниками:
s=input()
i=s.find(“f”)
j=len(s)-1-s[::-1].find(“f”)
if i==j:
print(i)
elif j>i and i!=-1:
print(i,j)
s = input()
s1 = s.find(‘f’)
s2 = s.rfind(‘f’)
if s1 == s2 and s1 != -1:
print(s1)
elif s1 != s2:
print(s1, s2)
6. Задача «Второе вхождение»
Условие
Дана строка. Найдите в этой строке второе вхождение буквы f,
и выведите индекс этого вхождения.
Если буква f в данной строке встречается только один раз, выведите число -1,
а если не встречается ни разу, выведите число -2.
Решение разработчиков s = input() if s.count('f') == 1: print(-1) elif s.count('f') < 1: print(-2) else: print(s.find('f', s.find('f') + 1))
Входные данные и Выходные данные komfort -1 qwerty -2 ff 1 foooooooooooooof 15 ofofofofofofofofo 3
- Задача «Удаление фрагмента»
Условие
Дана строка, в которой буква h встречается минимум два раза. Удалите из этой строки первое и последнее вхождение буквы h, а также все символы, находящиеся между ними.
Во всех задачах считывайте входные данные через input() и выводите ответ через print().
Входные данные:
In the hole in the ground there lived a hobbit
Выходные данные: In tobbit
Решение разработчиков
s = input()
s = s[:s.find(‘h’)] + s[s.rfind(‘h’) + 1:]print(s)
Решение участника:
s = input()
print(s.replace(s[s.find(‘h’):s.rfind(‘h’)+1],”))
- Задача «Обращение фрагмента»
Условие
Дана строка, в которой буква h встречается как минимум два раза. Разверните последовательность символов, заключенную между первым и последним появлением буквы h, в противоположном порядке.
s = input()
a = s[:s.find(‘h’)]b = s[s.find(‘h’):s.rfind(‘h’) + 1]c = s[s.rfind(‘h’) + 1:]s = a + b[::-1] + c
print(s)
Входные данные: In the hole in the ground there lived a hobbit
Выходные данные: In th a devil ereht dnuorg eht ni eloh ehobbit
9. Задача «Замена подстроки»
Условие
Дана строка. Замените в этой строке все цифры 1 на слово one.
Во всех задачах считывайте входные данные через input() выводите ответ через print().
Входные данные: 1+1=2 Выходные данные: one+one=2
1213141516171819101 one2one3one4one5one6one7one8one9one0one
Решение разработчиков
print(input().replace(‘1’, ‘one’))
- Задача «Замена внутри фрагмента»
Условие
Дана строка. Замените в этой строке все появления буквы h на букву H, кроме первого и последнего вхождения.
Решение разработчиков
s = input()
a = s[:s.find(‘h’) + 1]b = s[s.find(‘h’) + 1:s.rfind(‘h’)]c = s[s.rfind(‘h’):]s = a + b.replace(‘h’, ‘H’) + c
print(s)
Решение участника:
s = input()
firsth = s.find(‘h’)
lasth = s.rfind(‘h’)
x = s[:firsth+1]c = s[lasth:]b = s[firsth+1:lasth]print(x + b.replace(‘h’,’H’) + c)
Find python второе вхождение
Строка считывается со стандартного ввода функцией input() . Напомним, что для двух строк определена операция сложения (конкатенации), также определена операция умножения строки на число.
Строка состоит из последовательности символов. Узнать количество символов (длину строки) можно при помощи функции len .
Любой другой объект в Питоне можно перевести к строке, которая ему соответствует. Для этого нужно вызвать функцию str() , передав ей в качестве параметра объект, переводимый в строку.
На самом деле каждая строка, с точки зрения Питона, — это объект класса str. Чтобы получить по объекту другой объект другого класса, как-то ему соответствующий, можно использовать функцию приведения. Имя этой функции совпадает с именем класса, к которому мы приводим объект. (Для знатоков: эта функция — это конструктор объектов данного класса.) Пример: int — класс для целых чисел. Перевод строки в число осуществляется функцией int() .
s = input() print(len(s)) t = input() number = int(t) u = str(number) print(s * 3) print(s + ' ' + u)
2. Срезы (slices)
Срез (slice) — извлечение из данной строки одного символа или некоторого фрагмента подстроки или подпоследовательности.
Есть три формы срезов. Самая простая форма среза: взятие одного символа строки, а именно, S[i] — это срез, состоящий из одного символа, который имеет номер i . При этом считается, что нумерация начинается с числа 0. То есть если , то , , , , .
Заметим, что в Питоне нет отдельного типа для символов строки. Каждый объект, который получается в результате среза S[i] — это тоже строка типа str.
Номера символов в строке (а также в других структурах данных: списках, кортежах) называются индексом.
Если указать отрицательное значение индекса, то номер будет отсчитываться с конца, начиная с номера -1 . То есть , , , , .
Или в виде таблицы:
Строка S | H | e | l | l | o |
Индекс | S[0] | S[1] | S[2] | S[3] | S[4] |
Индекс | S[-5] | S[-4] | S[-3] | S[-2] | S[-1] |
Если же номер символа в срезе строки S больше либо равен len(S) , или меньше, чем -len(S) , то при обращении к этому символу строки произойдет ошибка IndexError: string index out of range .
Срез с двумя параметрами: S[a:b] возвращает подстроку из b — a символов, начиная с символа c индексом a , то есть до символа с индексом b , не включая его. Например, S[1:4] == ‘ell’ , то же самое получится если написать S[-4:-1] . Можно использовать как положительные, так и отрицательные индексы в одном срезе, например, S[1:-1] — это строка без первого и последнего символа (срез начинается с символа с индексом 1 и заканчиватеся индексом -1, не включая его).
При использовании такой формы среза ошибки IndexError никогда не возникает. Например, срез S[1:5] вернет строку ‘ello’ , таким же будет результат, если сделать второй индекс очень большим, например, S[1:100] (если в строке не более 100 символов).
Если опустить второй параметр (но поставить двоеточие), то срез берется до конца строки. Например, чтобы удалить из строки первый символ (его индекс равен 0), можно взять срез S[1:] . Аналогично если опустить первый параметр, то можно взять срез от начала строки. То есть удалить из строки последний символ можно при помощи среза S[:-1] . Срез S[:] совпадает с самой строкой S .
Любые операции среза со строкой создают новые строки и никогда не меняют исходную строку. В Питоне строки вообще являются неизменяемыми, их невозможно изменить. Можно лишь в старую переменную присвоить новую строку.
На самом деле в питоне нет и переменных. Есть лишь имена, которые связаны с какими-нибудь объектами. Можно сначала связать имя с одним объектом, а потом — с другим. Можно несколько имён связать с одним и тем же объектом.
Если задать срез с тремя параметрами S[a:b:d] , то третий параметр задает шаг, как в случае с функцией range , то есть будут взяты символы с индексами a , , и т. д. При задании значения третьего параметра, равному 2, в срез попадет кажый второй символ, а если взять значение среза, равное -1 , то символы будут идти в обратном порядке. Например, можно перевернуть строку срезом S[::-1] .
s = 'abcdefg' print(s[1]) print(s[-1]) print(s[1:3]) print(s[1:-1]) print(s[:3]) print(s[2:]) print(s[:-1]) print(s[::2]) print(s[1::2]) print(s[::-1])
Find python второе вхождение
Ниже в таблицы приведены все встроенные методы строк и примеры по их использованию.
>>> s="aBCD EFG HjK" >>> s.capitalize() 'Abcd efg hjk'
S.capitalize()
>>> s="aBCd!@!#EfG1234HjK" >>> s.upper() 'ABCD!@!#EFG1234HJK'
S.upper()
>>> s="aBCd!@!#EfG1234HjK" >>> s.lower() 'abcd!@!#efg1234hjk'
S.lower()
>>> s='abracadabra' >>> s.count('a') 5 >>> s.count('abra') 2 >>> s='aaaa' >>> s.count('aa') 2
S.count(sub)
>>> s='abracadabra' >>> s.count('a', 4) 3 >>> s.count('a', 4, 5) 0 >>> s.count('a', 4, 6) 1
S.count(sub[, start[, end]]
>>> s='abracadabra' >>> s.find('ra') 2 >>> s.find('bro') -1
S.find(sub)
>>> s='abracadabra' >>> s.find('ab', 1) 7 >>> s.find('ab', 1, 7) -1
S.find(sub[, start[, end]])
>>> s='Hasta la vista, baby' >>> s.index('st') 2 >>> s.index('ts') ValueError: substring not found
S.index(sub)
>>> s='Hasta la vista, baby' >>> s.index('st', 4) 11 >>> s.index('st', 4, 10) ValueError: substring not found
S.index(sub[, start[, end]])
>>> s='Hasta la vista, baby' >>> s.replace('a','. ') 'H. st. l. vist. b. by' >>> s.replace('a','. ', 2) 'H. st. la vista, baby' >>> s.replace('a','') 'Hst l vist, bby'
S.replace(old, new[, count])
>>> s='qwerty' >>> s.isalpha() True >>> s='qwerty1' >>> s.isalpha() False
S.isalpha()
>>> s='123456' >>> s.isdigit() True >>> s='123 456' >>> s.isdigit() False >>> '432abc'.isdigit() False
S.isdigit()
>>> s='123' >>> s.rjust(6) ' 123' >>> s.rjust(6,'-') '---123' >>> s.rjust(6,'0') '000123' >>> s.rjust(2) '123'
S.rjust(width[, fillchar])
>>> s='123' >>> s.ljust(6) '123 ' >>> s.ljust(6,'?') '123. ' >>> s.ljust(6,'0') '123000' >>> s.ljust(2) '123'