Форум сайта python.su
Условие задачи:
Входные данные: 3 числа x, y и z. x, y – неотрицательные целые числа, z равняется 0 или 1. x не равняется 0. Передаются как аргументы командной строки.
Выходные даны: строка “Everybody sing a song: <текст песенки>”., где <текст песенки> формируется из у куплетов, разделенных пробелами. Все куплеты одинаковы и состоят из x ‘la’ через дефис. Если z равняется единице, в конце ставится восклицательный знак, иначе точка. При отсутствии куплетов пробел перед точкой/восклицательным знак не ставится.
Пример:
Входные данные: 2 3 1
Результат: Everybody sing a song: la - la la - la la - la!
Входные данные: 1 0 0
Результат: Everybody sing a song:.
Вот что мне пришло в голову:
import sys import math x=int(sys.argv[1]) y=int(sys.argv[2]) z=int(sys.argv[3]) A='Everybody sing a song:' B=x>y*(((y-y+1)*(' ')+((x-x+1)*('la')))+ (z*(('-')+((x-x+1)*('la')))) ) C=(('.')*(1-z)) D=('!'*z) F=A+B+C+D print F
Отредактировано Xryst (Янв. 30, 2015 18:07:31)
Офлайн
Офлайн
terabaytА можешь сказать, что такое .join? и без if не как??
ссылка
Отредактировано Xryst (Янв. 30, 2015 18:21:00)
Офлайн
Xrystвот, немного переделал:
и без if не как??
txt = ((' ' + ('la-' * x)[:-1]) * y).rstrip() + ['!', '.'][z != 1] print 'Everybody sing a song' + txt
Xryst
А можешь сказать, что такое .join?
>>> a = ['q','w','e'] >>> '-'.join(a) 'q-w-e'
Офлайн
terabaytСпасибо, большое! извините, если что не так)
join
Офлайн
Xrystвсе норм, прост вопрос типа “что такое join” решается гуглом
извините, если что не так)
Офлайн
Xryst
z равняется 0 или 1
Xryst
Если z равняется единице, в конце ставится восклицательный знак, иначе точка.
'.!'[z]
>>> def f(x, y, z): ... return ' '.join([' - '.join(['la'] * x)] * y) + '.!'[z] ... >>> f(2, 3, 1) 'la - la la - la la - la!' >>> f(1, 0, 0) '.' >>> >>> >>> def f(x, y, z): ... c = 'la' * (x > 0) + ' - la' * (x - 1) ... return c * (y > 0) + (' ' + c) * (y - 1) + '.!'[z] ... >>> f(2, 3, 1) 'la - la la - la la - la!' >>> f(1, 0, 0) '.' >>>
Отредактировано py.user.next (Янв. 30, 2015 23:53:21)
Офлайн
Xrystчто-то я упустил этот момент
z равняется 0 или 1
Xrystа вот то что я впихнул это в список а не в строку эт уже последствя рабочей недели
Если z равняется единице, в конце ставится восклицательный знак, иначе точка.
Офлайн
py.user.nextинетересно посмотреть Ваше решение
Пара вариантов:
Xrystвторого варианта
При отсутствии куплетов пробел перед точкой/восклицательным знак не ставится.
>>> def f(x, y, z): ... c = 'la' * (x > 0) + ' - la' * (x - 1) ... return c * (y > 0) + (' ' + c) * (y - 1) + '.!'[z]
Xryst
x не равняется 0
c = 'la' + ' - la' * (x - 1)
Отредактировано terabayt (Янв. 31, 2015 00:09:19)
Офлайн
terabaytА где там ставится пробел?
второго варианта
terabaytЭто не заметил, так как на x в начале условие уже наложено.
x не равняется 0
* (x > 0)
Отредактировано py.user.next (Янв. 31, 2015 23:30:45)
Офлайн