zhaochenyang20 / TOFEL_words_reviewer

15 stars 6 forks source link

homework #26

Closed JiaMing07 closed 2 years ago

JiaMing07 commented 2 years ago

https://git.tsinghua.edu.cn/shenjm21/words-reviewer

zhaochenyang20 commented 2 years ago

整体上做的很棒,作为初学者提出表扬

zhaochenyang20 commented 2 years ago
def pretreated():
    '''
    对读入的单词本进行预处理
    拆成单个单词,并存入列表
    若已经有翻译完成的.translated_words.json文件,则直接读取,形成dic;
    否则调用translate_words函数生成.translated_words.json文件,再进行接下来的操作
    '''
    try:
        with open("./collection.txt", "r") as f:
            words = np.asarray(list(filter(None, f.read().split("\n"))))
        lst=[]
        for word in words:
            word=word.split(',')
            for w in word:
                w=w.strip()
                lst.append(w)
        dic_name=".translated_words.json"
        if os.path.exists(dic_name):
            with open(dic_name) as t:
                dic=json.load(t)
        else:
            dic=translate_words(words)

    except Exception as e:
        print("pretreated")
        embed(header=str(e))
    return dic,lst

注意这个函数,内部是不需要用到 np.assary 的,当然,你参考我的示例代码用了这一步,没有太大问题,其实此处用原生 list 即可。另外一个方面,我不是很建议变量命名为 lst,dic,因为这样是表达了其类型,但是没有表达一个变量的物理含义

zhaochenyang20 commented 2 years ago

在代码风格上,注意运算符的左右需要有空格,比如 word = word.split(',') 还有 def main(num, random, start, length):,而你的 main 函数定义就很好,表达了物理意义,最好再注释变量类型,例如:def main(num : int, random : bool, start : int, length : int):

zhaochenyang20 commented 2 years ago

整体上完成度很棒,我推荐参考下这份代码,学习下他的一些代码风格:https://git.tsinghua.edu.cn/lkm20/3.0-hw1/-/tree/master/

zhaochenyang20 commented 2 years ago

注意,在你的 readme 里面,也习惯中英文之间打空格

zhaochenyang20 commented 2 years ago

你可以思考下自己构建了这个 ndarray: words = np.asarray(list(filter(None, open(in_filename,'r').read().split("\n")))) 而不用 list,有什么好处,有什么坏处。自己可以简单做实验试试看是否会有效率区别,以及思考为什么有这个效率区别。如果你没思考出来,欢迎周六来听我的进一步课程。