# String - Str - упорядоченная колекция символов
# строка не изменяемый объект
# длинна строки

print("длинна строки:", len('abc')) # 3 - длинна строки 3 символа
print("длинна строки:", len('')) # 0
print("длинна строки:", len(' ')) # 1

s = "hello"
print("длинна строки:", len(s)) # длинна строки 5 символов

# проверка длины строки
#print("Введите слово:")
#w = input()
#print("Вы ввели:", len(w), " символов.")
#print('54' in w) # проверка на наличие символов в строке

# сравнение строк

print('abc' == 'abc') # тут сравниваются кода этих символов
print('abc' > 'r')


# ascii code table

print(ord("a")) #97
print(ord('v')) #118

# индекс строки

s = 'hello word'
print(s[1], s[6]) #e w
print('hello word'[6]) #w
print('hello word'[-1])

print('hello word'[-3])

# срез строки - s[0:5:0]

s = 'hello word'
print(s[0:5]) #hello
print(s[6:]) #word
print(s[0:5], s[6:], "!") #hello word !
print(s[::2]) #hlowr - выводим каждый 2й символ
print(s[::-1]) #drow olleh

# методы строк
# обьект.метод(аргумент)

s = 'Hello World'
print(s.lower()) # hello world
print(s.upper()) # HELLO WORLD
print(s.capitalize()) # начинает строку с большой буквы
print(s.count('o', 1, 10)) # нашли 'o' - 2 раза, ("что ищим", 1 - с какого индекса, 10 - по какой индекс)
print(s.find('d', 1)) # выдает индекс в троке заданого символа, можно указать с какого символа нужно искать
print(s.find('Wor')) # выдает с какого индекса начинает совпадение
print(s.rfind('d')) # начинает искать с права
print(s.index('r')) # выдает индекс искомого символа, если символа нет, выдает ошибку
print(s.replace('o', '!!!')) #Hell!!! W!!!rld - меняем символы в строке (что, на что, сколько раз)
print(s.replace('l', '_$_', 2)) #He_$__$_o World
print(s.isalpha()) #Возвращает True\False. Проверяет состоит ли строка из букв, пробел дает - False
print(s.isdigit()) #Возвращает True\False. Проверяет состоит ли строка из цифр

d = '111'
print(d.rjust(5)) #дополняет строку, сдвигает В ПРАВО.(общая длинна строки, какими символами дополняется строка)
print(d.rjust(5,'0')) #Во втором аргументе по умолчанию, пробел.
print(d.ljust(5)) #дополняет строку, сдвигает В ЛЕВО.(общая длинна строки, какими символами дополняется строка)
print(d.ljust(5, '_')) #передавать 2 символа, во 2 аргументе нельзя.
w = 'ivanov ivan ivanovich'
print(w.split()) #переводит строку в список, разбивает ее по пробелам, или на знак указанный в аргументе
#['ivanov', 'ivan', 'ivanovich']
print(w.split('o')) #['ivan', 'v ivan ivan', 'vich'] разбил строку по аргументу 'o'

i = '1213,1233,4255,554,636'.split(',')

print(i) #['1213', '1233', '4255', '554', '636']
#print('='.join(i)) #объеденяет строку по выбранному символу, в аргументе указываем переменную, с которой работаем
print('='.join(i)) #1213=1233=4255=554=636
print(' '.join(i)) #1213 1233 4255 554 636
w = 'ivanov ivan ivanovich'
print("+".join(w.split())) #было - 'ivanov ivan ivanovich' \ стало - ivanov+ivan+ivanovich

h = ' Hello \n'
print(h) # Hello

#убирает пробелы, оставляет только строку
print(h.strip())

print(h.rstrip()) #убирает пробелы только С ЛЕВА, оставляет только строку
print(h.lstrip()) #убирает пробелы только С ПРАВА, оставляет только строку

#example
h = 'Hello'
print(h.lower().replace('e', '$$$')) # h$$$llo
print(h.lower().replace('e', '$$$').replace('o', '$$$').upper()) #H$$$LL$$$

# f - string
#1
name = 'Алексей'
midName = 'Алексеевич'
balance = 35.55
text = '''Дорогой, {n} {m}, баланс Вашего счета {b} UAH'''.format(n=name, m=midName, b=balance)

print('1. ', text)

# 2 - внутри скобок можно мользоваться всеми методами {name.lower()} {name.upper()}, проводить вычесления
# так де в них можно вызывать функции
name = 'Алексей'
midName = 'Алексеевич'
balance = 35.55
text =f'''Дорогой, {name.capitalize()} {midName.capitalize()}, баланс Вашего счета {balance} UAH'''
print('2. ',text)


#3 - dict
d = {

'name' : 'Алексей',
'midName' : 'Алексеевич',
'balance' : 35.55
}

text =f'''Дорогой, {d['name']} {d['midName']}, баланс Вашего счета {d.get('balance')} UAH'''
print('3. ', text)


#4 - list
a= [

['Алексей', 'Алексеевич', 35.55],
['Мария', 'Алексеевна', 45.55],
['Александр', 'Иванович', 85.85],
]


for i in a: #в переменную i берем из списка a, выводим на печать
print('4.1', i)


#4.1
for name, midName, balance in a:

print('4.2', name, midName, balance)
#в переменные:
# name = 'Алексей', 'Алексеевич', 35.55,
# midName = 'Мария', 'Алексеевна', 45.55,
# balance = 'Александр', 'Иванович', 85.85
# берем из списка a, выводим на печать.
for name, midName, balance in a:

print(f'''4.3 Дорогой, {name} {midName}, баланс Вашего счета {balance} UAH''')

#4.4
gr = {'m': 'Дорогой', 'f': 'Дорогая'}


a = [
['Алексей', 'Алексеевич', 35.55, 'm'],
['Мария', 'Алексеевна', 45.55, 'f'],
['Александр', 'Иванович', 85.85, 'm'],
]



for name, midName, balance, gr in a:
text = f'''4.4 {gr[gr]}, {name} {midName}, баланс Вашего счета {balance} UAH'''
print(text)