Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 12, 2012 21:15:57

Леон
От:
Зарегистрирован: 2012-01-12
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

приветствую народ. Задачка к экзамену, скажите пожалуйста что не так?

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#На вход программы подается текстовый файл “in.txt” из букв
#латинского алфавита, цифр и знаков препинания. Необходимо составить
#регистронезависимый частотный словарь текста.
#Словарь должен быть отсортирован по частоте символов и выведен в файл “out.txt”.
#В графическом окне необходимо вывести круговую диаграмму относительных
#долей трех классов символов: гласные буквы, согласные буквы, знаки препинания.
#Пробелы в тексте должны игнорироваться.
from Tkinter import *
infile = open('in.txt', ‘r’)
lines =
for line in infile:
lines.append(line)

A=''.join(lines)
A=A.split()
A=''.join(A)

for s in A:
if s in S:
else:
D=1
S.append

for s in S
C.append(D)
Out=zip(c,s)
Out.sort()
Out.revers()
print A
print lines
print S, ‘-’, c



Офлайн

#2 Янв. 13, 2012 01:38:45

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

приветствую народ. Задачка к экзамену, скажите пожалуйста что не так?

from collections import Counter
from operator import itemgetter
from string import digits, punctuation

def frequency(infile, outfile):
vowels = "aeiouy"

c = Counter()
with open(infile, "r") as f:
for line in f:
c.update(line.strip().replace(" ", "").lower())

with open(outfile, "w") as f:
for char, freq in sorted(c.items(), key=itemgetter(1), reverse=True):
print("{}: {}".format(freq, char), file=f)

f_all = sum(y for x, y in c.items())
f_vowels = sum(y for x, y in c.items() if x in vowels)
f_digits = sum(y for x, y in c.items() if x in digits)
f_punctuation = sum(y for x, y in c.items() if x in punctuation)

return f_vowels, f_all - f_vowels - f_digits - f_punctuation, f_punctuation
Диаграмму нарисуйте сами.
ЗЫ. Python не ниже 2.7



Офлайн

#3 Янв. 13, 2012 19:47:24

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

приветствую народ. Задачка к экзамену, скажите пожалуйста что не так?

Как немного по другому считать частоты

from collections import defaultdict
a=defaultdict(lambda :0)
for i in open("somefile", "rt").read().lower():
if i not in "\n \t"
a[i]+=1
with open("out.txt","wt") as f:
f.write(str(dict(a)))



Отредактировано (Янв. 13, 2012 19:58:27)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version