python-study

 · 2019-9-26 · 次阅读


python学习

  python是用来解释执行的,运行速度较慢,但代码数量较少

python分为交互式和文件式
IDLE文本式
IDE
Wing 方便调试,收费
pycharm 简单,收费

科学计算,数据分析
Canopy
Anaconda 开源免费

python中的数据类型

1.整数
python可以处理任意大小的整数,当然包括负整数,在python程序中,整数的表示方法和数学上的写法一摸一样。十六进制用0x前缀和0-9,a-f表示,例如0xff00
2.浮点数
举例:1.23,-9.01也可以用科学计数法表示,把10用e替代,1.23x10^9就是表示为1.23e9,
0.000012可以写成1.2e-5等等。
整数和浮点数在计算机内部存储的方式是不同的,整数永远是精确的,而浮点数运算则可能有四舍五入的误差。
3.字符串
字符串是以’’或者””括起来的任意文本,比如’abc’,”xyz”等而’’与””本身只是一种表示方式,不是字符串的一部分,因此,字符串’abc’只有a,b,c三个字符
4.布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值。
布尔值可以用and,or和not运算
and运算是与运算,or是或运算,not是非运算,它是一个单目运算符,把True变成False,False变成True.
5.空值
空值用None表示,None不能理解为0,因为0是有意义的,而None是一个特殊的空值。此外,python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型。

原始字符串
在字符串前面加上r,那么引号与反斜杠就可以直接转义输出了

python之print语句

print语句可以向屏幕上输出指定的文字
例如>>>print(‘hello,world’)
注意:
1.当我们在python交互式环境下编写代码时,>>>是Python解释器的提示符,不是代码的一部分。
2.当我们在文本编辑器中编写代码时,千万不要自己加>>>.
print语句可以跟上多个字符串用逗号,隔开,就可以连成一串输出,例如:

print(“the quick brown fox”, ‘jump over’, ‘the lazy dog’)
输出:the quick brown fox jump over the lazy dog
print会以此打印每个字符串,遇到逗号”,”会输出一个空格因此才可以把上诉句子凭借起来并转换为空格。
print也可以打印整数,或者计算结果。
print(300)
300 #运行结果
print(100+200)

python的注释

注释是用来说明代码的,给自己或别人看,而程序运行的时候,python解释器会直接忽略掉注释,所以,有没有注释不影响程序的执行结果,但是影响到别人能不能看懂你的代码。
python的注释以#开头,后面的文字知道行尾都算注释。
#这一行全部都是注释。。。
print(‘hello’) # 这也是注释
注释还有一个巧妙的用途,就是一些代码我们不想运行,但又不想删除,就可以用注释暂时屏蔽掉。

python中什么是变量

在python中,变量的概念基本上和初中代数的方程变量是一致的。
例如对于方程式中y=x*x中x就是变量。
在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。
python在使用变量之前,需要对其先进行赋值
在Python中,变量是用一个变量名表示,变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头,比如:a=1
t_007 = ‘T007’这里的变量是一个字符串
在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量,例如。
a = 123
print a
a = ‘imooc’ 这里的a就变为了字符串
这种变量本身类型不固定的语言称为动态语言,与之对应的是静态语言,例如java就是静态语言,当它,int a=123,如果a=’mooc’就会报错。
注意不要把赋值语句的等号等同于数学的等号

python种定义字符串

如果字符串本身包含’应该怎么样。类似的如果字符串本身包含’或””我们就可以用’’括起来表示。
但如果字符串既包含’又包含”就应当使用\来进行转义
例如Bob said “I’m OK”.
这个字符串就可以表示为’Bob said "I'm OK".’
常用的转义字符还有:\n表示换行
\t表示一个制表符
\表示\符本身
如果一个字符串本身包含很多需要转义的字符,对每一个字符都进行转义会很麻烦,为了避免这种情况,我们可以在字符串前面加个前缀r,表示这是一个raw字符串里面的字符就不需要转义了。例如:r’(_)/(_)/‘
但是r’…’表示法不能表示多行字符串,也不能表示包含’和”的字符串
如果要表示多行字符串,可以用’’’…’’’表示:
‘’’Line 1
Line 2
Line 3’’’
‘Line 1\nLine 2\nLine 3’
还可以在多行字符串前面添加r把这个多行字符串也变成一个raw字符串

python中Unicode字符串

