Решаю задачи на языке python, но проверяющая программа не засчитывает ответ. Есть ли у меня ошибка в коде?
Текст задачи: Бизнесмен Василий после прочтения известной книги решил открыть новый бизнес — отгружать апельсины бочками. Партнёрам важно знать, сколько именно бочек апельсинов отгружается каждый день.
Мобильный телефон Василия поддерживает только транслит, поэтому он передаёт сообщения вида "n bochek". Например, "3 bochki" или "1 bochka".
Напишите программу, которая выбирает правильное слово (из "bochka" , "bochek" , "bochki" ) в зависимости от значения n.
Входные данные
Одно целое число n (0≤n≤1000).
Выходные данные
Соответствующая фраза на транслите Примеры: 3 bochki 1 bochka 15 bochek
Мой код:
a = n//1000
b = n//100%10
c = n//10%10
d = n%10
n == ("a" + "b" + "c" + "d")
if (n != 11 and d == 1) or (n == 1 and d == 1):
print(str(n) + " bochka")
if (d == 2) or (d == 3) or (d == 4):
print(str(n) + " bochki")
if (d == 5) or (d == 6) or (d == 7) or (d == 8) or (d == 9) or (d == 0):
print(str(n) + " bochek")
if n == 11:
print(str(n) + " bochek")
Ответы (2 шт):
def Translit(n):
n = str(n) #преобразуем в строку что бы взять срезы по индексам
endn = int(n[-1]) #возьмем последнюю цифру числа бочек
endnn = int(n[-2:]) #возьмем две последних цифры числа бочек
#print('endn: ', endn) #для детального проведения тестов
#print('endnn: ', endnn) #для детального проведения тестов
if (endn == 1) and (endnn != 11) and (endnn != 12) and (endnn != 13) and (endnn != 14):
print(n+' bochka')
if (endn == 2) or (endn == 3) or (endn == 4):
print(n+' bochki')
if (endn == 5) or (endn == 6) or (endn == 7) or (endn == 8) or (endn == 9) or (endn == 0) or (endnn == 11) or (endnn == 12) or (endnn == 13) or (endnn == 14):
print(n+' bochek')
#сам тест
count = 0
while count <= 1000:
Translit(count)
count +=1
У вас в коде несколько ошибок:
1.Намеренно или не специально вы не объявили значение переменной n перед объявлением a,b,c:
n = int(input())
a = n//1000
b = n//100%10
c = n//10%10
d = n%10
2.Вы не проверили результаты от 12-ти до 20-ти бочек, там у вас и будут ошибки: 12 bochki, 13 bochki, ...
Работающий код:
n = int(input())
if 10 <= n%100 <= 20: n = str(n) + ' bochek'
else:
if n%10 == 1: n = str(n) + ' bochka'
elif 1 <= n%10 <= 4: n = str(n) + ' bochki'
else : n = str(n) + ' bochek'
print(n)