Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added homeworks/B18575/B18575-SKY-s2班级总结.docx
Binary file not shown.
202 changes: 202 additions & 0 deletions homeworks/B18575/homework1/homework1-SKY.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
# -*- coding: utf-8 -*-
import codecs
import os
import sys
import random
reload(sys)
sys.setdefaultencoding( "utf-8" )

#1. 读取文件
#['aa', 'aaa-bbb-sds'] => ['aa', 'aaa', 'bbb', 'sds']
def word_split(words):
new_list = []
for word in words:
if '-' not in word:
new_list.append(word)
else:
lst = word.split('-')
new_list.extend(lst)
return new_list


def read_file(file_path):
f = codecs.open(file_path, 'r', "utf-8") #打开文件
lines = f.readlines()
word_list = []
for line in lines:
line = line.strip()
words = line.split(" ") #用空格分割
words = word_split(words) #用-分割
word_list.extend(words)
return word_list

def get_file_from_folder(folder_path):
file_paths = []
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
file_paths.append(file_path)
return file_paths

#读取多文件里的单词
def read_files(file_paths):
final_words = []
for path in file_paths:
final_words.extend(read_file(path))
return final_words


#2.获取格式化之后的单词
def format_word(word):
fmt = 'abcdefghijklmnopqrstuvwxyz-'
for char in word:
if char not in fmt:
word = word.replace(char, '')
return word.lower()

def format_words(words):
word_list = []
for word in words:
wd = format_word(word)
if wd:
word_list.append(wd)
return word_list

#3. 统计单词数目
# {'aa':4, 'bb':1}
def statictcs_words(words):
s_word_dict = {}
for word in words:
if s_word_dict.has_key(word):
s_word_dict[word] = s_word_dict[word] + 1
else:
s_word_dict[word] = 1
#排序
sorted_dict = sorted(s_word_dict.iteritems(), key=lambda d: d[1], reverse=True)
return sorted_dict

# 3.2、为单词添加所占比例
def add_rate(volcaulay_list,total_count):
current_count=0
word_add_rate=[]
for val in volcaulay_list:
tem=[]
num=val[1]
current_count = current_count + num
word_rate = (float(current_count) / total_count) * 100
tem.append(val)
tem.append(word_rate)
word_add_rate.append(tem)
return word_add_rate

# 3.3 截取固定比例
def intercept_word(word_list,start_and_end):
intercepted_word=[]
for val in word_list:
if val[1] > start_and_end[0]:
if val[1] < start_and_end[1]:
intercepted_word.append(val)
return intercepted_word

# 3.4.1 获取单词释义数据
def getMean(file_path):
fp = codecs.open(file_path, 'r', 'utf-8')
lines = fp.readlines()
final_word = {}
for line in lines:
line = line.strip()
word = line.split(" ")
final_word[word[0]] = word[1]
return final_word

# 3.4.2 为截取单词添加释义
def word_and_mean(word_list,mean_map):
for val in word_list:
if mean_map.has_key(val[0][0]):
val.append(mean_map[val[0][0]])
elif mean_map.has_key(val[0][0].replace('s','')):
val.append(mean_map[val[0][0].replace('s','')])
elif mean_map.has_key(val[0][0].replace('es','')):
val.append(mean_map[val[0][0].replace('es','')])
elif mean_map.has_key(val[0][0].replace('ed','')):
val.append(mean_map[val[0][0].replace('ed','')])
else:
val.append("暂无释义")
# print word_list
return word_list
# 3.5 获取每日单词
def get_day_word(mean_list,day_num,now_day,mode):
day_word=[]
if mode:
for index,val in enumerate(mean_list):
day_word.append(mean_list[index+day_num*(now_day-1)])
if len(day_word)>=day_num:
break
else:
day_word=random.sample(mean_list, day_num)
for val in day_word:
mean_list.remove(val)
return day_word



#4.输出成csv
def print_to_csv(volcaulay_list, to_file_path):
nfile =codecs.open(to_file_path,'w+','utf-8')
nfile.write(codecs.BOM_UTF8)
for val in volcaulay_list:
nfile.write("%s,%s,%0.2f,%s\n" % (val[0][0], str(val[0][1]),val[1],val[2]))
nfile.close()



def main():

#设置是否截取单词
is_intercept=True

#1. 读取文本
words = read_files(get_file_from_folder('data1'))
print '获取了未格式化的单词 %d 个' % (len(words))

#2. 清洗文本
f_words = format_words(words)
total_word_count = len(f_words)
print '获取了已经格式化的单词 %d 个' %(len(f_words))

