1901060005-自学训练营-MIT60001

学员信息

  • 学号:1901060005
  • 学习内容:MIT 30天打卡
  • 学习用时:14.5小时(1-6) + 46.5小时(7-30)

学习笔记

第一天

学习内容:看唐总总推荐链接的视频,感谢自学营没有忘记我们。看第一节课视频40 分钟。 学习心得:
1.刚打开视频,有种崩溃的感觉,完全不知所云,看到十分钟左右还是蒙蒙的状态, 视频起到了很好的催眠效果,看视频的过程中几乎要睡着了。还好为克服惰性选择在 星巴克,喝了一口咖啡提提神,慢慢的看到简单的程序语言有点点熟悉的感觉了,能 够跟着视频听懂一些内容,原来的睡意也没有了,不错的感觉。
2.通过视频学习,对于老师讲到的计算机运算能力很快,但是它什么都不知道,如果 没有给他指令,它什么也做不了,如果我们想让计算机输出“X”就需自己先知道怎样 才能够得到它,并转化机器语言输入计算机。感觉这样的表述特别清楚,学习机器语
言就是学习规范自己的逻辑思维的过程。 3.学习语言的关键动作就是 练习。 4.任何学习都是有一个过程:

知行合一

第二天 视频学习内容:

1.字符串的基本概念和简单操作
2.学习了Python的分支、迭代、循环的表达方式。 学习心得:
1.又加深了对字符串的概念和基本操作的理解。
2.if…elif…的表达方式更精简了语言的条件、分支的表述。 3.加深了对for和 while两个循环的理解,
for循环和while循环,两者的相同点在于都能循环做一件重复的事情;不同点在于, for循环是在序列穷尽时停止,while循环是在条件不成立时停止。

第三天

学习内容:

1.学习视频两遍用时1.5小时
2.学习了字符串的操作,字符串只能被切分,不可更改。
3.新学习到字符串可以简单被反向遍历,以前竟然没有想象过这个问题。
4.学习了三种算法:guess-and-check,approximate solutions,bisection method

学习心得:

自学营结束后,自己又是不是的学习笑来老师的《自学是门手艺》,也有上机练习编程,虽然没有熟练,不过可以编写简单的程序,通过MIT自学营的唤醒,对于Python语言的熟悉度又加强了。主要是在自学的过程中提升了自己的自信心,以前从来没想象自己可以编程,那是遥不可及的事。通过学习感觉到了只要自己要做,并且持续的坚持、践行,就一定会有收获。相信只要学习就一定会产生时间的复利。在学习营里有任务的学习,有同学和老师们的互相砥砺,惰性减少,效率提升,有组织的感觉真好。

第四天

  • 学习时长2小时
    学习内容:

1.复习笑来老师《自学是门手艺》Part.1.E.2.values-and-their-operators部分。
2.学习网上前辈们的技术博客,主要也是学习数值的类型和转换函数。

学习心得:

1.基本的三种数据类型:

  • 布尔值(Boolean Value)
  • 数字(Numbers):整数(Int)、浮点数(Float)、复数(Complex Numbers)
  • 字符串(Strings

重点是有读到了笑来老师书里的一句话:

运算的一个默认法则就是,通常情况下应该是相同类型的值才能相互运算。

这句话自所以是重点,关键它是一个默认法则,也就是通常情况的运算都是遵循这样的法则运行。那么有没有例外呢?自己也在网上搜索了相关信息好像没有不同类型的数值进行运算。不同类型值之间要进行运算就需要进行数值转换,那么转换的函数都有哪些呢?
2.数值转换的函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int(x [,base ])         将x转换为一个整数    
long(x [,base ]) 将x转换为一个长整数
float(x ) 将x转换到一个浮点数
complex(real [,imag ]) 创建一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个字符
unichr(x ) 将一个整数转换为Unicode字符
ord(x ) 将一个字符转换为它的整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串

3.了解并加深了理解不同数值的操作符。

第五天

  • 学习时长2.5小时
    学习内容:

1.学习第四天视频内容。
2.学习定义函数和函数内容编写。

学习心得:

1.视频中的编程内容基本都能够理解,不过自己在读写甚至是编写的时候就感受到了在练中学,对概念的理解是相对容易。
2.比如Python中的函数,自己最初的理解就是一个能够实现某一功能的小段程序。

函数能提高应用的模块性,和代码的重复利用率。

3.函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量。如果要在函数中给全局变量赋值,需要用global关键字声明

第六天

  • 学习时长5小时
    学习内容:

1.笑来老师《自学是门手艺》递归函数部分。
2.视频作业练习。
3.学习了变量的局部范围和全局范围

学习心得:

1.学习了递归函数三原则并反复测试递归函数:

1).根据定义,递归函数必须在内部调用自己;
2).必须设定一个退出条件;
3).递归过程中必须能够逐步达到退出条件……

