第一章 Python基础语法

     目前由于大数据和人工智能的流行,Python越来越火,和其他语言相比,Python简洁易用,实现同样的功能往往其他语言需要好多行代码,而Python只需要几行就完成了。Python目前用的最多的地方是人工智能方向,其次在Web应用上用的也比较多,另外作为脚本语言,在自动化测试等方面使用也比较广泛。

    Python入门简单,但是想深入掌握并不容易,每一门语言都是这样,而且由于python灵活,更增加了它的难度,我个人做过Java和Golang的开发,Python和另外两门语言比较,确实太灵活,这是它的优点,有时候感觉也是缺点。

1.1 Python版本说明

     目前最流行的是Python3.x版本,在2008年12月发布的,Python3.0是一次重大升级,而且为了避免引入历史包袱,Python3.0没有考虑与Python2.x兼容,这就导致了Python2.x与Python3.x之间差异较大,所以如果使用Python2.x,很多地方与Python3.x不兼容,所以初学者最好上手就用Python3.x版本

1.2 Python特点

优点:

Python是一种面向对象的解释型的弱类型的脚本语言,相比Java等语言,Python代码显得比较简单,上手非常容易,而且简洁。

Python没有大括号,而是使用缩进的方式,这点后续通过代码可以感受到

Python是一门解释型语言,因此天生就具有跨平台的特征,只要为该操作系统提供了相应的Python解释器,Python程序就可以在上面运行。

缺点:

执行速度慢:由于Python是解释型语言,因此它的执行速度比较慢,比如和Java、C、 C++相比都要慢

源代码加密困难:Python不像编译型语言的源程序会被编译成目标程序,Python是直接运行源程序,因此对源代码加密比较困难,所以如果要商业化一个软件,源代码就有可能被窃取,需要做其他处理。

1.3第一个程序

学每一门编程语言,第一个程序基本都是hello world,下面是Python的hello world程序

例1.1 Hello world

#!usr/bin/python3

print("Hello world")

结果:

Hello world

1.4 交互式解释器

交互式解释器可以让开发者逐行输入Python代码,解释器逐行解释,交互式解释器可以用于测试各种功能,方便快捷

例1.2 使用交互式解释器执行hello world

例1.3 获取python关键字

例1.4 计算加法 

1.5 变量

所有编程语言的第一个功能基本都是定义变量,变量是编程的起点,程序用到的各种数据都是存储在变量内的,Python是一门弱类型语言,弱类型包含两方面含义

1. 所有的变量无须声明即可使用,或者说对从未用过的变量赋值就是声明了该变量。

2. 变量的数据类型可以随时改变,同一个变量可以一会儿是数值型,一会儿是字符串型

变量就像一个个小容器,用于盛装程序中的数据,常量同样也可以做到这点,区别是:常量一旦保存了某个数据后,该数据就不能发生改变,但变量保存的数据则可以多次发生改变,只要程序对变量重新赋值即可。

变量的命名规则:同其他编程语言类似,Python变量支持以字母、下划线开头,后面更若干个字母、下划线、数字

定义变量的时候尽量不要和关键字和内置函数重名,否则可能出现问题

定义变量用=运算符,如下所示:

例1.5 定义变量

#!usr/bin/python3
a = 5  #定义变量
print("a = ", a)
a = "haha" #定义变量
print("a = ", a)
print("type = ", a)

结果:

a =  5
a =  haha
type =  haha

全局变量与局部变量

#!/usr/bin/python3
total1 = 0  # 这是一个全局变量
def sum(arg1, arg2):
    total2 = arg1 + arg2  # total2在这里是局部变量.
    print("函数内是局部变量 : ", total2)
    return total2

# 调用sum函数
sum(10, 20)
print("函数外是全局变量 : ", total1)

结果:

函数内是局部变量 :  30
函数外是全局变量 :  0

常量

pi: 数学常量 pi(圆周率,一般以π来表示)

e: 数学常量 e,e即自然常数(自然常数)

#!usr/bin/python3
import math
print("pi = ", math.pi)
print("e = ", math.e)

结果:

pi =  3.141592653589793
e =  2.718281828459045

print函数

这里插一下print()函数,如上例所示,print可以将变量打印出来,print也可以输入多个变量,如下所示:

例1.6 print输入多个参数

#!usr/bin/python3
name = "zhangsan"
age = 20
print("name = ", name, "age = ", age)

结果:

name =  zhangsan age =  20

