本周我主要学习的是基本的python的语法和科学计算,有些人说人工智能不需要太高的编程能力,但我觉得学而不精太可惜了。    

        我学习python语法使用的是《笨办法学python3》
,不得不说,作者真的是把我们当作一个小孩子来教的,书里还有配套教学视频,基本上算是手把手教了。本书最大的优点是作者会尝试的破坏一个完整的程序,然后展示出所谓的bug让读者去debug,这种学习的方法我觉得比单纯的学习枯燥的语法要来的有趣而高效。视频是英文语音,中文字幕的,还可以练练英语听力不是么?一举两得,语速和语调都很合适,一举两得。

      
学习的过程中,由于是学习AI,所以我下载的是anaconda的科学包,一开始并不知道anaconda带的那些程序是什么,询问一个dalao才知道:

Spyder基于B/S的交互式python解释环境
Jupyter基于C/S的交互式python解释环境
Reset那个,你加油,有个工地英语就知道意思了。
Anaconda Prompt,命令行下的anaconda,可以做一些环境的配置、和各环境的切换。
Anaconda Navigtor,用户交互式界面下的anaconda,可以做一些环境的配置、和各环境的切换。里面还带了一些学习文档和社区信息。

     
以上都截取于该大佬提供的资料。不明觉厉有没有!但是我目前主要要用的是python3.7包。不得不说,python的科学包真的太强大了。关于anaconda的安装教程我截取了一段链接:

https://jingyan.baidu.com/article/3f16e0031e87522591c10320.html 
<https://jingyan.baidu.com/article/3f16e0031e87522591c10320.html>

     书上使用的是win powershell来跑python,那我也跟样学样使用吧。关于命令行的入门,书上附录上就有。看视频也能学会的。

     文本编辑器用的是visual studio code,其实code也能跑python,但是作者说用命令行比较好。

     我还下了一个python开发者都应该在用的IDE--pycharm。下载很简单,网上也有教程,就在csdn上。

https://blog.csdn.net/pdcfighting/article/details/80297499
<https://blog.csdn.net/pdcfighting/article/details/80297499>

     关于注册码,csdn也有

https://blog.csdn.net/u014044812/article/details/78727496
<https://blog.csdn.net/u014044812/article/details/78727496>

     不得不说,csdn真的非常强大啊。