2.用循环方法和递归函数两种方法计算数值的求和。

  • 递归函数法

    1
    2
    3
    4
    5
    6
    def sum1(num):
    if num ==1:
    return 1
    else:
    return num+sum1(num-1)
    print(sum1(5))
  • 循环法

    1
    2
    3
    4
    5
    6
    def sum1(num):
    a=0
    for i in range(1,num+1):
    a+=i
    return a
    print(sum1(5))

条条大道通罗马,现在的感觉哪条大道修起来都不容易。程序思维是学习的重点,虽然进展缓慢,还是要着实用功。

第七天

  • 学习时长3小时
    学习内容:

1.教学视频及作业练习
2.学习元组•列表
3.一系列列表的操作函数

学习心得:
  1. append,extend,remove,del,pop 等函数都会改变列表。
1
2
3
4
5
6
7
8
L1=["bacon","eggs"]
L2=["toast","jam"]
brunch=L1
L1.append("juice")
brunch.extend(L2)
print(brunch)
print(L1)
print(L2)

结果

1
2
3
> ['bacon', 'eggs', 'juice', 'toast', 'jam']
['bacon', 'eggs', 'juice', 'toast', 'jam']
['toast', 'jam']
  1. join将 容器对象 拆分并以指定的字符将列表内的元素(element)连接起来,返回字符串(注:容器对象内的元素须为字符类型)。

split以指定的字符将字符串分割为单个元素(字符类型)并加入list中,返回一个List。

  1. sorted(L) 返回一个排序后的L,不改变原始的L

L.sort() 是对原始的L进行操作,调用后原始的L会改变,没有返回值
L.reverse() 倒序排列并改变列表。

  1. remove()不能用于循环删除。

    x = [‘a’, ‘b’, ‘c’, ‘d’]
    y = [‘b’, ‘c’]
    for i in x:
    if i in y:
    x.remove(i)
    print x

result:
[‘a’, ‘c’, ‘d’]

第八天

  • 学习时长3小时
    学习内容:

1.第五天学习资料中“lec5_tuples_lists.py”文件,运行里面的代码。

学习心得:
  1. 元组与元组可以进行相加操作,元组也可以迭代。

    t=’python’
    b=(6,7,8)
    c=b+(t[1],)
    print(c)

(6, 7, 8, ‘y’)

  1. 没有搞懂为什么这个函数变量无法调取外部数值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def sum_elem_method1(L):
total = 0
for i in range(len(L)):
total += L[i]
return total

def sum_elem_method2(L):
total = 0
for i in L:
total += i
return total

print(sum_elem_method1([1,2,3,4]))
print(sum_elem_method2([1,2,3,4]))

错误提示:

unindent does not match any outer indentation level (, line 3)

问题解决:total缩进有问题

第九天

  • 学习时长4小时
    学习内容:

1.函数的返回值及函数调用间的关联
2.字符串的格式化方法

学习心得:
  1. 函数无论是否有返回值,都是可以被调用的,没有返回值用print打印函数返回结果是None,有返回值的时候就可以用print显示函数的返回结果。

例如:

1
2
3
4
5
6
7
8
9
def say_hi(*names, greeting='Hello', capitalized=False):

for name in names:
if capitalized:
name = name.capitalize()
print(f'{greeting}, {name}!')
say_hi('tome','jack')
print('-'*20)
print(say_hi('tome','jack'))

