Занятия по ПИТОНу. Занятие 5. Строки

Автор: | 17.10.2020

Я несколько лет знакомился с материалами Foxford.

Немного теории с этого сайта.

Эта же теория с видео. И тогда всё станет понятно.

Сайт: http://pythontutor.ru/lessons/str/problems/slices1/

После 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

  1. Задача «Две половинки»
    Условие

    Дана строка. Разрежьте ее на две равные части (если длина строки — четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами, результат запишите в новую строку и выведите на экран.
    При решении этой задачи не стоит пользоваться инструкцией 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)

  1. Задача «Переставить два слова»
    Условие

    Дана строка, состоящая ровно из двух слов, разделенных пробелом. Переставьте эти слова местами. Результат запишите в строку и выведите получившуюся строку.
    При решении этой задачи не стоит пользоваться циклами и инструкцией 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)

  1. Задача «Первое и последнее вхождения»
    Условие

    Дана строка. Если в этой строке буква 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

Решения участников:
s=input()
i=s.count(“f”)
j=s.find(“f”)
if i==1:
print (-1)
elif i==0:
print (-2)
elif i>=2:
print(s[j+1::].find(“f”)+j+1)

  1. Задача «Удаление фрагмента»
    Условие

    Дана строка, в которой буква 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],”))

  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’))

  1. Задача «Замена внутри фрагмента»
    Условие

    Дана строка. Замените в этой строке все появления буквы 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)