#python #python_3x
n = int(input()) peng =( \ """ _~_ (o o) / V \ /( _ )\ ^^ ^^ """) if n == 1: print(str(peng)) elif n == 2: print(peng*2) elif n == 3: print(peng*3) elif n == 4: print(peng * 4) elif n == 5: print(peng*5) elif n == 6: print(peng * 6) elif n == 7: print(peng * 7) elif n == 8: print(peng * 8) elif n == 9: print(peng * 9) Как сделать так, чтобы картинки выводились в одну строку, а не переносились? И да, я в курсе, что тоже самое можно написать лучше через for_ in.
Ответы
Ответ 1
Алгоритм такой: разбиваем "картинку" на отдельные строки, дублируем каждую строку необходимое количество раз, потом обратно собираем строки в целую картинку. peng =( r""" _~_ (o o) / V \ /( _ )\ ^^ ^^ """) def mul_image(img, n): return '\n'.join(line * n for line in img.splitlines()) print(mul_image(peng, 3)) Вывод: _~_ _~_ _~_ (o o) (o o) (o o) / V \ / V \ / V \ /( _ )\ /( _ )\ /( _ )\ ^^ ^^ ^^ ^^ ^^ ^^ Чтобы все вывелось красиво, все строки картинки (где есть печатные символы) должны быть одинаковой длины (т.е. пробелы в конце строк имеют значение). В картинке в вопросе нет дополнительных пробелов после "лапок", и если выводить через функцию выше, то получится вот что: _~_ _~_ _~_ (o o) (o o) (o o) / V \ / V \ / V \ /( _ )\ /( _ )\ /( _ )\ ^^ ^^ ^^ ^^ ^^ ^^ В принципе, функцию можно доработать так, чтобы все строки добивались пробелами до длины самой длинной из строк, тогда о конечных пробелах можно будет не заботиться: def mul_image(img, n): lines = img.splitlines() max_len = max(len(line) for line in lines) return '\n'.join(line.ljust(max_len, ' ') * n for line in lines)Ответ 2
Можно воспользоваться регулярными выражениями (RegEx): In [24]: import re In [25]: n = 5 In [26]: print(re.sub(r'([^\n]*)(\n)', ''.join([r'\1']*n) + r'\2', peng)) Результат: _~_ _~_ _~_ _~_ _~_ (o o) (o o) (o o) (o o) (o o) / V \ / V \ / V \ / V \ / V \ /( _ )\ /( _ )\ /( _ )\ /( _ )\ /( _ )\ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^
Комментариев нет:
Отправить комментарий