终端运行结果

1
2
3
4
5
6
> Hello, tome!
Hello, jack!
--------------------
> Hello, tome!
Hello, jack!
None
  1. 字符串格式化方法主要有三种:%格式化 , str.format()和f-Strings。
  • %格式化操作容易表现出各种问题,导致许多常见错误(例如无法正确显示元组和字典)。

    python中用%代表格式符,表示格式化操作,常用的操作有%s,%d,%r等.
    %r用rper()方法处理对象
    %s用str()方法处理对象
    %d十进制整数表示

  • 使用较新的格式化字符串文字或 str.format() 可以有助于避免这些错误。这些替代方案还提供了更强大,灵活和可扩展的格式化文本方法。它使用普通函数调用语法,并且可以通过 format() 方法为对象进行扩展。使用 str.format() 时,替换字段用大括号进行标记。

    str.fotmat()在处理多个参数和更长的字符串时仍然可能非常冗长。

  • f-Strings,它可以使得字符串格式化更加容易。
    f-strings 是指以 f 或 F 开头的字符串,其中以 {} 包含的表达式会进行值替换。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
name = "hoxis"
age = 18
someone="hello, %s. you are %s ?" %(name, age)
print(someone)
print()


person = {"name":"hoxis","age":18}
is_person="hello, {name}. you are {age}?".format(**person)

print(is_person)
print()


name = 'hoxis'
age = 18
status = 'Python'
message =[
f'hi {name}.'
f'you a {age}.'
f'you are learning {status}.']
print(message)

对应结果:

hello, hoxis. you are 18 ?

hello, hoxis. you are 18?

[‘hi hoxis.you a 18.you are learning Python.’]

第十天

  • 学习时长4小时
    学习内容:

1.学习了列表操作中append(),extend(),insert()不同函数之间的区别,以及pop()和remove()的区别。

学习心得:
  1. 看到群里同学们在讨论append(),extend()的异同,这是自己没有留意到点,顺便做了一点延申学习。

append(object) 是将一个对象作为一个整体添加到列表中,添加后的列表比原列表多一个元素(会改变原列表),该函数的参数可以是任何类型的对象,该函数没有返回值
extend(iterable) 是将一个可迭代对象中的每个元素逐个地添加到列表中,可迭代对象中有几个元素,添加后的列表就比原列表多几个元素,该函数的参数必须是可迭代的对象,改函数没有返回值
insert(object) 方法是指在某个特定位置前面增加一个数据项。

1
2
3
4
a_list=[1,2,3]
b_list=[4,5,6]
a_list.append(b_list)
print(a_list)

[1, 2, 3, [4, 5, 6]]

第十一天

  • 学习时长5小时
    学习内容:
  1. 看了一遍多的视频。
  2. 学习递归函数、编写并运行。
    学习心得:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def printMove(fr, to):
    print('move from ' + str(fr) + ' to ' + str(to))
    def Towers(n, fr, to, spare):
    if n == 1:
    printMove(fr, to)
    else:
    Towers(n-1, fr, spare, to)
    Towers(1, fr, to, spare)
    Towers(n-1, spare, to, fr)

    Towers(3,1,2,3)
1
2
3
4
5
6
7
move from 1 to 2
move from 1 to 3
move from 2 to 3
move from 1 to 2
move from 3 to 1
move from 3 to 2
move from 1 to 2

感觉递归函数特别牛,如此聪明的代码,能看懂但是想不出,满受刺激。

  1. 兔子繁殖的算法让自己头晕,感觉会编程的都是数学家。化繁为简需要的智慧。

第十二天

  • 学习时长2小时
    学习内容:
  1. 学习群里优秀的打卡作业
  2. 学习lec6_recursion_dictionaries.py一个程序
    学习心得:
  3. 套用两个自定义函数的自定义函数感觉逻辑上都难理解。还是先从实用、简单的小程序入手,循序渐进。

第十三天

  • 学习时长3小时
    学习内容:
  1. 学习编程书本中的基础概念及使用。
  2. 学习for循环和while循环。
    学习心得:
  3. 两种循环方法,询问用户显示哪个数的乘法表。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