file参数指定了print()函数的输出目标,print()函数file参数的默认值是sys.stdout,该默认值代表了系统标准输出,也就是屏幕,因此print()函数默认输出到屏幕上,实际上,完全可以通过改变该参数让print()函数输出到特定文件中,如下所示:

例1.7 

#!usr/bin/python3
f = open("test.txt", "w")
print("haha", file=f)
print("hehe", file=f)
f.close()

结果:输入到了test.txt中

1.6 运算符

与其他编程语言一样,python也有众多的运算符,运算符是用来表示数据的运算、赋值和比较等,编程语言的运算符一般分为如下几种:

1. 赋值运算符

2. 算术运算符

3. 位运算符

4. 索引运算符

5. 比较运算符

6. 逻辑运算符

7. 成员运算符

1.5.1 赋值运算符

赋值运算符已经用了很多了,几乎所有编程语言都用 = ,将右边的值赋给左边的变量或常量,如下所示:

例1.8 普通赋值运算符

#!usr/bin/python3
a = 3 #为变量a赋值
b = a #将变量a的值赋给变量b
print("a = ", a)

例1.9 幂赋值运算符

a = 2
b = 5
b **=a #相当于b = b ** a
print("b = ", b)

结果:

25

python支持给多个变量同时赋值,例如:

例1.10

#!usr/bin/python3
a, b, c = 10, 20, 30
print("a = ", a)
print("b = ", b)
print("c = ", c)

结果:

a =  10
b =  20
c =  30

1.5.2 算术运算符

算术运算符包括经常使用的加、减、乘、除、取余等

1. 加法

例1.11

#!usr/bin/python3
a = 3
b = 5
c = a + b
print("c = ", c)

结果:

c =  8

2. 减法

例1.12

#!usr/bin/python3
a = 8
b = 1
c = a - b
print("c = ", c)

结果:

c =  7

"-"除了做减法,还可以当作求负数的运算符

例1.13

#!usr/bin/python3
a = -3
print("a = ", a)

结果:

a =  -3

3. 乘法

例1.14

#!usr/bin/python3
a = 8
b = 2
c = a * b
print("c = ", c)

结果:

c =  16

4. 除法 / 与 //

python 中有两种除法,/ 与数学意义上的除法一样,除不尽,会有小数,而// 的结果只有整数部分。

例1.15

