Задать вопрос

Как написать исправить этот код?

Здравствуйте, я новичок и только начал изучать язык программирования Python и поставил перед собой цель сделать один код. Смысл заключается в том что в зависимости от суммы будет выводиться текст 'рублей' , 'рубль' или 'рубля' . Я не могу понять в чём моя ошибка, прошу о помощи.
x = float(input("Введите первое число "))
c = float(input("Введите второе число "))
def sum (a,b):
    return a + b
def minus (a,b):
    return a - b
def MOD (a,b):
    return a // b
def DIV (a,b):
    return round(a % b / b,2)

rub = 'рубль' or 'рублей' or 'рубля'
ch100 = (sum(x,c) - sum(x,c) // 100 * 100)
ch10 = (ch100 // 10)
pr10 = (ch100 % 10)
pr100 = round(pr10 / 10, 2)
if (ch10 == 1):
    rub = 'рублей'
elif (pr10 == 1):
    rub = 'рубль'
elif (pr10 == 2) or (pr10 == 3) or (pr10 == 4):
    rub = 'рубля'
else:
    rub = 'рублей'

z = sum(x,c)
print('Сумма',z)
z = minus(x,c)
print('Разница',z)
z = MOD(x,c)
print(sum(x,c), rub)
n = DIV(x,c)
print('Остаток от деления',n)
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Ну во-первых, обычно не имеет смысл объявлять функции из одного оператора, особенно если они вызываются лишь однажды. Это только усложняет код.
Во-вторых, строка rub = 'рубль' or 'рублей' or 'рубля' не имеет ни смысла, ни эффекта. Просто убери её.
В-третьих, чтобы определить последнюю цифру (две) достаточно операции деления с остатком на 10 (100). Делить число нацело не требуется.
В-четвёртых, составь сначала алгоритм словами:
если две последние цифры 11, 12, 13, 14 или последняя цифра 0, 5, 6, 7, 8, 9 - "рублей"
иначе если последняя цифра 2, 3, 4 - "рубля",
иначе - "рубль"

Можно проверить вхождение значения в список так:
if last_digit in (0, 5, 6, 7, 8, 9):
    ...

Это удобнее, чем цепочка or.

Дальше на питон перепишешь сам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