i=int(input("Which multiplication table would you like:"))
print ("Here's your table:")
for j in range(1,11):
print("%d x %d = %2d"%(i,j,i*j))

i=int(input("Which multiplication table would you like:"))
print ("Here's your table:")
j=0
while j <=10 :
if j >=0:
j+=1
print("%d x %d = %2d"%(i,j,i*j))
else:
break
#print()

运行结果 :

1
2
3
4
5
6
7
8
9
10
11
12
13
Which multiplication table would you like:5
Here's your table:
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50
5 x 11 = 55
  • for循环(计数循环)
  • range()函数–计数循环的一个捷径。
  • while循环(条件循环)
  • 用continue跳到下一次迭代
  • 用break跳出循环

第十四天

  • 学习时长2小时
    学习内容:
  1. 学习MIT视频两遍
  2. 运行、验证代码
    学习心得:
  3. 学习视频就当练习英语了,内容及程序还是要时间慢慢消化,不断地验证吸收。

第十五天

  • 学习时长4小时
    学习内容:
  1. MIT练习题
  2. 字符串格式化的几种方法,编写九九乘法表。
    学习心得:
  3. 字符串几种常用的方法:%操作符,f-Strings,str.format
  • str.format
1
2
3
4
for i in range(9,0,-1):
for j in range(i,0,-1):
print('{}x{}={}'.format(i,j,i*j),end=' ')
print()
1
2
3
4
5
6
7
8
9
9x9=81 9x8=72 9x7=63 9x6=54 9x5=45 9x4=36 9x3=27 9x2=18 9x1=9
8x8=64 8x7=56 8x6=48 8x5=40 8x4=32 8x3=24 8x2=16 8x1=8
7x7=49 7x6=42 7x5=35 7x4=28 7x3=21 7x2=14 7x1=7
6x6=36 6x5=30 6x4=24 6x3=18 6x2=12 6x1=6
5x5=25 5x4=20 5x3=15 5x2=10 5x1=5
4x4=16 4x3=12 4x2=8 4x1=4
3x3=9 3x2=6 3x1=3
2x2=4 2x1=2
1x1=1
  • %操作符
1
2
3
4
for i in range(1,10):
for j in range(1,i+1):
print('%dx%d=%2d'%(i,j,i*j),end=' ')
print()
1
2
3
4
5
6
7
8
9
1x1= 1
2x1= 2 2x2= 4
3x1= 3 3x2= 6 3x3= 9
4x1= 4 4x2= 8 4x3=12 4x4=16
5x1= 5 5x2=10 5x3=15 5x4=20 5x5=25
6x1= 6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
7x1= 7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
8x1= 8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
9x1= 9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
  • f-strtings
1
2
3
4
for i in range(1,10):
for j in range(1,i+1):
print(f'{i}x{j}={i*j}',end=' ')
print()

第十六天

  • 学习时长40分钟

    学习内容:

  1. 笑来老师的《自学是门手艺》“保存到文件的函数”部分
    学习心得:
  2. 事情忙起来都没时间学习,当然也和惰性有关,没有及时投入学习。当有突发情况出现只有见缝插针的进行学习并完成日记。
  3. 学习了函数保存文件里作为模块方便调用,并温习了函数调用的方法。

第十七天

  • 学习时长3小时

    学习内容:

  1. 笑来老师的《自学是门手艺》“值及其相应的运算”部分
  2. 学习lec7_debug_except.py中的程序
    学习心得:
  3. lec7_debug_except.py中的程序对自己来说还是要再花时间消化.
  4. 定义素数列表函数这里就花费了很多时间,刚开始都没有理解程序的逻辑。
  5. 学习别人的程序前首先要看看注释,能比较快速的理解函数要实现的功能。

第十九天

  • 学习时长2小时

    学习内容:

  1. 学习了解“对象”的概念:对象=属性+方法
    • 可以对它们做什么(动作)。
    • 如何描述(属性或特性)。
学习心得:
  1. 先定义对象,像什么,会做什么。就如先画一张图纸确定要建造的实体是什么,能干什么。

