selfteaching-learning-notes.github.io icon indicating copy to clipboard operation
selfteaching-learning-notes.github.io copied to clipboard

1901100009-自学训练营-MIT60001-DAY1-25

Open shen20190000 opened this issue 6 years ago • 2 comments

title date tags categories
1901100009-MIT 2019-7-31 MIT,自学 自学是门手艺

学员信息

  • 学号:1901100009
  • 学习内容:《自学是门手艺》
  • 学习用时:60min

学习笔记

  1. 刚刚完成14天自学营的学习。针对一些疑问也跟教练做了一些交流。了解到了学习Python早期就是要多看代码,多输入才能多输出。自学营毕业了算是入门了,后面几天继续阅读《自学是门手艺》以了解整本书的框架。
  2. 今天阅读了《自学是门手艺》的第一部分的七个章节。相比其他的计算机教程书,笑来老师的这本书阅读起来更加友好一些。了解了Python的一些最基本的知识。同时对自学营早期的一些作业内容,通过阅读书籍也多了一层理解。
  3. 很快理解函数从另外一个角度看只不过是 “程序员作为用户所使用的产品”。

学员信息

  • 学号:1901100009
  • 学习内容:MIT-lecture1
  • 学习用时:70min

学习笔记

  1. 在python中万物皆对象,对象可以分为两类scalar和non-scalar。 2.所有的表达式的结果都是一个值。equal sign左边是变量、右边是表达式。 3.计算机制作你告诉它的事情,告诉它的时候语法要正确。

难点和问题:对于scalar和non-scalar,分辨理解的还不太清楚。

学员信息

  • 学号:1901100009
  • 学习内容:MIT60001 Lecture 2
  • 学习用时:70min

学习笔记

1.学习了字符串、三种控制流、两种循环 2.这次算是比较系统和有逻辑的学这几个内容,通过跟随课堂进行了代码练习,对这几个概念还算是有了比较清晰的了解。

<遇到的难点与问题(是否解决)>

学员信息

  • 学号:1901100009
  • 学习内容:MIT600001 lecture3
  • 学习用时:90min

学习笔记

在这个章节学习了字符串的操作(这个部分在14天自学营的作业中有所设计还算熟悉)、猜测和检查、Approximate(这个部分并没有很好的理解)、二分法(很好的减少猜测的次数)。 在近似的部分对于代码表述的意思看不懂,需要再借助其他资料加深理解。

<遇到的难点与问题(是否解决)>

学员信息

  • 学号:1901100009
  • 学习内容:MIT600001 lecture4
  • 学习用时:90min

学习笔记

这个部分的内容看视频实在是没看太明白。随后翻看其他同学提交的学习笔记和《自学是门手艺》对这部分内容加深一下理解。

视频中印象比较深刻的是投影仪的部分。你不用知道投影仪是如何组装的,但你能有将它和电脑链接并使用就够了,这就是抽象的概念,也是函数的意义。

<遇到的难点与问题(是否解决)>

学员信息

  • 学号:1901100009
  • 学习内容:MIT600001 lecture5+《自学是门手艺》
  • 学习用时:90min

学习笔记

讲数据类型,元组和列表。光看内容有些不太理解,配合着《自学是门手艺》里面的文字算是对元组和列表有了进一步的理解。

初学者总是很好奇 List 和 Tuple 的区别。首先是使用场景,在将来需要更改的时候,创建 List ;在将来不需要更改的时候,创建 Tuple。其次,从计算机的角度来看,Tuple 相对于 List 占用更小的内存。

<遇到的难点与问题(是否解决)>

学员信息

  • 学号:1901100009
  • 学习内容:《自学是门手艺》
  • 学习用时:60min DAY7

学习笔记

复习数据容器部分的内容,学习了生成随机书并排序的内容。

a_list = [random.randrange(1, 100) for i in range(n)]

因为生成的随机数中经常会出现重复的内容,所以查询了网站希望能够找到一个可以生成完全不同数字的随机数。但没有找到特别对正的方法。最后尝试着增加了一个step1。出来的数倒是没有重复的了。但还不太清楚是否影响原本随机数产生的规则。

a_list = [random.randrange(1, 100,1) for i in range(n)]

这个章节的代码打下来对随机数有了一个比较清晰的理解和认识了。

<遇到的难点与问题(是否解决)>

学员信息

  • 学号:1901100009
  • 学习内容:《自学是门手艺》
  • 学习用时:30min DAY8

学习笔记

学习了元组、集合和字典的内容。

List 是可变有序容器,Tuple 是不可变有序容器。 List 用方括号标识 [],Tuple 用圆括号 标识 ()。

元组是不可变序列,所以,你没办法从里面删除元素。

首先是使用场景,在将来需要更改的时候,创建 List ;在将来不需要更改的时候,创建 Tuple。其次,从计算机的角度来看,Tuple 相对于 List 占用更小的内存。

