Python语言基础

本篇主要学习Python的基本数据类型(整型、浮点型、复数型、字符串类型)和常用模块和内置函数(mathcmathrandom)。

基本数据类型

Python内置的数据类型包括数值型、字符串型、布尔型等基本(简单)数据类型以及列表、元组、字典、集合等复杂数据类型。现在关注基本数据类型,复杂数据类型后面一一学习。

整型

Python 2.x中的整型包括intlong两种,长整型无需考虑溢出的问题。到了3.x,统一采用了长整型。

Python 3.x中整型数据的大小可以是任意大,无需考虑溢出。它的原理是将整型的数值用int数组来存储,当要溢出的时候就增加数组的空间。正是因为不用考虑数值的溢出,使用Python对大数据进行计算是很方便的。

整型可以表示为十进制、二进制、八进制和十六进制:

  1. 十进制:默认使用
  2. 二进制:前面加上0b或0B
  3. 八进制:前面加上0o或0O
  4. 十六进制:前面加上0x或0X

Untitled

浮点型

浮点型表示的是一个实数,它有小数形式和指数形式两种表示方式:

  1. 小数形式

    包括整数和小数部分,用小数点分隔。如果小数点后面没有数,那么默认小数部分为0,如34.=34.0

  2. 指数形式

    格式为[数值部分]e/E[指数部分]。需要注意数值部分和指数部分必须都要有,且指数部分必须为整数。如e4、4e、3.4e3.5这样的表示都是非法的。

注意Python 3.x默认提供的浮点数总共有17位有效数字的精度。超过的话就会减去低位。

Untitled

此外,由于计算机需要将数据先转化为二进制再进行计算。而十进制小数转化为二进制小数时可能出现无限小数(乘2取整),且Python中浮点数精度有限,所以精度以外的数值都会被舍弃,所以最后结果可能接近预期结果但不相等。如果某位的后面全是0,那么就不会显示后面的0。

为什么0.1+0.2不等于0.3?原来编程语言是这么算的……

Untitled

Untitled

复数型

工程上复数的计算用得很多,而Python本身就提供复数类型,所以Python的使用领域很广。

复数的格式为a+bj/J。a为实部,b为虚部,可以通过.real.imag分别获取到a和b。获取到的a和b都是浮点型。

Untitled

字符串类型

Python可以使用单引号'或双引号"来定义一个行内字符串,使用三个引号'''"""来定义一个多行字符串(文本块)。也可以在字符串中使用转移字符。

可以对字符串可以进行的操作有:

  1. 按照下标访问对应位置的字符
  2. 给定下标范围对字符串进行切片
  3. 使用eval()函数删去字符串最外面那层引号

    Untitled

  4. 使用len()函数获取字符串的长度

Untitled

不能对字符串进行的操作:

  • 不能修改字符串的某个字符,只能重新赋值。这是Python的语言特性,重新赋值后原来的字符串就会被解释器自动进行垃圾回收。

布尔类型

包括TrueFalse。和C++不同,它们的首字母要大写。

需要注意浮点数判等的方法:

Untitled


常用模块函数

math模块

  1. math.e表示自然常数e
  2. math.pi表示圆周率pi
  3. fabs(x)返回x的绝对值(浮点数)
  4. sqrt(x)返回x的平方根(浮点数)
  5. pow(x,y)返回x的y次方
    1. exp(x)返回e的x次方
  6. log(x,y)返回 $log_yx$的结果
    1. log(x)返回 $lnx$的结果
    2. log10(x)返回 $logx$的结果
  7. ceil(x)返回x向上取整的结果
  8. floor(x)返回x向下取整的结果
  9. degrees(x)将x(弧度)转化为角度
  10. radians(x)将x(角度)转化为弧度
  11. sin(x)cos(x)tan(x)的x为弧度
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
28
29
>>> import math
>>> math.e
2.718281828459045
>>> math.pi
3.141592653589793
>>> math.fabs(-4)
4.0
>>> math.sqrt(2)
1.4142135623730951
>>> math.pow(2,3)
8.0
>>> math.exp(2)
7.38905609893065
>>> math.log(100,10)
2.0
>>> math.log10(100)
2.0
>>> math.log(math.exp(2))
2.0
>>> math.ceil(0.5)
1
>>> math.floor(0.5)
0
>>> math.degrees(math.pi)
180.0
>>> math.radians(180)
3.141592653589793
>>> math.radians(180)/math.pi
1.0

camth模块

它的函数和math模块基本一致,区别是它由于复数运算。

random模块

  1. 使用random.seed(x)设置生成随机数的种子。它是一系列随机操作的依据。
  2. 使用random.choice(array)按照种子从数组的元素中选择一个元素。
  3. 使用random.sample(array, k)按照种子从array中挑选k个元素。
  4. 使用random.shuffle(array)按照种子将array中的元素随机排序。
  5. 使用random.random()随机生成[0,1)的一个实数。
  6. 使用random.uniform(a, b)随机生成[a, b)范围内的一个实数。
  7. 使用random.randint(a, b)随机生成[a, b]范围内的一个整数。

Untitled


常用内置函数

当我们使用type()查看类型时,就会发现区别。

Untitled

这就类似于shell中的命令包括内置命令、可执行程序和shell脚本一样,Python中的函数也有内置函数和模块函数。模块又有内置模块和第三方模块,不要搞混了!常用的内置函数如下:

range()函数

一个典型的使用range的场景是在for循环中:

1
2
for i in range(0, 6):
print(i)

range的基本格式为range([start],[end],[step]),说明如下:

  1. range返回的是一个可迭代对象
  2. 相当于从start开始,以step为公差,一直到end的等差数列。范围是左闭右开[start, end)
  3. 如果要逆序,则将step设为负值即可。
  4. start缺省默认为0,step缺省默认为1。

python常用函数—Range函数使用方法(3.X版本)【21年10月更新】

数值运算函数

这里的部分函数和math模块的函数很相似。都能用的话还是尽可能使用内置函数:

Untitled


基本运算符

算数运算符

包括+、-、*、/、//(整除)、%、**(乘方)

  1. //返回商的整数部分,与%配套。如果//的一个操作数是浮点数,那么结果返回的也是浮点数。
  2. x**y的结果和pow(x, y)一样。乘方运算符的优先级高于乘除。

位运算

包括&、|、~、^、>>、<<。和C++中的位运算符一样。

强制类型转换

格式都是 类型(操作数) 的形式。

  1. int(x)将x转化为整型——截尾取整或向零取整:int(-1.2)=-1
  2. float(x)
  3. complex(x)将x转化为复数,实部为x,虚部为0。
  4. complex(x, y),实部为x,虚部为y。