字符串还有一个编码问题,由于计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节byte,所以一个字节能表示的最大的整数就是255,0-255被用来表示大小写英文字母,数字,和一些符号。这个编码被称为ASCII编码,比如大写字母A的编码是65,等等
如果要表示中文,显然一个字节是不够的,至少需要两个字节。还不能和ASCII编码冲突所以中国指定了GB2312编码,用来把中文编进去。
类似的,其他的语言也有这个问题,为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言统一到一套编码里,这样就不会再有乱码问题了。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以了。
因为Python的诞生比Unicode标准发布的时间还要早,1所以最早的python只支持ASCII编码,普通的字符串’ABC’在python内部都是ASCII编码的。
以Unicode表示的字符串用u’…’表示比如:
print u’中文’
不加u的话,中文就不能正常显示。
如果中文字符串在Python环境下遇到UnicodeDecodeError,这是因而.py文件保存的格式有问题。可以在第一行添加注释
# -*- coding: utf -*-
目的是为了告诉python解释器,用UTF-8编码读取源代码。然后用NOTPAD++另存为…并选择UTF-8格式保存
python的整数运算结果任然是整数,浮点数运算结果仍然是浮点数。
但是整数和浮点数混合运算的结果就变成浮点数了。
为什么要区分整数运算和浮点数运算呢?因为整数运算的结果永远是精确的,而浮点数运算的结果不一定精确,因为计算机内存再大,也无法精确表示出无限循环小数,比如0.1换成二进制表示就是无限循环小数。
python中的布尔类型只有True和False两种值,它的相关运算有以下几种:
与运算:只有两个布尔值都为True时,结果才为True.
或运算:只要有一个布尔值为True,计算结果就是True.
非运算:把True变为False,或者把False变为True
python把0,空字符串’’和none堪称false,其他数值和非空字符串都看成True。
在计算a and b时,如果a是False,则根据与运算法则,整个结果必定为False,因此返回a;如果a是True,则整个计算结果必定取决与b,因此返回b。or根据或运算类似。

Python-list

Python内置的一种数据类型是列表:list.
list是一种有序的集合,可以随时添加和删除其中的元素。通过索引可以找到List中的第N个数据,索引从0开始。倒数第一可以用-1表示。同理倒数第二用-2表示.
可以用list的append()方法,把新同学追加到list的末尾。
但这个方法总是把新元素添加到list的尾部。
用insert(索引位置,添加的元素)方法即可。
举例:假若有个列表L,则直接使用L.insert(索引位置,添加的元素)
即可.
可以使用pop()方法删除列表的最后一个元素,并且该函数还会返回这个元素。
删除中间的可以在pop()方法的括号中添加索要删除的数据在列表中的位置即可。
tuple是另一种有序的列表,中文翻译为元组。它和List非常类似,但它一旦创建好,就不能修改了,唯一的区别是tupe后面的创建使用的是()
因为用()定义单元素的tuple有歧义,所以python规定单元素tuple要多加一个逗号”,”
例如:t=(1,)

python之if语句

python的缩进规则如下:具有相同缩进的代码被视为代码块,一般缩进习惯写法4个空格,不要使用Tab.
if语句后接表达式,然后用:表示代码块开始。在Python交互环境下敲代码,还要特别注意缩进,退出缩进的话需要多敲一行回车。
python中的else if写为:elif,它的每一个判断后面都用:结尾

操作符

**这里的符号代表次方
还有and,or,not分别代表与或非

python之for循环

实例:L=[‘Adam’,’Lisa’,Bart]
for name in L:
print name
注意:name这个变量是在for循环中定义的,意思是,依次取出list中的每一个元素,并把元素赋值给name,然后执行for循环体。
另一种循环是while循环,while循环不会迭代list或tuple的元素,而是根据表达式判断循环是否结束。break退出循环,continue继续循环。
python之什么是dict
我们把名字称为key,对应的成绩称为value.
举例:d={
‘Adam’:95,
‘Lisa’:85,
‘Bart’:59
}
花括号{}表示这是一个dict,然后按照key:value,写出来即可,最后一个key:value的逗号可以省略。由于dict也是集合,len()函数可以计算任意集合大小。
dict第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样,而list得查找速度随着元素增加而逐渐下降。但dict的缺点就是占用内存大,还会浪费很多内容,list正好相反,占用内存小。
由于dict是按key查找,所以,在一个dict中,key不能重复。
dict的第二个特点就是存储的key-value是没有顺序的。这和list不一样。
dict的第三个特点是作为key的元素必须不可变。list是可变的。
可以通过for循环遍历dict的key:
for key in d:
由于通过key可以获取相应的value,因此,在循环体内,可以获取到value的值。
set的内部结构和dict很像,唯一区别是不存储value.因此判断一个元素是否在set中速度很快。判断用’’ in s.如果在返回true,不在返回false.
set存储的元素也是没有顺序的
set的元素是tuple,因此for循环的变量被依次赋值为tuple
set的更新调用add和remove方法。例子:s =set[(1,2,3)]
s.add(3),s.remove(3)

python3.0运算

在python2的版本中如果采用100/8得到的是12的答案也就是采用了floor向下取整的做法,但在python3.0中除法可以直接得到12.5的准确值。不过python3也提供了之前的运算方法采用100//8就还是可以得到12的值。
在python中的幂运算是**,例如

3**2=9

在python中%是取余运算:

5%2=1

运算优先级问题:与数学中运算顺序一致

之前的运算都为单目操作符,而and是二元操作符

<<<(3<4)and(4<5)
<<<True

Python3学习

条件分支

elif是else if的简写,在书写条件分支语句时候应该思考程序的复杂度,不必要的循环以及不必要的判断操作可以减去的话就减去了程序的复杂度。加快了CPU运行的时间

##三元操作符##

x,y=4,5
if x<y:
    small=x
else
    small = y
以上语句可以简化为
small= x if x <y else y

断言
assert 3>4
如果assert后面语句为假那么会自动抛出AssertionError的异常,这个断言可以用来检测一些代码的正确性

由于python没有数据类型,因而使用列表代表的数组
在python的if条件中不允许使用a=1这种形式,只能使用a==1