#3. 统计单词和排序
word_list = statictcs_words(f_words)

# 3.2为单词添加所占比例
word_list_rate = add_rate(word_list, total_word_count)

# 3.3 截取固定比例
start_and_end = [50, 70] #截取这一部分的单词
if is_intercept:
intercepted_list=intercept_word(word_list_rate,start_and_end)
else:
intercepted_list=word_list_rate

# 3.4 为单词添加释义
#获取释义数据
mean_map=getMean("./8000-words.txt")
#添加释义
mean_list=word_and_mean(intercepted_list,mean_map)

# 3 5 获取每日单词
# 每日单词数量
day_num=50
now_day=3
mode=False #获取单词模式,TRUE为顺序,FALSE为乱序
day_word_list=get_day_word(mean_list,day_num,now_day,mode)

#4. 输出文件。输出带释义的文件
# print_to_csv(mean_list, 'output/test4.csv')

# 4.1 输出每日文件
print_to_csv(day_word_list, 'output/'+str(now_day)+'.csv')



if __name__ == "__main__":
main()
124 changes: 124 additions & 0 deletions homeworks/B18575/homework2/homework2-SKY.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
# -*- coding: utf-8 -*-
import pygame
import random
from pygame.locals import *

SCALE = 20 #地图中有多少格
SIZE = 20 #每一格的大小
WIDTH = SCALE * SIZE
HEIGHT = SCALE * SIZE
lose=False

DIRECT = [[0,-1],[-1,0],[0,1],[1,0]]
dirt = 1 #蛇前进的方向

snake = [[4,3],[5,3],[6,3]]
apple = [3,1]

def screen_show(screen,lose):
screen.fill([255,255,255])
for body in snake:
pygame.draw.rect(screen, [0, 255,0], [body[0]*SIZE,body[1]*SIZE, SIZE - 1, SIZE - 1])
pygame.draw.rect(screen, [0, 0,255], [snake[0][0] * SIZE, snake[0][1] * SIZE, SIZE - 1, SIZE - 1])
img = pygame.image.load("beach_ball.png")
screen.blit(img, [apple[0]*SIZE, apple[1]*SIZE])
# pygame.draw.circle(screen, [255, 0, 0], [apple[0]*SIZE + SIZE / 2, apple[1]*SIZE + SIZE / 2], SIZE/2)
if lose:
font = pygame.font.Font(None, 50)
text = font.render("YOU LOSE", True, [255, 0, 0])
screen.blit(text, [120, 60])
font = pygame.font.Font(None, 30)
text = font.render("press mouse restart", True, [255, 0, 0])
screen.blit(text, [110, 120])
pygame.display.flip()

def snake_update():
global dirt
new_body = [0,0]
new_body[0] = (snake[0][0] + DIRECT[dirt][0]) % SCALE
new_body[1] = (snake[0][1] + DIRECT[dirt][1]) % SCALE
if new_body == apple:
snake.insert(0, new_body)
return True
else:
snake.insert(0, new_body)
snake.pop()
return False

def is_lose():
if snake.count(snake[0]) >= 2:

return True
return False

def new_apple():
apple[0] = random.randint(0,19)
apple[1] = random.randint(0,19)

def w_down_cb():
global dirt
if dirt % 2 !=0:
dirt = 0

def s_down_cb():
global dirt
if dirt % 2 != 0:
dirt = 2

def a_down_cb():
global dirt
if dirt % 2 != 1:
dirt = 1

def d_down_cb():
global dirt
if dirt % 2 != 1:
dirt = 3

def main():
pygame.init()
screen = pygame.display.set_mode([WIDTH, HEIGHT])
running = True
EX=True
while EX:
while running:
global lose
pygame.time.delay(200) # 200ms
if snake_update():
new_apple()

if is_lose():
lose=True
running=False
break

screen_show(screen,lose)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
EX=False
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_w:
w_down_cb()
elif event.key == pygame.K_s:
s_down_cb()
elif event.key == pygame.K_a:
a_down_cb()
elif event.key == pygame.K_d:
d_down_cb()
screen_show(screen ,lose)
global snake,apple
for event in pygame.event.get():
if event.type == MOUSEBUTTONDOWN:
running = True
EX = True
lose=False
snake = [[4, 3], [5, 3], [6, 3]]
apple = [3, 1]
if event.type == pygame.QUIT:
EX = False
#YOU LOSE
pygame.quit()

if __name__ == '__main__':
main()
Binary file added homeworks/B18575/homework3/homework3.zip
Binary file not shown.