Найти - Пользователи
Полная версия: Гистограмма
Начало » Центр помощи » Гистограмма
1
Yu
Помогите пожалуйста! Мне срочно нужно написать программу, которая строит гистограмму!

Вот условие задачи:

Входной файл: input.txt
Выходной файл: output.txt

Условие
По данным целым числам a1, a2, …, aN требуется построить гистограмму. Гистограмма должна состоять из N столбцов, i-й столбец должен изображаться прямоугольником высотой ai и шириной в 3 символа. Столбцы должны быть:
заполнены символом ‘#’ (ASCII 35),
ограничены сверху и снизу символами ‘-’ (ASCII 45),
ограничены слева и справа символами ‘|’ (ASCII 124),
ограничены по углам символами ‘+’ (ASCII 43).
Промежуток между столбцами, а также поля слева, справа и сверху гистограммы должны составлять один символ. В основании (нижней строке) гистограммы промежутки и поля должны изображаться символом ‘-’ (ASCII 45), все остальные промежутки и поля — символом ‘.’ (ASCII 46).

Формат входного файла
Входной файл содержит число N, за которым следуют числа a1, a2, …, aN.

Формат выходного файла
Выходной файл должен содержать max(ai) + 3 строк длиной 6 N + 1 символов каждая — изображение гистограммы.
Пример входного файла:
2
1 6

Пример выходного файла:

………………..
………..+—+.
……….|###|.
……….|###|.
……….|###|.
……….|###|.
.+—+.|###|.
.|###|.|###|.
-+—+-+—+-

Я написала программу, но компилятор выдает синтаксическую ошибку, которую я найти не могу. Пожалуйста помогите исправить этот код.. или если есть другие варианты написать эту программу, то пишите их. Огромное всем спасибо!

def get_numbers(f):
return
def column(number, height):
edge = ‘.’ * (height - number) + ‘+’ + ‘|’ * number + ‘+’
line = ‘.’ * (height - number) + ‘-’ + ‘#’ * number + ‘-’
sep = ‘.’ * (height + 1) + ‘-’
return map(lambda x: ''.join(x), zip(edge, line, line, line, edge, sep))
def histogram(numbers):
height = max(numbers) + 1
horizontal = + \

return map(lambda *x: ‘'.join(x), *horizontal)
if _name_ == ’_main_':
try:
from sys import exit
with open('output.txt', ‘w’, encoding='utf-8') as fout, \
open('input.txt', ‘r’, encoding='utf-8') as fin:
numbers = get_numbers(fin)
print(*histogram(numbers), sep='\n', file=fout)
except Exception as e:
exit(e)
pyuser
Не красиво выдавать чужой код за свой :(
замените код
        with open('output.txt', 'w', encoding='utf-8') as fout, \
open('input.txt', 'r', encoding='utf-8') as fin:
numbers = get_numbers(fin)
print(*histogram(numbers), sep='\n', file=fout)
на
        with open('input.txt', 'r', encoding='utf-8') as fin:
numbers = get_numbers(fin)

with open('output.txt', 'w', encoding='utf-8') as fout:
for line in histogram(numbers):
fout.write(line + '\n')
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