接下来就是学习了,这个星期学习的python语法很简单,和c有很多共通只处,然而想快速入门python,有人给我推荐了Learn X in Y minutes
( <https://learnxinyminutes.com/>https://learnxinyminutes.com/docs/python/
<https://learnxinyminutes.com/docs/python/>),
由于是全英文版的,所以也能练练英文水平对吧。接下来就是我的学习笔记了,跟翻译其实没有什么区别,但也加上了在我实际操作以后的一些探索与心得。
<https://learnxinyminutes.com/>
x = 'apple' y = 'lemon' #打印字符串中第一个字符 print("This is a string."[0]) # =>T
#打印出字符x的第二个字符 print(x[2]) # =>p #打印出字符串长度 print(len(x)) # =>5 print()
#以下四种是嵌套字符串的方式 print("The items in %s and %s" %(x, y)) # =>The items in apple
and lemon print("{} is a {}".format(x, y)) # =>apple is a lemon print("{0} can
be {1}".format(x, y)) # =>apple can be lemon print(f"{x} is like {y}") #
=>apple is like lemon print() #在这里要提一下==与is的区别 #==比较对象的内容是不是完全相同(不管两者的地址是否相同)
#is比较两个实例对象是不是完全相同,或者说这两个实例是不是同一个对象 #但在研究is的时候我有一个颠覆我想象的发现
#我在查找资料的时候发现实验与理论上的结果不同,然后发现 #如果声明一个变量为一个数字或者字符串,与另一个变量的内容相等,那么这两个变量归为一个地址 num
= 1 lum = 1 print(num is lum) # =>True #用id查询地址 print(id(num), id(lum))#
=>140704949384016 140704949384016 print() #对其中一个变量名重新赋值 num = num * 2 print(num
is lum) # =>False print(id(num), id(lum)) # =>140704949384048 140704949384016
#实验结果不可思议,可以看到,原本两个相同地址的变量,地址发生了改变 #数值不变的变量lum的地址不变,而数值改变的变量num被分配了一个新的地址
#进一步探究,现在改变lum的值,使其与num的值相同 print() lum = lum * 2 print(num is lum) # =>True
print(id(num), id(lum))# =>140704949384048 140704949384048
#果不奇然,当lum的值与num相同时,lum的地址则改变为了num的地址,而原本lum的地址则不翼而飞
#这很神奇,不得不说,python在我们看不到的很多地方做了很多优化 #那么谁主导这个地址呢,是lum?是num?还是单纯是这个值呢? print()
#我们继续,首先重新声明一个变量 kum = 5 print(id(kum))# =>140704949384144 kum = 50
print(id(kum))# =>140704949385584 gum = 5 print(id(gum))# =>140704949384144
#可以发现,kum的值改变时,地址也随之改变。 #当新声明一个变量,且变量等于先前的那个值的时候,这个新变量的地址又与之前那个完全相同了。
#那么现在,我们可以认为是值主导这个地址了 #但在这个地址没有变量名的时候,里面是否还有这个值,我学疏才浅,不得而知。 print()
#既然如此,那么符合is判断的条件的就只有列表了,因此 #设置两个列表 li1 = [1,2,3] li2 = [1,2,3] print(id(li1),
id(li2))# =>2686962852360 2686962852424 print(li1 == li2) # =>True print(li1 is
li2) # =>False print() #None代表空,与c中的NULL类似,与其他任何数比较都为False print(None is None)
# =>True print(None is x) # =>False print(x is x) # =>True print(x == y) #
=>True print(y is x) # =>True print() #布尔型常量,当函数参数为空,0或者其他所有代表空的数,都返回False
print(bool(0)) # =>False print(bool(1)) # =>True print(bool()) # =>False
print(bool(x)) # =>True print(bool(None)) # =>False print()
#以下是最简单的向程序输入数据的方法,input函数 #input_string_var = input("Enter some data:")
#print(input_string_var) #类似于c的(x < y ? true : false) #如果条件成立就执行语句,否则执行语句二
print(x < y) print("statement1" if x < y else "statement2") print("yahoo!" if 3
< 2 else 2) print() #以下是关于列表的运用 #设置一个空列表 li = [] #设置一个非空列表 other_li = [4,5,6]
#在列表末添加函数append中的参数 li.append(1) li.append(2) li.append(3) print(li) # => li =
[1,2,3] #删除最后一个列表值 li.pop() print(li) # =>li = [1,2] #对指定列表位置赋值 li[0] = 42
print(li) # =>li = [42,2] #打印列表的最后一个列表值 print(li[-1]) # => 2 print()
#重新赋值列表,列表下标和c一样从0开始 li = [1,2,3,4,5,6] #索引下标1到3,包括1不包括3的列表切片,类数学中的[x, y)
print(li[1:3]) # => [2,3] #索引下标大于等于2的列表切片 print(li[2:]) # => [3,4,5,6]
#索引下标小于5的列表切片 print(li[:5]) # => [1,2,3,4,5] #从0开始索引步长为二的的列表切片 print(li[::2]) #
=>[1,3,5] #倒置列表 print(li[::-1]) # =>[6,5,4,3,2,1] #删除列表特定位置 del li[2] print(li)
# =>[1,2,4,5,6] #两个列表相加为合并列表 print(li + other_li)# =>[1, 2, 4, 5, 6, 4, 5, 6]
#print(最小下标闭区间:最大下标开区间:步长) print() li = [1,2,3] other_li = [4,5,6,2] #连接列表
li.extend(other_li) print(li) # =>li = [1,2,3,4,5,6,2] #删除第一次出现的特定值
li.remove(2) # =>li = [1,3,4,5,6,2] print(li) #在指定位置插入一个元素(下标,元素)
li.insert(1,2) # => [1,2,3,4,5,6,2] print(li) #查找特定值的下标 print(li.index(1))# =>0
print(li.index(2))# =>1 print(li.index(3))# =>2 #检查元素是否存在于列表中 print(1 in li) #
=> True #查询列表长度 print(len(li)) # =>7 print() #元组类似于列表,但不可变
#只要不改变元素,类似列表的操作,元组都可以完成 tup = (1,2,3) print(tup[0])# =>1 #类似于tup[0] =
3,这种改变元素值的语句将会报错 print() #可以将元组(或列表)解包为变量 a,b,c = (1,2,3) #现在a = 1, b = 2, c =
3 #声明也可以如下不加括号 d,e,f = 4,5,6 print(a,b,c,d,e,f)# =>1,2,3,4,5,6
#如果给一个变量名赋予多个值,将默认创造元组 g = 4,5,6 #=>(4,5,6) print(g) #交换数值,e = 5,d = 4 e,d =
d,e print(e,d)# =>4,5 print() #下面是字典的应用,关键字和值必须要成对,不然会报错 empty_dict = {}
filled_dict = {"one" : 1, "two" : 2, "three" : 3} #使用[]查找关键字对应的值
print(filled_dict["one"])# => 1 #将所有的关键字作为列表打出 print(filled_dict.keys())# =>
["one", "two", "three"] #在此,文章上写道不一定会按顺序打出,但我运行的时候都是按顺序打出来的 #将所有的值作为列表打出
print(filled_dict.values())# =>[3,2,1] #也不一定按顺序打出,但我运行的时候还是按顺序的 #将所有的组合作为列表打出
print(filled_dict.items())# =>[("one", 1), ("two", 2), ("three", 3)]
#类似于列表的操作,如下,注意只能查找关键词 print("one" in filled_dict) # =>True print(1 in
filled_dict)# =>False #关键词不存在时,会报错,如filled_dict["Four"] #为了避免报错,我们可以使用get()
print(filled_dict.get("one")) # => 1 print(filled_dict.get("four")) # => None
#当字典缺少值时,get()支持返回默认参数,当关键词不存在时,返回默认参数 print(filled_dict.get("one", 4))# =>1
print(filled_dict.get("four", 4))# =>4 #注意填充的get("four")依旧返回None,get不在字典中设值
#要设置值的话可以用类似列表的方法 filled_dict["four"] = 4
由于这一周在复习备考期末考试,所以就只看了一点点。如果笔记存在错误,都可以指出来,我会一一道谢并更改的,英语水平不是很高,见谅见谅。

 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信