第20天

  • 学习时长40分钟

    学习内容:

  1. 学习lec8.classes.py里面的程序
    学习心得:
  2. 没有很好的理解这部分内容,需要加深学习这部分,争取能有点点突破。

第21天

  • 学习时长50分钟

    学习内容:

  1. 学习“类”与“对象”的概念

    学习心得:

  • class后面紧接着是类名,类名通常是大写开头的单词(例如:Teacher),紧接着是(object),表示该类是从哪个类继承下来的.
  • 注意到init方法的第一个参数永远是self,表示创建的实例本身,因此,在init方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。

第22天

  • 学习时长3小时

    学习内容:

  1. 学习“对象”,加深理解属性,方法及实例。

    学习心得:

  • 对象=属性+方法
  • 属性相当于变量,只不过是在对象中的变量。它可以显示,可以赋值,可以给常规变量(不是对象的变量)赋值,可以给其他对象的属性赋值。
  • 对象就是将一个产品从无到有的一个过程,定义类就相当于给一个即将建造的产品命名,然后通过属性和方法告诉大家这个产品是什么,什么形状、颜色、大小、重量等等属性,它可以做什么,可以怎样操作等等。

    比如建房子,属性和方法就是相当于为要建的房子画了一个图纸,只要按图施工就可以建造出图纸上的房子。实例就是开始按照图纸建造房子,一个图纸可以建造很多房子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Door():
"定义类-门"
def __init__(self,size,color,type):
"初始化门的属性"
self.size = size
self.color = color
self.type = type

def open(self):
"门操作的方法"
print("打开这个宽%scm颜色%s的%s门" %(self.size,self.color,self.type))

def off(self):
"门操作的方法"
print("关闭这个宽%scm颜色%s的%s门" %(self.size,self.color,self.type))

door1 = Door('90','red','木门') #门的实例化1
door1.open()

door2 = Door('120','white','铝合金')#门的实例化2
door2.off()

打开这个宽90cm颜色red的木门门
关闭这个宽120cm颜色white的铝合金门

第23天

  • 学习时长50分钟

    学习内容:

  1. 对象实例,数据隐藏

    学习心得:

  • 构建一个对象首先要定义,可以初始化属性,可操作的方法,创建实例。虽然大概流程了解了,要使用好对象还是要在代码上多下功夫,既要不断地熟练基本操作,又要不断的理顺自己的逻辑思维能力。在顺利程序的过程中也是不断的顺利自己思维里的逻辑,是一个一举两得学习。
  • 对象中的数据(属性)可以被查看和修改,不过建立一个方法可以同时调整两个及以上的属性,还有就是可以避免很多无效的操作。

第24天

  • 学习时长30分钟

    学习内容:

  1. 了解学习对象的两个重要的方面:多态。
  2. 学习了两个多态程序。

    学习心得:

  • 多态就是在一个对象中可以有两个或者多个相同的方法,它们可以有不同的行为。
  • 同时再强化下方法,对象的方法就是可以调用这些代码做什么事。方法就是对象中的函数。
  • 概念的理解是学习效率的关键,对于重要概念要反复的学习、复习、敲代码践行。

第25天

  • 学习时长50分钟

    学习内容:

  1. 对象的继承

    学习心得:

  • 继承就像孩子从长辈继承了一些东西,比如样貌、皮肤、发质等等,也可以是钱财。
  • 对象的编程中,类可以从其他类继承属性和方法,就形成一个“家族”以共享相同的属性和方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex

def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman")

class Child(Person): # **Child 继承 Person**
pass

May = Child("May","female")
Peter = Person("Peter","male")

print(May.name,May.sex,Peter.name,Peter.sex) # 子类继承父类方法及属性
May.print_title()
Peter.print_title()

第26天

  • 学习时长 30分钟

    学习内容:

  1. 对象现实应用

    学习心得:

    明天继续完成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class BankAccount:
def __init__(self ,account,name,balance):
self.account=account
self.name=name
self.balance=balance

def save_money(self, money):
self.balance += money

