Python学习心法
1、语法不是重点
2、算法不是重点
3、数据结构及其转化是大多数算法的核心,是应该花大力气学习的知识。
4 、Python知识的二八原则
20%的知识比较难 80%的知识浅显易懂;
80%的知识在编程中用不到 ,常用的20%左右。
5、在ai时代,有许多代码辅助工具可以在学习和工作中使用运。比如codex(https://beta.openai.com 基于GTP-3和GPT-C,2022年五月codex内测结束,开始收费。), alphacode, Copilot tabnine 等等。知识的细节和语法熟练度等方面越来越不重要。所以学习的专注点不要放在语法和编程基本功上,也没必要花太多时间刷很多算法题,应该专注于问题本身、专注于问题所在领域的技术动向。在入门过程中我们很难写出高质量、有意义的代码,当你在语法和句法方面遇到的困难时,试着跳过那些微不足道的问题,试着用注释先备注这里遇到的问题,先让程序的骨架搭建起来,再回头处理细节问题。
关于几个代码辅助工具的文章https://posts.careerengine.us/p/60dc0202fe56051682946b57
6、专注于数据流
7、当你对代码的表达没有足够经验时,读10个别人写的优秀的程序、不如一次将自己的简单 想法用代码实现。试着将自己的编程思想表达出来,每一次完整的编程实践都意味着能力的拔高。
8、如果你关心的领域没有充足的库和算法有两个可能 ,你检索的范围和检索的方法有问题, 这部分知识被隐藏了起来。试着投入精力解决你要解决的问题,这是我们学习编程的最终目的
9、学编程语言和学自然语言有很大部分是原理相通的,词汇量、 表达习惯 ,表达能力,思考能力、阅读能力,创新能力都可能帮助我们突破阻碍,也都有可能成为障碍。
10、 当我们学习编程时,我们是在学习一种思考方法,思考工具,我们在提高思想的维度。
编程作为一种语言或许也是有维度的,不同维度的编程用来解决不同维度的问题,从我们运用计算器处理简单的数学计算开始,或许就注定了计算机编程的宏大叙事;我们创造数据模型模拟世界,模拟我们身边的事物,编程和算法的核心目标是将问题数据化可计算化。
什么样的事物是可以计算的呢?这个问题的答案一直在被改写。
What is program? What is python?
编程是符号的学问,它既包含数学、哲学、语言学,与我们以往的知识大有不同, 数学用函数和模型来描述事物,而编程即延袭了这些方法和思想、又开创性的提出了很多运算的概念, 神经网络、机器学习这样的算法既是数学又突破了数学 ,不要急着回答诸如What is program这样的问题 ,也不要急着去回答编程能干什么这样的问题,计算科学才刚刚起步就改变了世界, 编程是智慧的飞跃 ,更是是智慧的进化,是新时代的生产工具、思考工具。
丰富的代码组合可以解决许多问题,怎么用编程来解决你的问题才是问题的核心,你要首先了解你的问题,其次你要了解编程.
一直以来自然语言和文字被用作交流、思考、创造和传承的工具, 自从有了计算机科学、我们的一切都被改变了,而且这种改变的速度在逐步的加快 ,编程语言不只是一门技术,而是将来人们必须掌握的生存技能 .
人们因使用而学习。而使用是最好的学习方法。学习Python可以有很多的动机,因为Python可以完成太多的工作,初学者应该带着怎样的目标来学习呢?
太多的概念太多的应用和场景都在使用Python,这让初学者很容易迷失方向,但如果你带着目标来学习将起到事半功倍的效果.
为什么要专注于目标?当我们专注于目标来学习Python时我们可以忽略掉目标无关的知识忽略掉学习上的选择困难,.
编程已经扩展到生活和生产的方方面面:网络,娱乐,艺术,社交App, ai教育,小程序,ERP,财务,设计,游戏,物联网,工控,自动化,,智能家居,智能交通,智能穿戴,服务机器人,机器视觉,语音识别,翻译,tts语音转换,声纹技术,生物传感器,脑机接口,镶入式设备,爬虫,云,人工智能,大数据,区块链,数字货币,科学计算, 这些或成熟或稚嫩的应用场景, 都在被硬软件技术改造着。未来越来越数字化,越来越虚拟化。
如果你清楚的知道你要用Python去做什么事,那么学习就变得简单了,Python可以做很多事情。 你需要掌握一门编程语言,python 是不错的入门语言。.
Python本身并不有趣,但那些人们正在用python所作的事情太有趣了。
python 知识体系如下表:
入门第1课
print语句
1, print语句是一个Python内置函数,作用是将括号中的东西显示出来,这个函数可以显示几乎所有的数据,数字,字符串,变量,表达式。
暂停思考:什么是数据?什么是数据结构?什么是数据类型?可计算的东西都可以是数据,数据可以是简单结构,没有结构,也可能结构复杂:比如课表、棋类棋谱、图片、视频音频、波形、乐谱、思维导图等等.
数据类型:我们将需要计算的东西规范化统一化以便计算机能够存储计算。如:int, 布尔,列表、字典,就是我们设计的数据类型。用type()函数可以查询数据的类型。
print语句可以打印很多东西
print(‘money’)
pyint(‘money’*100)
a = range(10)
print(a)
注意:print 既然是一个函数,函数后面的括号自然少不了
x = 558
y = 557
print(x+y)
print 打印布尔表达式
a = 2
b = 3
print(a>b) #a>b是一个布尔表达式,这里的结果是假False
#是一个注释符号,是代码的解释,#后面的语句不执行,只是帮助代码的阅读
三个单引号和三个双引号常用来注释一段代码,二者效果一样。
单引号注释代码块
‘’’
dshskjhkj
jjkjkkjklk
‘’’
双引号注释代码块
”“
hjhkj
kljklj
klkjkljk
”“
在调试代码是也会经常使用ctrl + / 快捷键来注释掉整块代码,再次按ctrl + / 可以取消注释
特别要注意:在录入代码时,务必将电脑输入法切换到英文输入模式,Python不认识中文标点符号
注意:print函数默认是换行的如果不换行可以在输出内容后加end=' ’用逗号隔开。
end=‘\n ‘是默认参数,默认情况换行。
print ()函数还有很多参数,在深入学习中会遇到
a = 2
b = 3
print(a>b)
print(a*b)
print(a-b,end=' ')
print(a+b,end=' ')
print(a,a,b,b,)
print('结束打印')
输出
False
6
-1 5 2 2 3 3
结束打印
这里的end=’‘之间加了一个空格
实际上我们可以把end 参数换成很多样式,以达到输出效果,我估计它的性质和关键字参数类似,有兴趣可以作些实验
a = 2
b = 3
print(a>b,end='___\n')
print(a*b,end='7,6,8,7,6,\n')
print(a-b,end='&&\n')
print(a+b,end='1,2,3\n')
print(a,a,b,b)
print(end=' ************* ****** ***** *****\n')
print('结束打印')
输出
False___
67,6,8,7,6,
-1&&
51,2,3
2 2 3 3
************* ****** ***** *****
结束打印
注意”print函数的两种格式化输出%和format。也不是多难,初学者了解便好。
先来了解下%后面接不同字母代表的转换意义,%s 表示转换成字符,%o转换成8进制
%d转换成10进制,%x转换成16进制,%o转换成8进制,%接f,e,g表示保留不同的有效位,以及小数点后位数。%%文字,%i 转换成整数
例:a = 88,print('a 的大小为:%s'% a) 输出:a 的大小为:88
%S也被解释为占位符,先在输出内容中展占位,最后补充说明该位置应该替换的数据
a = 88
b = 99
print('a 的大小为:%s,b 的大小为%s,两者相差%s'% (a,b,b-a))
输出:a 的大小为:88,b 的大小为99,两者相差11
format 和%差不多
zidian = {'name':'张三','age':'40','tixing':'球型'}
print('大肥猪{name},今年{age}岁,体型已经变成{tixing}了'.format(**zidian))
输出:大肥猪张三,今年40岁,体型已经变成球型了
print()函数还有一个重要的参数sep=,用来设置分隔符
a = '你好:'
b = '先生'
c = '王'
d = '李'
e = '赵'
f = '小姐'
print(a,c,b,sep=' | ',end=' -------- ---- --\n')
print(a,d,b,sep=' | ',end=' -------- ---- --\n')
print(a,e,f,sep=' | ',end=' -------- ---- --\n')
输出
你好: | 王 | 先生 -------- ---- --
你好: | 李 | 先生 -------- ---- --
你好: | 赵 | 小姐 -------- ---- --
入门第2课 变量及变量赋值
计算机可以存储数据,这是冯诺依曼结构的特点,我们不用知道数据存在硬盘的和内存的什么地方,Python编程要做的,只是给这块存储空间起一个名字。
Python变量命名只有简单的几条规则:
1、变量名[空间的名字]由字母和数字以及下划线组成。
2、但不能以数字开头
3、下划线是可以开头的,但这种情况是极特殊:__init__,__main___,__item__
4、有一些字母组合是保留关键字,而这些保留关键字是python执行器判断程序结构的依据,在变量命名时不能使用。
>>> import keyword #导入keywork外置模块
>>> keyword.kwlist #用kwlist方法打印python保留关键字
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
注意:以上四条不仅是变量名命名的规则,同时也是函数和类的命名规则.
变量赋值
Python赋值语句的设计十分自由简洁:例如
a = ’你好世界‘
不需要提前申明变量,约束变量的类型,在赋值的一瞬间完成了许多工作。
第1句a = ’你好世界‘就是一条赋值语句,变量a被赋值为’你好世界’,前边不需要加上数据类型,Python根据后面的内容自动判断数据类型
变量的赋值也意味着被分配存储空间 (实际上只是指向)
(扩展知识:Python的内存分配机制有共用、驻留、销毁等机制,可以用is方法判断两个变量是不是被分配到了同一空间,可以用==判断两个变量中存储的值是否相等,可以用id()的方法查询变量存储的内存位置,(地址)。变量被赋值后,可以的随时随地给他赋另外一个类型的值.
一个变量被赋值后编程者要清楚的掌控此时这个变量的类型,这点很重要。因为不同类型的数据有不同的计算特性和方法特性。
变量对应着存储空间,你可以先给变量赋予一个字符,然后过一阵子再用它来存储其他的东西,这是可以的。变量的类型type,由它存储的数据决定。
a = 'hj'
print(a)
print(type(a)) #打印变量a的数据类型
a = 1
print(a)
print(type(a)) #再次打印变量a的类型
输出
hj
<class 'str'>
1
<class 'int'> #因为变量a被重新赋值,所以它的类型变了
不要纠结变量的名字,关注变量中的值才是重点,简单的一对一变量赋值一般不会出错,容易出错的地方是,我们在用变量接收函数返回值时、容易把数量搞错,这时需要注意,函数有几个输出就用几个变量来接收,数量上要匹配否则会报错.
很多时候我们的赋值语句不是给变量一个给定的值而是一个表达式 ,甚至是一个随着程序运行而不断变化的一个表达式 ,这里我们举几个相对简单的例子:
a = 1
b = 2
c = a*b+a/b
print(c)
输出:2.5
为了追求语句简洁,Python还可以批量赋值
a, b, c, d = 1,3,5,9 #赋值符号=两边个数匹配就行,这里同时给四个变量赋四个值
print(a, b, c, d)
输出
1 3 5 9
赋值语句还往往将函数的返回值赋给变量
def just(lst=[1,2,3,4]):
a, b, c, d = lst[0], lst[1], lst[2], lst[3]
return a,b,c,d
e,f,g,h = just(lst=[5,6,7,8])
print(e,f,g,h)
输出
>>> 5 6 7 8
函数的相关知识将在后边学习,这里只需了解有这样的赋值形式
locals()函数,动态变量(难点初学者可忽略):
如果变量名比较多而这些变量名又是有一定规律时可以使用动态赋值
names = locals() #告诉编译器我要定一个动态变量names
for i in range(5):
names[‘n’+str(i)]=i #动态生成变量名
print(n0 n1 n2 n3 n4) #n0 n1 n2 n3 n4是动态生成的变量
输出
01234
在阅读代码时,了解赋值符号两边东西是理解代码的关键。赋值语句是最简单的python知识,但赋值语句又最基础最普遍最重要的语句,有时=右边的结构比较复杂,要细心分析表达式的最终结果,随着学习的深入,你会发现,所有的数据类型都可以赋值给变量,除此之外图片,视频,声音,文件,设备,网络端口等等太多的事物都可以用赋值语句赋值给变量,你会越来越了解,变量的意义,赋值的意义,数据的意义,计算的意义。
总结:这里我们大概了解了python的知识体系,了解了print函数,了解了变量的命名规则,以及变量的赋值,我们可以尝试给变量赋不同的值并打印出来。
如何作实验:下一节我们将介绍python的编程平台pycharm,在此之前可以使用菜鸟工具的python在线工具https://c.runoob.com/compile/9/ 对本节类容进行练习,手机浏览器也是可以的。代码写点击运行就可以在下免得输出框看到结果。下一节进行数据类型的学习。