дополните приведенный код используя срезы так чтобы он вывел последние 9 символов строки s
Индексы и срезы строк
На самом деле в Python строка представляются как упорядоченная коллекция символов. И ключевое слово здесь – «упорядоченная». Это значит, что у каждого символа в строке есть свой порядковый номер – индекс, по которому мы можем его получить. Например, когда мы создаем строку
то формируется следующая коллекция:
Каждый символ имеет свой индекс, начиная с нулевого. Первый символ в Python всегда имеет нулевой индекс.
Для обращения к тому или иному символу используется следующий синтаксис:
и так далее. Но, если указать неверный индекс, например:
то возникнет ошибка. Поэтому здесь следует быть аккуратным и не выходить за пределы этого списка. В частности, последний «рабочий» индекс можно определить с помощью функции len – длины строки:
lastIndex = len( ) – 1
То есть, к последнему индексу мы можем обратиться так:
Но это не очень удобно. Поэтому разработчики языка Python решили, что отрицательные индексы будут означать движение по строке с конца в начало. И предыдущую запись можно переписать так:
Видите? Это намного удобнее. То есть, у строк есть еще такие отрицательные индексы:
Также в Python можно использовать доступ к отдельному символу непосредственно у строкового литерала:
Иногда это бывает удобно.
Срезы
Часто в программировании требуется выбрать не один какой-то символ, а сразу несколько. Для этого используются так называемые срезы. Их работу проще показать на конкретных примерах. Пусть у нас есть наша строка:
и мы хотим выделить последнее слово «World!». Для этого в квадратных скобках указывается начальный индекс и через двоеточие – конечный. Если мы запишем все вот в таком виде:
то получим результат «World» без восклицательного знака. Дело в том, что последний индекс исключается из интервала, то есть, интервал определяется как
Поэтому, мы должны записать срез так:
Другой пример для выделения символов «llo»:
и так далее. В Python допускается не указывать начальное или конечное значения, или даже, оба из них. Например:
выделяет слово «Hello», а вот так:
получим «World!». Наконец, записав все в таком виде:
получим ту же самую строку, не копию! Это можно проверить так:
Увидим одно и то же значение id для обеих переменных, это означет, что они ссылаются на один и тот же объект.
В срезах на Python можно дополнительно указывать шаг через двоеточие. Например, так:
мы здесь ставим еще одно двоеточие и указываем шаг 2, то есть, идем через символ: «HloWrd». Также это можно комбинировать с граничными значениями:
и использовать отрицательный шаг:
в этом случае символы будут перебираться в обратном порядке.
Строка – неизменяемый объект
Далее, при работе со строками следует помнить, что это неизменяемый объект, то есть, мы не можем изменять в строковом объекте уже существующие символы, то есть, вот такая запись:
приведет к ошибке, говорящая о том, что строка не может быть изменена. Тогда как в Python нам изменять строки? Для этого создается новая строка с нужным содержимым. Например, изменим строку
Это можно сделать так:
В результате строка myStr ссылается на новую измененную строку, а msg осталась прежней.
Задания для самоподготовки
1. Напишите программу подсчета букв ‘a’ в строке «abrakadabra».
2. Из строки «abrakadabra» удалите все сочетания «ab».
3. Напишите программу определения слова палиндрома (это слова, которые одинаково читаются в обоих направлениях, например, анна, abba и т.п.). Слово вводится с клавиатуры.
4. Напишите программу определения количества вхождений фраз «ra» в слове «abrakadabra».
5. Разделите введенное с клавиатуры предложение на слова (слова разделяются пробелом).
Видео по теме
Python 3 #1: установка и запуск интерпретатора языка
Python 3 #2: переменные, оператор присваивания, типы данных
Python 3 #3: функции input и print ввода/вывода
Python 3 #4: арифметические операторы: сложение, вычитание, умножение, деление, степень
Python 3 #5: условный оператор if, составные условия с and, or, not
Python 3 #6: операторы циклов while и for, операторы break и continue
Python 3 #9: списки list и функции len, min, max, sum, sorted
Python 3 #12: словарь, методы словарей: len, clear, get, setdefault, pop
Python 3 #13: кортежи (tuple) и операции с ними: len, del, count, index
Python 3 #15: делаем «Сапер», проектирование программ «сверху-вниз»
Python 3 #16: рекурсивные и лямбда-функции, функции с произвольным числом аргументов
Python 3 #17: алгоритм Евклида, принцип тестирования программ
Python 3 #19: множества (set) и операции над ними: вычитание, пересечение, объединение, сравнение
Python 3 #20: итераторы, выражения-генераторы, функции-генераторы, оператор yield
Python 3 #21: функции map, filter, zip
Python 3 #22: сортировка sort() и sorted(), сортировка по ключам
Python 3 #23: обработка исключений: try, except, finally, else
Python 3 #25: форматирование строк: метод format и F-строки
Python 3 #28: декораторы функций и замыкания
Python 3 #29: установка и порядок работы в PyCharm
Python 3 #30: функция enumerate, примеры использования
© 2021 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта
Занятия по ПИТОНу. Занятие 5. Строки
Я несколько лет знакомился с материалами Foxford.
Эта же теория с видео. И тогда всё станет понятно.
После 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)
Если входные данные Hello world – ответ 2
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)
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)
Решение разработчиков
s = input()
if s.count(‘f’) == 1:
print(s.find(‘f’))
elif s.count(‘f’) >= 2:
print(s.find(‘f’), s.rfind(‘f’))
Входные данные:
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],”))
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’))
Python Урок 5. Немного о строках. Срезы
Немного о строках
Операции со строками
a=»па» b=»рад» print(a+b) # парад
a=»кар» print (a*4) # каркаркаркар
a=»парад» print (a[2]) # р
a=»парад» print (len(a)) # 5
Срезы
X – это индекс начала среза, а Y – его окончания
tday = ‘morning, afternoon, night’ tday[0:7] # ‘morning’
s = ‘spameggs’ s[3:5] # ‘me’ s[2:-2] # ‘ameg’ s[-4:-2] # ‘eg’ s[:6] # ‘spameg’ s[1:] # ‘pameggs’ s[:] # ‘spameggs’
s = ‘spameggs’ s[::-1] # ‘sggemaps’ s[3:5:-1] # » s[2::2] # ‘aeg’
s = ‘spameggs’ x=3 l=len(s)//3 for i in range(l): print(s[x:x+1:3]) # m g x+=3
Для решения можно использовать просто срез:
s = ‘spameggs’ print(s[1::3])
Условный оператор не использовать.
Условный оператор не использовать.
Методы строк
Строки, как объекты Python, обладают методами (т.е. функциями, которые выполняют сами объекты).
s=»hello» s1=»-«.join(s) s1 # ‘h-e-l-l-o’
s1=»abrakadabra»; s1.find(‘br’) # 1
s1=»breKeKeKeKs»; ss=s1.replace(‘Ke’,’XoXo’,2) ss # breXoXoXoXoKeKs
Подсказка:
from datetime import date # Получаем текущую дату d1=date.today() # Преобразуем результат в строку ds=str(d1)
Например: c:/изображения/2018/1.jpg
Результат:
Примечание:
Для решения используйте алгоритм, изображенный на блок-схеме:
Форматирование строк
Python включает форматирование строк. Данное понятие подразумевает подстановку какого-либо шаблона в определенное место (или в определенные позиции) текста. Подстановка происходит, что называется, «на лету».
Рассмотрим пример использования в коде на Python метода format:
‘Hello, <>!’.format(‘Vasya’) # ‘Hello, Vasya!’
Аргументом метода является текст-подстановка, который при исполнении программы подставляется на место фигурных скобок.
‘<0><1><0>‘.format(‘abra’, ‘cad’) # ‘abracadabra’
Подстановки нумеруются, аргументы метода format заполняют позиции для подстановок согласно их порядковым номерам, указанным в фигурных скобках.
Аргументы метода format заполняются согласно указанным именам заполнителей.
Используйте шаблон объявления и ориентируйтесь по цветам:
Красным – массивы.
Коричневым – числовая переменная.
Решение модуля 7.5 из курса «Поколение python: курс для начинающих»
Полное решение модуля (урока) 7.5 Цикл while: обработка цифр числа на питоне + ответы.
Дано натуральное число. Напишите программу, которая выводит его цифры в столбик в обратном порядке.
Формат входных данных
На вход программе подается одно натуральное число.
Формат выходных данных
Программа должна вывести цифры введенного числа в столбик в обратном порядке.
Дано натуральное число. Напишите программу, которая меняет порядок цифр числа на обратный.
Формат входных данных
На вход программе подается одно натуральное число.
Формат выходных данных
Программа должна вывести число записанное в обратном порядке.
Дано натуральное число n, \, (n \ge 10)n,(n≥10). Напишите программу, которая определяет его максимальную и минимальную цифры.
Формат входных данных
На вход программе подается одно натуральное число.
Формат выходных данных
Программа должна вывести максимальную и минимальную цифры введенного числа (с поясняющей надписью).
Дано натуральное число. Напишите программу, которая вычисляет:
сумму его цифр;
количество цифр в нем;
произведение его цифр;
среднее арифметическое его цифр;
его первую цифру;
сумму его первой и последней цифры.
Формат входных данных
На вход программе подается одно натуральное число.
Формат выходных данных
Программа должна вывести значения указанных величин в указанном порядке.
Дано натуральное число n \, (n > 9)n(n>9). Напишите программу, которая определяет его вторую (с начала) цифру.
Формат входных данных
На вход программе подается одно натуральное число, состоящее как минимум из двух цифр.
Формат выходных данных
Программа должна вывести его вторую (с начала) цифру.
Дано натуральное число. Напишите программу, которая определяет, состоит ли указанное число из одинаковых цифр.
Формат входных данных
На вход программе подается одно натуральное число.
Формат выходных данных
Программа должна вывести «YES» если число состоит из одинаковых цифр и «NO» в противном случае.
Упорядоченные цифры 🌶️
Дано натуральное число. Напишите программу, которая определяет, является ли последовательность его цифр при просмотре справа налево упорядоченной по неубыванию.
Формат входных данных
На вход программе подается одно натуральное число.
Формат выходных данных
Программа должна вывести «YES» если последовательность его цифр при просмотре справа налево является упорядоченной по неубыванию и «NO» в противном случае.
Дополните приведенный код используя срезы так чтобы он вывел последние 9 символов строки s
Сначала выведите третий символ этой строки.
Во второй строке выведите предпоследний символ этой строки.
В третьей строке выведите первые пять символов этой строки.
В четвертой строке выведите всю строку, кроме последних двух символов.
В пятой строке выведите все символы с четными индексами (считая, что индексация начинается с 0, поэтому символы выводятся начиная с первого).
В шестой строке выведите все символы с нечетными индексами, то есть начиная со второго символа строки.
В седьмой строке выведите все символы в обратном порядке.
В восьмой строке выведите все символы строки через один в обратном порядке, начиная с последнего.
В девятой строке выведите длину данной строки.
Ввод | Вывод |
---|
B: В обратном порядке
Дана строка. Выведите её символы в обратном порядке, по одном символу в строке.
C: Количество слов
D: Замена подстроки
E: Удаление символа
F: Две половинки
Дана строка. Разрежьте ее на две равные части (если длина строки — четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами.
Результат запишите в отдельную переменную и выведите на экран следующим образом: print(«*» + s + «*»)
Решение, в котором ответ выводится по-другому, приниматься не будет.
G: Переставить два слова
Дана строка, состоящая ровно из двух слов, разделенных пробелом. Переставьте эти слова местами.
H: Дробь
I: Удаление слова
Текст состоит из слов, разделённых пробелами. В тексте как минимум три слова. Удалите из текста второе слово.
Решение выведите так же, как в задаче «Две половинки».
В этой задаче нельзя использовать методы count и replace. Также желательно использовать метод find с двумя параметрами, вместо вызова метода find к срезу.
Ввод | Вывод |
---|
J: Повторение слова
Текст состоит из слов, разделённых пробелами. В тексте как минимум два слова. Продублируйте второе слово в тексте.
В этой задаче нельзя использовать методы count и replace. Также желательно использовать метод find с двумя параметрами, вместо вызова метода find к срезу.
Ввод | Вывод |
---|
K: Разворот слова
Текст состоит из слов, разделённых пробелами. В тексте как минимум одно слово. Переставьте буквы второго слова (если оно есть) в обратном порядке.
Решение выведите так же, как в задаче «Две половинки».
В этой задаче нельзя использовать методы count и replace. Также желательно использовать метод find с двумя параметрами, вместо вызова метода find к срезу.
Ввод | Вывод |
---|
L: Футбольный матч
На табло стадиона в конце игры горит надпись:
где Название 1 и Название 2 — названия двух команд, а A:B — счёт матча.
Определите, какая команда победила.
Названия команд могут содержать любые символы (буквы, цифры, знаки), кроме «-» и «:». Символы «-» и «:» содержатся в строке ровно по одному разу.
Решение выведите так же, как в задаче «Две половинки».
Ввод | Вывод |
---|
M: Вставка символов
Дана строка. Получите новую строку, вставив между каждыми соседними символами исходной строки символ «.». Выведите полученную строку.
В этой задаче можно использовать цикл, но можно обойтись и без него (нужно догадаться самому).
N: Удалить каждый третий символ
Дана строка. Удалите из нее все символы, чьи индексы делятся на 3.
Решение выведите так же, как в задаче «Две половинки».
В этой задаче вам придётся использовать цикл.
Ввод | Вывод |
---|
O: Метод бутерброда
К сожалению, программист агентства, написал только программу шифрования и уволился. И теперь агенты не могут понять, что же они написали друг другу. Помогите им.
Вводится слово, зашифрованное методом бутерброда. Выведите расшифрованное слово.
Решение выведите так же, как в задаче «Две половинки».
В этой задаче можно обойтись без цикла (и это не очень сложно), но цикл не запрещается.
P: Скрытие адреса email
Для защиты от ботов, собирающих с web-страниц адреса электронной почты для рассылки спама, используются методы скрытия адреса электронной почты. Рассмотрим самый простой метод скрытия: в адресе электронной почты символы «.» меняются на «(dot)», символ «@» меняется на «(at)».
Дана строка текста, в ней есть один адрес электронной почты (он содержит один символ «@»). В адресе электронной почты (считайте, что адрес — это слово, отделённое пробелами) выполните указанные замены, в остальных местах замены производить не нужно.
Решение выведите так же, как в задаче «Две половинки».
Ввод | Вывод |
---|
Q: Смайлики
Напишите программу, которая посчитает количество смайликов в заданном тексте.
Например, нижеприведенные последовательности являются смайликами:
в то время как эти последовательности смайликами не являются (хотя некоторые из них содержат смайлики внутри):
В этой задаче надо будет посчитать количество смайликов, содержащихся в данной строке.
Выведите одно число — количество смайликов, которые встречаются в тексте.
Эту задачу можно решить в одну строчку.
ZA: Максимальный подпалиндром
Палиндромом называется строка, которая читается одинаково как слева направо, так и справа налево. Примеры палиндромом: RADAR, RACECAR.
В данной строке найдите подстроку максимальной длины, являющуюся палиндромом, и выведите её. Если таких строк несколько, выведите ту, которая находится ближе к началу строки.
Ввод | Вывод |
---|
ZB: Дополни до палиндрома
Дано слово. Определите, какое наименьшее количество символов нужно дописать в конец этой строки, чтобы получился палиндром.
Ввод | Вывод |
---|
ZC: Клад
Путь к кладу задан в виде указаний, какое количество шагов нужно пройти в одном из четырёх направлений: север (N), юг (S), запад (W), восток (E). Весь маршрут записан в виде строки, содержащей последовательность из чисел и следующих за числами букв, указывающих направление перемещения. Например, строка «7N5E2S3E» означает «пройти 7 шагов на север, 5 шагов на восток, 2 шага на юг, 3 шага на восток». В маршруте может быть много команд перемещения, поэтому каждый такой маршрут можно сократить. Например, ранее приведённый маршрут можно сократить до «5N8E». По данному маршруту до клада сократите его до строки минимальной длины.
Программа должна вывести маршрут, ведущий в ту же точку, записанный в таком же виде, как во входных данных, используя минимальное число символов. Если ответов несколько, программа должна вывести один (любой) из них.
Ввод | Вывод |
---|
ZD: Удалить один символ
Определите, какой символ нужно удалить из данной строки, чтобы она стала палиндромом.
Программа получает на вход одну строку и должна вывести единственное число: номер символа в строке, при удалении которой слово становится палиндромом, нумерация начинается с 1. Если при удалении любого символа строка не станет палиндромом, программа должна вывести число 0.