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

Здравствуйте, я новичок и только начал изучать язык программирования 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)
  • Вопрос задан
  • 112 просмотров
Решения вопроса 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.

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

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

Войти через центр авторизации
Похожие вопросы