Уведомления

Группа в Telegram: @pythonsu

#1 Март 15, 2012 06:01:38

Yu
От:
Зарегистрирован: 2012-03-15
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Гистограмма

Помогите пожалуйста! Мне срочно нужно написать программу, которая строит гистограмму!

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

Входной файл: 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)



Офлайн

#2 Март 15, 2012 07:27:03

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Гистограмма

Не красиво выдавать чужой код за свой :(
замените код

        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')



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version