集合(Set)这个容器类型与列表不同的地方在于,首先它不包含重合元素,其次它是无序的;进而,集合又分为两种,Set,可变的,Frozen Set,不可变的。

<遇到的难点与问题(是否解决)>

学员信息

  • 学号:1901100009
  • 学习内容:《自学是门手艺》
  • 学习用时:30min DAY9

学习笔记

重新阅读了一遍数据容器部分的内容,绘制了相关关系的思维导图。 正如书中所说,这部分内容虽然很多,但是厘清相互关系还是容易理解的,这部分厘清关系用时比较久。

lecture 5中List与Tuple.

<遇到的难点与问题(是否解决)>

学员信息

  • 学号:1901100009
  • 学习内容:《自学是门手艺》
  • 学习用时:20min DAY10

学习笔记

看了一部分视频,Lecture换了新的老师Eric Grimson,讲解递归,解决计算类的问题。以及上一节课还没讲的数据容器字典。

<遇到的难点与问题(是否解决)>

学员信息

  • 学号:1901100009
  • 学习内容:《自学是门手艺》
  • 学习用时:30min DAY11

学习笔记

今天电脑上的VSCODE消失了,找了教练帮忙才算找回。但Anaconda依然是无法登陆的。 今天学到是《自学是门手艺》的1.E.7 书中的例子非常的有意思,一步一步的举例讲解,也理解了每一步代码的意思。 一个看似非常复杂难解的问题,十行代码搞定

def sum_of_word(word):
    sum = 0
    for char in word:
        sum += ord(char) - 96
    return sum

with open('words_alpha.txt', 'r') as file:
    for word in file.readlines():
        if sum_of_word(word.strip()) == 100:
            print(word)

学员信息

  • 学号:1901100009
  • 学习内容:《自学是门手艺》lecture6
  • 学习用时:90min DAY12

学习笔记

把lecture6仔细的听了一遍。感叹神奇的递归。 在运算加法的时候我还想着为什么要用函数,一个乘号就可以解决问题了。 当问题逐渐复杂以后,递归的作用显现了出来,简洁的代码解决复杂的问题。


def fact(n):
if n == 1:
return 1
else:
return n*fact(n-1)
print(fact(20))


接着又举了一个汉诺塔的例子,说实在这个程序没有看懂,需要再到google上搜索。

最后的内容是字典,这个部分是我比较好奇的地方,因为在自学营的时候我就对唐诗300首这个字典的生成很好奇,因为我觉得如果没有一个批量的方法,单纯制作一个字典也会很费时间的。

在这里又清晰了列表和字典的区别。字典这部分也要再找些资料补充一下。

老师觉得母兔子的例子,用一段代码就神奇的解决了。


def fib_efficient(n,d):
if n in d:
return d[n]
else:
ans = fib_efficient(n-1,d) + fib_efficient(n-2,d)
d[n] = ans
return ans
d ={1:1,2:2}
print(fib_efficient(6,d))


<遇到的难点与问题(是否解决)>

学员信息

  • 学号:1901100009
  • 学习内容:Lecture7&网络查找
  • 学习用时:30min DAY14

学习笔记

今天看了lecture7的后半部分,EXCEPTIONS,和ASSERTIONS。又看了其他同学的笔记和百度相关资料才算是对内容有了一个简单的了解。

程序运行时会遇到各种异常情况,异常处理的原则和现实生活中异常处理原则相似。首先应该预计到所有可能出现的异常,然后考虑能否完全避免异常,如果不能完全避免,再考虑异常发生时的具体处理方法。

捕捉异常可以使用try/except语句。try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。如果你不想在异常发生时结束你的程序,只需在try里捕获它。如:

try:
a = int(input("Tell me one number:"))
b = int(input("Tell me another number:"))
print("a/b=",a/b)
except:
print("Bug in user input.")

打开一个文件并且在该文件中写入内容,并未发现异常

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")except IOError:
    print "Error: 没有找到文件或读取文件失败"else:
    print "内容写入文件成功"
    fh.close()

学员信息

  • 学号:1901100009
  • 学习内容:《自学是门手艺》&Lecture8
  • 学习用时:60min DAY15

学习笔记

今天学习了lecture8的创建类型。听完MIT课程后总是有些迷糊,又找来《自学是门手艺》看class的部分。

书中说:你创造了一个类(Class),这时候你是创作者,从你眼里望过去,那就是个类(Class);而后你根据这个类的定义,创建了很多实例(Instances);接下来一旦你开始使用这些实例的时候,你就成了使用者,从使用者角度望过去,手里正在操作的,就是各种对象(Objects)…… 需要再看一遍。

学员信息

  • 学号:1901100009
  • 学习内容:自学是门手艺&lecture9
  • 学习用时:60min DAY16

学习笔记

了解了类型函数封装的意义。 整体这一节对我来说难度有些大。 把代码复制到VSCODE里试着理解其中的意义。