def draw_money(self,money):
if self.balance>=money:
self.balance-=money
print("取款金额:{} 余额:{}".format(money,self.balance))
else :
print("余额不足")

第27天

  • 学习时长 50分钟

    学习内容:

  1. 对象现实应用

    学习心得:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    class BankAccount:
    def __init__(self ,account,name,balance):
    self.account=account
    self.name=name
    self.balance=balance

    def save_money(self, money):
    self.balance += money

    def draw_money(self,money):
    if self.balance>=money:
    self.balance-=money
    print("取款金额:{} 余额:{}".format(money,self.balance))
    else :
    print("余额不足")

    def check_balance(self):
    print("账号:{} 户名:{} 余额:{}".format(self.account,self.name,self.balance))

    bankat=BankAccount(123456,"lili",3200)
    bankat1=BankAccount(123489,"王文",1000)
    bankat.save_money(2800)
    bankat.draw_money(1200)
    bankat1.save_money(890)
    bankat1.draw_money(1000)
    bankat.check_balance()
    bankat1.check_balance()

取款金额:1200 余额:4800
取款金额:1000 余额:890
账号:123456 户名:lili 余额:4800
账号:123489 户名:王文 余额:890

第28天

  • 学习时长60分钟

    学习内容:

  1. 使用pygame绘制圆形,矩形。

    学习心得:

  • 在学习的路上不会孤单,有问题先在网络上查找解决问题的办法,有无数的先行者已经把踩过的坑都做了解决攻略。学习中最需要的是克服自己的浮躁,有问题的时候就是提升自己的时候,无论知识还是情绪。
  • 学习python基础的概念、知识点之后,可以借助第三方库解决很多实际问题,这样语言就越来越贴近工作和生活了。
1
2
3
4
5
6
7
8
9
10
11
12
import pygame,sys
pygame.init()
screen = pygame.display.set_mode([640,480])
screen.fill([255,255,255])
pygame.draw.circle(screen,[255,0,0],[320,160],60,0)
pygame.display.flip()
running=True
while running:
for event in pygame.event.get():
if event.type==pygame.QUIT:
running=False
pygame.quit()

第29天

  • 学习时长70分钟

    学习内容:

  1. 学习了一部分程序复杂度分析(大O表示法)。

    学习心得:

  • 看了Lecture10部分视频,云里雾里,通过网络资料了解、学习程序复杂度分析。
    算法通过时间复杂度和空间复杂度来评价一个程序的好坏,衡量算法的运行时间有三种方法:

    基准评价、统计指令,以及复杂度分析(大O表示法)。

  • 空间复杂度和时间复杂度,可以作为选择数据类型的评判标准之一。

    对于一个程序来说,编程语言提供了最基础的类型实现,例如python里面的str,int,float,list,tuple等,在表达一个数据结构的时候,就有各种选择,可以选择不同的方式,而当你选定了数据结构,那么你程序最基本的运行时间就大概已经定型。

  • 不同数据结构复杂度连接分享。

    https://www.cnblogs.com/yueyun00/p/10246251.html

第30天

  • 学习时长60分钟

    学习内容:

  1. 使用pygame随即绘制100个矩形。

    学习心得:

  • 在脚本上随便修改矩形颜色,底板颜色,随机生成100个矩形图案相互叠加还是蛮好玩。
  • 时间和坚持会越来越了解、理解一门语言,同时这门语言是未来的趋势,是技能、是手艺、是逻辑训练工具、是与年轻人交流的工具甚至可以成为发展兴趣的工具(瞬间感觉这门语言很强大^ _ ^)。
  • 坚持打卡30天,过程中不断的挑战、突破,时间及惰性,虽然还有太多不足,而这也是前行的动力。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pygame,random
pygame.init()#初始化pygame
screen = pygame.display.set_mode([640,480])#设置显示幕布的宽和高
screen.fill([255,255,255])#幕布填充白色
for i in range(100):
width = random.randint(0,250)
height = random.randint(0,100)
top = random.randint(0,400)
left = random.randint(0,500)
pygame.draw.rect(screen,[0,0,0],[left,top,width,height],1)
pygame.display.flip()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()