#!usr/bin/python3
a = 19.0
b = 4
print("a / b = ", a / b)
print("a // b = ", a // b)

结果:

a / b =  4.75
a // b =  4.0

5. 乘方

例1.16

a = 2
b = 4
c = a ** b
print("c = ", c)

结果:

c = 16

6. 取余

就是求余数,求余数涉及到除法,因此第二个操作数不能是0

例1.17

#!usr/bin/python3
a = 5
b = 2
c = a % b #5除以2余数是1
print("c = ", c)

结果:

c =  1

1.5.3 成员运算符in

成员运算符有in 和 not in,用法见下例:

例1.18

a = 10
lists = [1, 2, 3, 4, 5]

if a in lists:
    print("a 在list中")
else:
    print("a不在list中")

结果:

a不在list中

例1.19

#!usr/bin/python3
a = "haha hehe"
if "haha" in a:
    print("haha")

if "heihei" not in a:
    print("hehe")

结果:

haha
hehe

1.5.4 比较运算符

比较运算符一般有如下几种:

1. >   判断第一个数是否大于第二个数

2. <   判断第一个数是否小于第二个数

3. >= 判断第一个数是否大于等于第二个数

4. <= 判断第一个数是否小于等于第二个数

5. == 判断第一个数是否等于第二个数

6. !=  判断第一个数是否不等于第二个数

7. is  判断两个变量所引用的对象是否相同,如果相同则返回True

8. is not 判断两个变量所引用的对象是否不同,如果不同则返回True

比较运算符中需要注意==表示两个变量的值是否相等,而is 是比较两个对象是否是同一个对象,注意区分。

例1.20

#!usr/bin/python3
import time
a = time.gmtime()
b = time.gmtime()
print("a == b : ", a == b) #当前系统时间相等,因此这里返回True
print("a is b : ", a is b) #二者不是一个对象,因此这里返回False
print(id(a)) #返回a的地址
print(id(b)) #返回b的地址,二者的地址不一样,因此是不同的对象

结果:

a == b :  True
a is b :  False
4435201344
4435604288

1.5.5 位运算符

位运算符一般都用在比较底层的地方,可以直接操作数值的原始bit位,初学者可以先跳过

1.5.6 索引运算符

主要用在字符串或列表中,用于获取字符串或列表的元素,如:

例1.21

#!usr/bin/python3
a = "www.baidu.com"
print(a[4]) #打印索引为4的元素b

结果:

b

1.5.7 逻辑运算符

逻辑运算符用于操作bool类型的变量、常量、表达式,返回值也是bool类型

python的逻辑运算符有如下3个

1. and: 与,其他编程语言一般写作&&,前后两个操作数必须都是True才返回True,否则返回False,即“一假即假”

2. or :  或,其他编程语言一般写作||,前后两个操作数只要有一个是True就True,除非两个都是False才返回False,即“一真即真”

3. not:非,只需要一个操作数,操作数为True,则取非返回False,操作数为False,则取非返回True

逻辑运算符在条件语句、循环语句用的非常多,相关用法在条件语句和循环语句介绍

1.5.8 三目运算符

三目运算符是为了简洁,将if else语句转化为了1行,一般使用三目运算符的地方都可以用if else条件语句替代,这里不再介绍

1.6 数据类型

在所有编程语言中,都有数据类型的概念,Python虽然是弱类型语言,同样也有数据类型的概念,一般情况,数据类型都有整型、浮点型、字符型、布尔型。

1.6.1 数据类型的分类

1.6.1.1 整型

Python的整型支持各种整数值,不管是大的数,还是小的数,这点与Java不同,有Java语言经验的伙伴应该记得Java表示整型还分byte、short、int、long,来分别代表不同范围的数字,Python将这一切都简化了,如下所示:

例1.22

#!usr/bin/python3
a = 45
print(a)

a = 678934438483483843843833232324834  #多大的数都可以表示,如果放到其他语言,可能会溢出
print(a)
print(type(a))

结果:

45
678934438483483843843833232324834
<class 'int'>

另外python也支持None值(空值,类似于java的null,golang的nil),如下所示:

例1.23

#!usr/bin/python3
a = None
print(a)

if a == None:
    print("a == None")

if a is None:
    print("a is None")

结果:

None
a == None
a is None

1.6.1.2 浮点型

与其他编程语言一样,浮点数用于保存带小数点的数值,Python中的浮点数有两种表示方式:

1. 十进制形式:这种方式最常见,如5.34,浮点数必须包含一个小数点

2. 科学计数形式:例如5.34e2 (即5.34 x 10 的平方),只有浮点型数值才可以使用科学技术形式表示。

例1.24

#!usr/bin/python3
a = 4.232
print("a = ", a)
print("type(a) = ", type(a))

b = 5e4
print("b = ", b)
print("type(b) = ", b)

结果:

a =  4.232
type(a) =  <class 'float'>
b =  50000.0
type(b) =  50000.0

1.6.1.3 复数

这个用的不多,其他编程语言用的也很少,知道Python支持复数就行,初学者很难接触到

1.6.1.4 布尔型

布尔型在所有编程语言中几乎都存在,有两个值True、False,表示真假,如5 > 3就是真,5 < 3就是假,相关用法在比较运算符那里使用过,后面在条件判断语句和循环语句中经常要用到

例1.25

#!usr/bin/python3
a = 5 > 3
b = 5 < 3
print("a = ", a)
print("b = ", b)

结果:

a =  True
b =  False

1.6.2 字符串操作

在各种编程语言中,字符串都是少不了的,字符串就是一串字符,比如"haha",字符串必须用引号括起来,在Python中使用单引号和双引号都可以,但是在其他编程语言中基本只能用双引号。

例1.26

#!usr/bin/python3
str = "haha"
print("str = ", str)

结果:

str =  haha

字符串拼接

例1.27

#!usr/bin/python3
s1 = "hello "
s2 = "world"

s = s1 + s2
print("s = ", s)

结果:

s =  hello world

多个相同字符串拼接

例1.28

#!usr/bin/python3
a = "haha.hehe"
b = a * 5 #5个相同字符串拼接
print("b = ", b)

结果:

b =  haha.hehehaha.hehehaha.hehehaha.hehehaha.hehe

字符串与数字拼接

字符串与数字进行拼接,需要先将数字转化为字符串,转化的方式有使用str()和repr()两种,如下所示:

例1.29

#!usr/bin/python3
price = 10.3
print("the price of this book is " + str(price))
print("the price of this book is " + repr(price))

结果:

the price of this book is 10.3
the price of this book is 10.3

获取用户输入

input()函数用于向用户生成一条提示,然后获取到用户输入的内容,该函数返回的是一个字符串,如下所示:

例1.30

#!usr/bin/python3
msg = input("please input a str")
print("msg = ", msg)

结果:

Python长字符串

Python可以用''' '''来表示长字符串,同时也可以被用来做注释,如下:

例1.31

#!usr/bin/python3
s = ''' dksfjdsfkdskfjkdsjkfjdsjf
 dksfjdjksfjdskfkjdsjkfjkdsjfjdsk
 dfksadjfkjdsjfdjkskfjdskfjdskfjsd
 kdsfjkdskjfkdsjfkdsjkkfjjdskfjds '''

print("s = ", s)

 结果:

s =   dksfjdsfkdskfjkdsjkfjdsjf
 dksfjdjksfjdskfkjdsjkfjkdsjfjdsk
 dfksadjfkjdsjfdjkskfjdskfjdskfjsd
 kdsfjkdskjfkdsjfkdsjkkfjjdskfjds

字节串(bytes)

所谓的字节串,官方没有这个概念,指的是和字符串对应,基本单位是字节,以字节为单位进行操作。字符串转字节串有3种方式,分别是:

a. 如果字符串内容都是ASCII字符,可以直接在字符串之前添加b来构建字节串值

b. 调用bytes()函数,将字符串按指定字符集转换成字节串

c. 调用字符串本身的encode()方法将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用UTF-8字符集

例1.32

#!usr/bin/python3
a = b"python"
b = bytes("我喜欢python", encoding="utf-8")
c = "我喜欢python".encode()

print("a = ", a)
print("b = ", b)
print("c = ", c)

结果:

a =  b'python'
b =  b'\xe6\x88\x91\xe5\x96\x9c\xe6\xac\xa2python'
c =  b'\xe6\x88\x91\xe5\x96\x9c\xe6\xac\xa2python'

同样也可以把字节串转码为字符串,如下所示:

例1.33

#!usr/bin/python3
a = b'\xe6\x88\x91\xe5\x96\x9c\xe6\xac\xa2python'
s = a.decode()
print("s = ", s)

结果:

s =  我喜欢python

转义字符

与其他编程语言一样,Python也有转义字符,用\ ,如\n表示换行,\\表示反斜线,如下例所示:

例1.34

#!usr/bin/python3
s = "haha\nhehe\nheihei\nxixi"
print("s = ", s)

结果:

字符串格式化

Python提供了 % 对各种类型的数据进行格式化输出,例如:

例1.35

#!usr/bin/python3
age = 30
print("the age of xiaoming is %s" % age)

结果:

the age of xiaoming is 30

如果出现了多个占位符,那么也应该有多个值和它对应,如下所示:

例1.36

#!usr/bin/python3
name = "xiaoming"
age = 20
print("the age of %s is %s" % (name, age))

结果:

the age of xiaoming is 20

Python占位符不止只有%s一个,还有其他,如%d表示十进制整数,%f表示浮点数等,这点和其他编程语言类似,尤其注意的是%f可以指定小数点后的位数,如下所示:

例1.37

#!usr/bin/python3
a = 12.345
print("a = %0.2f" % a) # %0.2f表示转换后保留2位小数

结果:

a = 12.35

字符串序列相关方法

字符串是由一堆字符组成的,程序允许通过索引来操作字符,比如获取指定索引处的字符,在Python中,可以正向获取,也可以逆向获取,如下所示:

例1.38

#!usr/bin/python3
a = "www.baidu.com"
print("a[0] = ", a[0]) #正向获取第一个
print("a[-2] = ", a[-2]) #逆向获取倒数第2个

结果:

a[0] =  w
a[-2] =  o

除了获取单个字符,还可以获取一个范围的子串,如下所示:

例1.39

#!usr/bin/python3
a = "www.baidu.com"
print("a[2:5] = ", a[2:5]) #获取索引从2到4,不包含5,左闭右开
print("a[-5:-2] = ", a[-5:-2]) #获取索引从-5到-3,不包含-2,同样左闭右开
print("a[1:-2] = ", a[1:-2]) #获取索引从1到-3,不包含-2,同样左闭右开

结果:

a[2:5] =  w.b
a[-5:-2] =  u.c
a[1:-2] =  ww.baidu.c

上面的用法还允许省略起始索引和结束索引,如果省略起始索引,相当于从开始处截取,如果省略了结束索引,相当于截取到最后,如下所示:

例1.40

#!usr/bin/python3
a = "www.baidu.com"
print("a[:5] = ", a[:5]) #省略起始索引,相当于从索引0开始截取到索引4,不含5,同样左开右闭
print("a[-5:] = ", a[-5:]) #省略结束索引,相当于从索引-5开始,截取到最后

结果:

a[:5] =  www.b
a[-5:] =  u.com

判断是否包含字串

Python与其他编程语言一样,都可以判断一个字符串是否包含某个子串,如下所示:

例1.41

#!usr/bin/python3
a = "www.baidu.com"
b = "www" in a #返回True
c = "haha" in a #返回False
print("b = ", b)
print("c = ", c)

结果:

b =  True
c =  False

获取字符串长度

例1.42

#!usr/bin/python3
a = "www.baidu.com"
print("len = ", len(a))

结果:

len =  13

获取最大最小字符

例1.43

#!usr/bin/python3
a = "www.baidu.com"
print("max = ", max(a))
print("min = ", min(a))

结果:

max =  w
min =  .

大小写相关方法

Python可以对字符串进行大小写的转换,通常有如下几种:

1.title()首字母改为大写

2.lower()将整个字符串改为小写

3.upper()将整个字符串改为大写

例1.44

#!usr/bin/python3
s = "www.BAIdu.com"
print(s.title()) #首字母大写
print(s.lower()) #全部改为小写
print(s.upper()) #全部改为大写

结果:

Www.Baidu.Com
www.baidu.com
WWW.BAIDU.COM

删除空白

Python提供了一些方法来删除空白

1. strip() 删除字符串前后的空白

2. lstrip()删除字符串前面(左边)的空白

3. rstrip()删除字符串后面(右边)的空白

例1.45

#!usr/bin/python3
a = " www.baidu.com "
print(a.strip()) #删除两边的空白
print(a.lstrip()) #删除左边的空白
print(a.rstrip()) #删除右边的空白

结果:

www.baidu.com
www.baidu.com 
 www.baidu.com

查找与替换相关方法

Python的字符串提供了很多查找替换相关的方法,有如下几种:

1. startswith() 判断字符串是否是以指定子串开头

2. endswith() 判断字符串是否以指定子串结尾

3. find() 查找指定子串在字符串中出现的位置,如果没有找到指定子串,则返回-1

4. index() 查找指定子串在字符串中出现的位置,如果没有找到,则引发ValueError错误

5. replace() 使用指定子串替换字符串中的目标子串

例1.46

#!usr/bin/python3
a = "www.baidu.com"
b = "www"
c = "com"
print(a.startswith(b))
print(a.endswith(c))

结果:

True
True

例1.47

#!usr/bin/python3
a = "www.baidu.com"
b = "baidu"
c = "haha"
print(a.find(b)) #打印出下标4
print(a.index(c)) #报错,因为没有找到子串

结果:

例1.48

#!usr/bin/python3
a = "www.baidu.com"
print(a.replace("www", "haha")) #将www替换为haha

 结果:

haha.baidu.com

字符串分割、连接

1. split()将字符串按照指定分隔符分割成多个子串

2. join()将多个字符串拼接成一个,与split()是逆运算

例1.49

#!usr/bin/python3
a = "www-baidu-com"
b = ["haha", "hehe", "heihei"]
print(a.split("-"))
print("-".join(b))

结果:

['www', 'baidu', 'com']
haha-hehe-heihei

1.6.3 数据类型转换

隐式类型转换

在隐式类型转换中,Python 会自动将一种数据类型转换为另一种数据类型,不需要干预。

如下例,int和float相加后,结果变成float

例1.50

a = 123
b = 1.23

c = a + b

print("datatype of a:", type(a))
print("datatype of b:", type(b))

print("Value of c:", c)
print("datatype of c:", type(c))

结果:

datatype of a: <class 'int'>
datatype of b: <class 'float'>
Value of c: 124.23
datatype of c: <class 'float'>

显式类型转换

例1.51

a = int(11)
b = int(2.3)
c = int("34")

print("a=",a)
print("b=",b)
print("c=",c)

结果:

a= 11
b= 2
c= 34

例1.52

x = float(122)
y = float(2.2)
z = float("9")
w = float("4.8")

print(x)
print(y)
print(z)
print(w)

结果:

122.0
2.2
9.0
4.8

例1.53

a = str("sss1")
b = str(32)
c = str(23.3)

print("a = ", a)
print("b = ", b)
print("c = ", c)

结果:

a =  sss1
b =  32
c =  23.3

1.8 import 与 from ... import

import 和from ... import主要用于导入相关模块,python中的第三方类库非常多,都需要导入才行

例1.54

import sys
print("命令行参数是:")
for i in sys.argv:
    print(i)
print("python路径是:",sys.path)
from sys import path  # 导入特定的成员
print('path:', path)  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值