class Golem:
    
    def __init__(self, name=None):
        self.name = name
        self.built_year = datetime.date.today().year

学员信息

  • 学号:1901100009
  • 学习内容:《自学是门手艺》2.D.7
  • 学习用时:30min DAY17

学习笔记

MIT的课程有些卡住,今天找来《自学是门手艺》消化缓冲一下。 阅读了笨拙与耐心、刻意练习和测试驱动的开发部分。 了解到了这个过程是正常的,有时候因为一个极小的代码失误就卡在那解决不了。好在自学营里有很多的同学还有教练。要对时间有耐心。

虽然自学营第一节学的就是print。但是直到今天我才觉得这东西我好像有点明白了。

写一个函数,或者写一个程序,换一种说法,其实就是 “实现一个算法” —— 而所谓的 “算法”, “算法”,其实没多神秘,就是 “解决问题的步骤” 而已。

学员信息

  • 学号:1901100009
  • 学习内容:MIT lecture9、10
  • 学习用时:60min DAY18

学习笔记

视频看了lecture9的后半部分和lecture10的前半部分。 lecture10主要在讲效率问题,不同的编程方法计算机的运算量是不同的。找到合适的算法可以让编程效率更高。理解了算法增长的测算的方式。

学员信息

  • 学号:1901100009
  • 学习内容:MIT lecture10
  • 学习用时:40min DAY19

学习笔记

这节课一直都在讲效率问题,指数是最不推荐的方式。 量级的类型:常数、线性、二次方、对数、对数线性、指数。常数是最省力的。

我们需要通过观察程序理解程序可能耗费的资源。

学员信息

  • 学号:1901100009
  • 学习内容:《自学是门手艺》3.B.3
  • 学习用时:40min DAY20

学习笔记

今天的这个内容看完,一下子对之前的类和对象的内容理解得更加深入了一些,对编程的效率也理解得更好了一些。 学习了迭代器,生成器、装饰器。

被 @ 调用的函数,叫做 “装饰器”(Decorator),最常用的场景就是用来改变其它函数的行为。装饰器虽然难懂,但是值得认真学习应用。一旦掌握收益无穷。

def a_decorator(a_func):
    def wrapper():
        print('We can do sth. before calling a_func...')
        a_func()
        print('...and we can do sth. after it was called...')
    return wrapper
@a_decorator
def a_func():
    print("Hi,I`m a_func!")
a_func()

学员信息

  • 学号:1901100009
  • 学习内容:《自学是门手艺》3.B.4
  • 学习用时:60min DAY21

学习笔记

今天的内容学的是正则表达式。笑来老师的定义是。 一个规则表达式(Regular Expression)通常被称为一个规则(Pattern)。 我们可以用书写特定的规则,用来在文本中捕获与规则一致的字符串,而后对其进行操作…… 规则表达式(Regular Expressions,通常缩写为 Regex)是最强大且不可或缺的文本处理工具

了解到了一个很好用的regex的测试网站,以及regex的优先级。

学员信息

  • 学号:1901100009
  • 学习内容:MIT lecture11前半部分
  • 学习用时:60min DAY22

学习笔记

今天的这部分内容主要在讲递归,听着跟前面Anna老师讲的差不太多。不过听得还是有点云里雾里。只知道递归可能要比迭代要复杂用时较长。

学员信息

  • 学号:1901100009
  • 学习内容:自学营材料
  • 学习用时:60min DAY23

学习笔记

今天重新复习了一遍自学赢得材料,感觉代码比刚学的时候容易了一些。看来的确会慢慢有些进步。 也能进一步理解了MIT课程中所讲的一些内容。 按部就班继续学习吧。

学员信息

  • 学号:1901100009
  • 学习内容:MIT lecture11\12
  • 学习用时:60min DAY24

学习笔记

印象最深的是古斯塔教授的实例演示的视频。直观的展示出了两种算法的运算量。感觉这最后两节主要要讲的就是编程的效率。从这一点上有了一个比较清晰的理解了。现在准备回去重新阅读《自学是门手艺》的前七个章节。找一找编程的感觉和看懂代码的感觉。

学员信息

  • 学号:1901100009
  • 学习内容:自学营学习材料
  • 学习用时:60min DAY25

学习笔记

今天复习了自学营的学习材料。感觉看代码比以前清晰了一些了,就像带上了眼镜。 今天的收获就是搞清楚了utf-8和gb18030的关系。之前复制到文本文档的内容统计不出来词,总是报错。这回算是彻底查询了一下两者之间的区别。 另存为utf-8和把代码改成gb18030都可以。

shen20190000 avatar Aug 01 '19 08:08 shen20190000

是不是应该合到一起更新呢?@realcaiying

shen20190000 avatar Aug 06 '19 15:08 shen20190000

是不是应该合到一起更新呢?@realcaiying

在issue里追加评论也可以,直接更新上面的内容也行的

yingca1 avatar Aug 07 '19 01:08 yingca1