这是台大李宏毅教师Machine Learning 2017Fall课程 的第0次的作业HW0
课程主页如下:台大Machine Learning 2017Fall 感兴趣的可以去学习下,主页提供了教学ppt和教学视频。
HW0有2个问题:
Q1:出现字数统计。
1.读取words.txt中的所有英文单词,单词由<space>分隔。
2.按照单词出现的次数,给予编号(0,1,2)。
3.统计单词出现的次数。
4.得到次数和编码输出至Q1.txt,每一行都为:
<单词><space><编号><space><出现次数>
5.单词考虑大小写,Ntu和ntu为不同单词
例子:
输入words.txt 中为 ntu ml mlds ml ntu ntuee
要求输出的Q1.txt:
ntu 0 2
ml 1 2
mlds 2 1
ntuee 3 1
下面附上我的python解答程序
# -*- coding: utf-8 -*-
from collections import OrderedDict
with open('words.txt','r') as f:
instr = f.read()
instr = instr.split()
od = OrderedDict()
for i in instr:
if i in od:
od[i]+=1
else:
od[i]=1
cnt = 0
#打印出来
#for k,v in od.items():
# print k,cnt,v
# cnt+=1
with open('Q1.txt','w') as w:
for k,v in od.items():
tmp = str(k)+" "+str(cnt)+" "+str(v)+"\n"
w.write(tmp)
不使用OrderDict的话,可以这样来写。
# -*- coding: utf-8 -*-
with open('words.txt','r') as f:
instr = f.read()
instr = instr.split()
d = dict()
l = list()#额外的list存储字符串的顺序信息
for i in instr:
if i not in l:
l.append(i)
if i in d:
d[i]+=1
else:
d[i]=1
cnt = 0
# #打印出来
# for item in l:
# print(item,cnt,d[item])
# cnt+=1
with open('Q1.txt','w') as w:
for item in l:
tmp = item+" "+str(cnt)+" "+str(d[item])+"\n"
w.write(tmp)
Q2:图片淡化
1.读取westbrook.jpg
2.把每个pixel的RGB数值都减半(ex: (122, 244, 245)->(61, 122, 122)),再将图片输出为Q2.jpg
3.RGB数值去掉小数点。
要求效果如下:
下面附上我的python解答程序
# -*- coding: utf-8 -*-
from PIL import Image
im = Image.open("westbrook.jpg")
pix = im.load()
# 获得图像尺寸:
w, h = im.size
newim = Image.new("RGB",(w,h))
for i in range(w):
for j in range(h):
r, g, b = pix[i,j]# pix[i,j]为tuple
newim.putpixel((i,j),(r//2,g//2,b//2))
newim.save('Q2.jpg', 'jpeg')
1. http://www.cnblogs.com/webFuckeeeer/p/4536776.html
2. https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00140767171357714f87a053a824ffd811d98a83b58ec13000
3. https://www.zhihu.com/question/29807693