'''Методы и функции
Мы уже знакомы с некоторыми встроенными функциями: min(),max(),len(),int(),float() и т.д. Метод — специализированная
функция, тесно связанная с объектом. Как и функция, метод вызывается для выполнения отдельной задачи, но он вызывается
 для определенного объекта и “знает” о своем целевом объекте во время выполнения.

Таким образом: метод — функция, применяемая к объекту. В данном случае к строке. Метод вызывается в виде
имя_объекта.имя_метода(параметры).

Например, s.find('e') — это применение к строке s метода find с одним параметром 'e'.

Методы строкового типа данных можно разделить на три группы:

Конвертация регистра;
Поиск и замена;
Классификация символов.'''
'''Конвертация регистра
Методы в этой группе выполняют преобразование регистра для строк.
Метод capitalize()
Метод capitalize() возвращает копию строки s, в которой первый символ имеет верхний регистр, а все остальные символы 
имеют нижний регистр.
Результатом выполнения следующего кода:
s = 'foO BaR BAZ quX'
print(s.capitalize())
будет:
Foo bar baz qux
Символы, не являющиеся буквами алфавита, остаются неизменными. Результатом выполнения следующего кода:'''
# s = 'foo123#BAR#.'
# print(s.capitalize())
'''будет:
Foo123#bar#.'''
'''Метод swapcase()
Метод swapcase() возвращает копию строки s, в которой все символы, имеющие верхний регистр, преобразуются в
 символы нижнего регистра и наоборот.
 Результатом выполнения следующего кода:
s = 'FOO Bar 123 baz qUX'
print(s.swapcase())
будет:
foo bAR 123 BAZ Qux'''
'''Метод title()
Метод title() возвращает копию строки s, в которой первый символ каждого слова переводится в верхний регистр.

Результатом выполнения следующего кода:

s = 'the sun also rises'
print(s.title())
будет:

The Sun Also Rises 
Этот метод использует довольно простой алгоритм: он не пытается различить важные и неважные слова и не 
обрабатывает аббревиатуры и апострофы. Результатом выполнения следующего кода:

s = "what's happened to ted's IBM stock?"
print(s.title())
будет:

What'S Happened To Ted'S Ibm Stock?'''
''' Метод lower()
Метод lower() возвращает копию строки s, в которой все символы имеют нижний регистр.

Результатом выполнения следующего кода:

s = 'FOO Bar 123 baz qUX'
print(s.lower())
будет:

foo bar 123 baz qux
Метод upper()
Метод upper() возвращает копию строки s, в которой все символы имеют верхний регистр.

Результатом выполнения следующего кода:

s = 'FOO Bar 123 baz qUX'
print(s.upper())
будет:

FOO BAR 123 BAZ QUX
Одно очень важное замечание о методах данной категории состоит в том, что они не изменяют исходную строку. 
Если вы хотите изменить строку s нужно написать код: s = s.lower().'''

'''Примечание
Англо-русский словарик:
capitalize — писать прописными буквами, закрепить.
swapcase — обменять регистр. swap — гл. обмениваться, case — случай, регистр, падеж, дело, расследование...
title — заголовок, титул.
lower — нижний.
upper — верхний.'''
# s = '$12344%^$#@!'
# print(s.lower())

# s = 'i LEARN Python LAnguaGE'
# print(s.upper())
# s = 'i LEARN Python LAnguaGE'
# print(s.swapcase())
'''Заглавные буквы
На вход программе подается строка состоящая из имени и фамилии человека, разделенных одним пробелом. Напишите 
программу, которая проверяет, что имя и фамилия начинаются с заглавной буквы.
Формат входных данных 
На вход программе подается строка.
Формат выходных данных
Программа должна вывести «YES» если имя и фамилия начинаются с заглавной буквы и «NO» в противном случае.
Примечание. Строка содержит только буквы. '''
# s = input()
# if s == s.title():
#     print('YES')
# else:
#     print('NO')

# s = input()
# print(s.swapcase())

'''Хороший оттенок
На вход программе подается строка текста. Напишите программу, которая определяет является ли оттенок текста хорошим
 или нет. Текст имеет хороший оттенок, если содержит подстроку «хорош» во всевозможных регистрах.
Формат входных данных 
На вход программе подается строка текста.
Формат выходных данных
Программа должна вывести «YES» если текст имеет хороший оттенок и «NO» в противном случае.
Примечание. Текст содержащий хорош, ХОРОШ, Хорош, хОРОШ и т.д. имеет хороший оттенок.'''
# s = input()
# if 'хорош' in s.lower():
#     print('YES')
# else:
#     print('NO')
'''Нижний регистр
На вход программе подается строка. Напишите программу, которая подсчитывает количество буквенных символов в нижнем 
регистре.
Формат входных данных 
На вход программе подается строка.
Формат выходных данных
Программа должна вывести количество буквенных символов в нижнем регистре.'''
# s = input()
# count = 0
# for i in range(len(s)):
#     if s[i].islower():
#         count += 1
# print(count)
#
# s = input()
# count = 0
# for i in s:
#     if i != i.upper():
#         count += 1
# print(count)