Найти - Пользователи
Полная версия: Как решить данною задачу без if??
Начало » Центр помощи » Как решить данною задачу без if??
1 2
Xryst
Условие задачи:
Входные данные: 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

Мой ответ: Everybody sing a song: la - la la - la la - la la - la la - la la - la la - la la - la la - la!
А верный такой ответ: Everybody sing a song: la - la - la - la - la - la - la - la - la - la!

Что я не так делаю с формулой??
terabayt
ссылка
Xryst
terabayt
ссылка
А можешь сказать, что такое .join? и без if не как??
terabayt
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'
P.S. а гугл недостойный ваших вопросов?
P.S.S. что за фамильярность?!
Xryst
terabayt
join
Спасибо, большое! извините, если что не так)
terabayt
Xryst
извините, если что не так)
все норм, прост вопрос типа “что такое join” решается гуглом
и на форумах, как и в обществе, принято обращаться на вы
py.user.next
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)
'.'
>>>
terabayt
Xryst
z равняется 0 или 1
что-то я упустил этот момент
я вот по этому делал
Xryst
Если z равняется единице, в конце ставится восклицательный знак, иначе точка.
а вот то что я впихнул это в список а не в строку эт уже последствя рабочей недели
универсальность ))
terabayt
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)
py.user.next
terabayt
второго варианта
А где там ставится пробел?
При y = 0 (отсутствие куплетов) перед проверкой z там получаются пустые строки.

terabayt
x не равняется 0
Это не заметил, так как на x в начале условие уже наложено.
Эту часть можно убрать тогда.
* (x > 0)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB