Изменение определённого объекта в списке в Python
Хочу узнать,как менять определённый тип объектов в списке,если список состоит из неопределённого количества разных объектов разных типов данных: Например,нужно,чтобы это:
> Input:
> Олег заработал сегодня 3000 рублЯ
> Маша заработала сегодня 3123 рублЯ
> Витя заработал сегодня 3441 рублЬ
Превратилось в это (здесь сумма увеличится,допустим,на 20 процентов):
> Output:
> Олег заработал сегодня 3600 рублЕЙ
> Маша заработала сегодня 3747 рублЕЙ и 60 копеек
> Витя заработал сегодня 3,129 рублЕЙ и 20 копеек
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
можно так:
value = 3712
words = ['рубль', 'рубля', 'рублей']
word = words[2 if 10 <= value % 100 <= 20 or value % 10 > 4 else 0 if value % 10 == 1 else 1]
print(f'{value} {word}')
если нужно обработать запрос вида
[имя операция] [действие] [дата] [значение] [валюта],
то можно так:
def getForm(value, forms):
return forms[2 if 10 <= value % 100 <= 20 or value % 10 > 4 else 0 if value % 10 == 1 else 1]
text = 'Олег заработал сегодня 3000 рублей'
coeff = 3.141592
elements = text.split()
value = float(elements[3]) * coeff
rubles = int(value)
kopecks = int(100 * (value - rubles))
text = ' '.join([elements[0], elements[1], str(rubles), getForm(rubles, ['рубль', 'рубля', 'рублей'])] + ([] if kopecks == 0 else [str(kopecks), getForm(kopecks, ['копейка', 'копейки', 'копеек'])]))
print(text)