Предмет: Информатика, автор: flexstar

ЯЗЫК python
Бизнесмен Василий после прочтения известной книги решил открыть новый бизнес — отгружать апельсины бочками. Партнёрам важно знать, сколько именно бочек апельсинов отгружается каждый день.

Мобильный телефон Василия поддерживает только транслит, поэтому он передаёт сообщения вида "n bochek". Например, "3 bochki" или "1 bochka".

Напишите программу, которая выбирает правильное слово (из "bochka" , "bochek" , "bochki" ) в зависимости от значения n.

Входные данные

Одно целое число n (0≤n≤1000).

Выходные данные

Соответствующая фраза на транслите (см. примеры).

Примеры
Ввод
Вывод
3
3 bochki
1
1 bochka
15
15 bochek


flexstar: N = int(input())

if N <= 10 or N >= 20:
if (N % 10) == 0 or ((N % 10) >= 5 and (N % 10) <= 9):
print(str(N) + " bochek")
elif (N % 10) == 1:
print(str(N) + " bochka")
else:
print(str(N) + " bochki")
else:
print(str(N) + " bochek")
flexstar: такое решение программа отказывается принимать
flexstar: пишет что работает не коректно

Ответы

Автор ответа: mathgenius
1

Первый способ)

str_ends = ['ek','ka',*['ki']*3,*['ek']*5]

num = int(input('Введите значение n: '))

num_end = 0 if num //10 % 10 == 1 else num % 10

print(f'{num} boch{str_ends[num_end]}')

Второй способ) (красивый, но возможно трудный для понимания)

ends = ['ek','ka',*['ki']*3,*['ek']*15,*['ek','ka',*['ki']*3,*['ek']*5]*8]

num = input('Введите число n: ')

end = int(num[-2:])

print(f'{num} boch{ends[end]}')

Приложения:

mathgenius: Просто и красиво
flexstar: массив запрешен при решении этой задачи
flexstar: требуется через условный оператор if
mathgenius: Вы про это не написали в условии. Я то откуда мог знать. Можете создать вопрос по новой, с правильным условием, а именно запрет на использования списков и словарей. Я же вам не ясновидец, откуда мне знать что вам можно использовать, а что нельзя
flexstar: Моя ошибка но я дам вам лучший ответ
flexstar: в качестве извинения
mathgenius: Да ладно, все в порядке. За лучший конечно спасибо, но чтобы перейти на следующий статус надо отвечать на вопросы регулярно, ибо на количество лучших ответов стоит ограничение по времени... Я отвечаю по доброте душевной и потому-что сам люблю задачки порешать, как-то так...
Автор ответа: nikapykh
1

Ответ:

a=int(input())

if (a%10==1 or a==1) and a!=11:

      print(a, "bochka")

elif (a%10==2 or a%10==3 or a%10==4) and (a!=12 and a!=13 and a!=14):

      print(a, "bochki")

else:

      print(a, "bochek")

Объяснение:

Ну вот так)


flexstar: спасибо
Похожие вопросы
Предмет: Русский язык, автор: olga090680