在程序设计过程中,对于不需要改变且不能改变的字面值,称为常量。
变量与常量相反, 变量的值可以改变。Python 中使用变量来收集和记录数据。每个变量用一个变量名来表示,在使用前都必须赋值。语法如下所示:
变量 = 值
如:
Pi = 3.14
变量的命名需要遵循以下规则:
- 只能是一个词。
- 只能包含字母、数字和下划线。
- 不能以数字开头。
- 不要使用Python保留字(关键字)。
- 常用变量的含义命名。
变量名为大小写敏感,意味着Hello和hello是两个完全不同的变量。
Python支持多个变量同时赋值,格式为:
变量1, 变量2 = 值1, 值2
如:
a, b = 1, 2
这个性质还可以用于交换两个变量的值:
a, b = 1, 2
#交换变量a与变量b的值
a, b = b, a
表达式是程序设计语言中最基本的结构,包含 “值”和“运算符”,并且总是可以求值(即归约)为单个值。
下表列出了Python中的所有数学运算符:
运算符 | 功能说明 | 样例 | 结果 |
---|---|---|---|
** | 指数 | 3 ** 3 | 27 |
% | 取模/取余数 | 10 % 3 | 1 |
// | 整除/商数取整 | 17 // 8 | 2 |
/ | 除法 | 22 / 8 | 2.75 |
* | 乘法 | 2 * 5 | 10 |
- | 减法 | 5 - 1 | 4 |
+ | 加法 | 1 + 6 | 7 |
运算的优先级也同数学一样,指数优先级最高,齐次是乘除与取模,最后是加减,同样可以通过括号改变优先级。
除了除了基本赋值运算符号“
=
”外,Python中还有将不同算术运算符与基本赋值运算符号相结合在一起的高级赋值运算符(增强运算符):
运算符 | 样例 | x的值 | 功能说明 |
---|---|---|---|
+= | x = 2 x += 3 |
5 | 加法赋值运算符,等价于x = x + 3 |
-= | x = 6 x -= 4 |
2 | 减法赋值运算符,等价于x = x - 4 |
*= | x = 5 x *= 6 |
30 | 乘法赋值运算符,等价于x = x * 6 |
/= | x = 12 x /= 5 |
2.4 | 除法赋值运算符,等价于x = x / 5 |
//= | x = 12 x //= 5 |
2 | 整除赋值运算符,等价于x = x // 5 |
%= | x = 12 x %= 5 |
2 | 取余数赋值运算符,等价于x = x % 5 |
**= | x = 3 x **= 3 |
27 | 幂运算赋值运算符,等价于x = x ** 3 |
Python中数字类型有4种,分别是整型int、浮点型float、复数型comlex、布尔型bool。下面先为大家介绍整型、浮点型两种类型。
在Python中,整型数用关键字int表示(即英文单词integer的简写),包括:正整数、零和负整数。整型数全部由数字构成,不包括小数部分。
Python中的整型没有取值范围的限制。
Python中的整数有4种进制表示:十进制、二进制、八进制和十六进制。例如:
- 1010, 99, -217
- 0x5d, -0X64 (0x, 0X开头表示16进制数)
- 0b1011, -0B100 (0b, 0B开头表示2进制数)
- 0o13, -0O57 (0o, 0O开头表示8进制数)
在Python中,浮点型用关键字float表示,是由整数、小数点和小数构成的数字。
Python中的小数存在取值范围和精度的限制。
特别大或者特别小的浮点数在 Python 中用科学计数法表示。
科学计数法使用字母“e”或者“E”作为幂的符号,以10为基数。科学计数法含义如下:
< a > e < b > = a ∗ 1 0 b e = a * 10^b <a>e<b>=a∗10b
浮点数的算数运算可能会产生不精确的结果:
print(0.1 + 0.2)
通常来说,两个数字类型的数字进行算术运算时,运算后生成结果为最宽类型:
- 两个整数运算,结果为整数(除法运算“
/
”除外,其运算结果为小数)。- 两个浮点数运算,结果为浮点数。
- 整数和浮点数运算,结果为浮点数。
通过内置的数字类型转换函数可以显式地在数字类型之间进行转换:
int(x)
,将 x 转换为整数,x 可以是浮点数或字符串。float(x)
,将 x 转换为浮点数,x 可以是整数或字符串。
int(x)
会去掉浮点数的小数部分,如果想要四舍五入应使用round(x)
函数
字符串被用来表示文本。在Python中,字符串是用两个双引号
" "
或者单引号' '
括起来的一个或多个字符。当字符串较长时,也会用三引号''' '''
编写多行字符串。
在 Python 中,字符串类型用关键字
str
表示(即英文单词 string 的简写)。
hi = 'Hello World!'
print(hi)
当字符串内容中包含引号时,Python会错误理解字符串的包含范围。
a = 'What's your name?'
这时我们有两种方法解决问题,第一种是改用不同的引号来包裹字符串:
a = "What's your name?"
但是这种方法有局限性,当字符串内容中有所有类型的引号时,这种方法仍不能很好地划清界限,所以我们更常用的一种方法是使用转义字符:
a = 'What\'s your name?'
像
\'
这种反斜杠\
加字符
的形式就叫做转义字符,它们合起来表示一个字符,Python中常用的转义字符有:
转义字符 | 说明 |
---|---|
\n | 换行符,将光标位置移到下一行开头。 |
\r | 回车符,将光标位置移到本行开头。 |
\t | 水平制表符,也即 Tab 键,一般相当于四个空格。 |
\b | 退格(Backspace),将光标位置移到前一列。 |
\\ | 反斜线 |
\’ | 单引号 |
\" | 双引号 |
\ | 在字符串行尾的续行符,即一行未完,转到下一行继续写。 |
如果字符串中包括某个网络路径,网络路径中的反斜杠会被Python认作转义字符,我们需要在每个反斜杠前面加一个反斜杠才行,十分麻烦,Python中有更便捷的方法让字符串中的转义字符失效,即在字符串前加
r
:
print(r'C:\Users\Public\.')
字符串是一个字符序列:字符串最左端位置标记为0,往右边依次递增。字符串中的编号叫做“索引”。Python中的编号是双向的,也可以将最右边记为-1,往左边依此递减。
可以通过索引访问字符串具体的位置:
hi = 'Hello World!'
print(hi[6])
也可以访问一段:
hi = 'Hello World!'
print(hi[6:9])
省略冒号
:
两端的索引表示从头开始或是直到末尾:
hi = 'Hello World!'
print(hi[:5])
print(hi[6:])
还可以按一定间隔访问:
hi = 'Hello World!'
print(hi[::2])
第三个位置的数字被称为步长,我们可以利用这个性质对字符串进行反序:
hi = 'Hello World!'
hi = hi[::-1]
print(hi)
对于字符串类型,可以通过 str 将其他类型的数据转换为字符串。
a = str(100)
print(a)
b = str(2.71828)
print(b)
c = str(88e10)
print(c)
在Python中可以用加号
+
拼接两个字符串:
hi = 'Hello ' + 'World!'
print(hi)
也可以用乘号
*
将一个字符串重复多次:
hi = 'Hello' * 3
print(hi)
拼接与重复可以结合使用,它们满足数学上的运算顺序:
hi = 'Hello' * 3 + 'World' * 3
print(hi)
字符串
format()
方法的基本使用格式是:
'…{<参数序号>}…'.format(<逗号分隔的参数列表>)
在模版字符串’…{}…'中的花括号相对位置(例如{})或指定位置(例如{1})来指定替换目标及要插入的参数:
print('我的名字是{},最喜欢的语言是{}!'.format('小嗷犬','Python'))
print('我的名字是{1},最喜欢的语言是{0}!'.format('Python','小嗷犬'))
在
format()
方法中模板字符串的槽除了包括参数序号,还可以通过冒号:分隔后,包括格式控制信息。此时,槽的内部样式如下:
{<参数序号>: <格式控制标记>}
其中,格式控制标记用来控制参数显示时的格式 。格式控制标记包括:<填充><对齐><宽度>,<.精度><类型>
多个字段,这些字段都是可选的,可以组合使用,这里按照使用方式逐一介绍:
: | <填充> | <对齐> | <宽度> | , | <.精度> | <类型> |
---|---|---|---|---|---|---|
引导 符号 |
用于填充的 单个字符 |
< 左对齐 > 右对齐 ^ 居中对齐 |
槽的设定 输出宽度 |
数字的千位分隔符 只用于整数和浮点数 |
浮点数小数部分的精度 或 字符串的最大输出长度 |
整数类型 b,c,d,o,x,X 浮点数类型 e,E,f,% |
print('{:=<10}{:=>20.2f}'.format("圆周率",3.1415926))
除此之外,格式化字符串也有简单的写法,格式为:
f'…{<变量名>}…'
如:
name = '小嗷犬'
love = 'Python'
print(f'我的名字是{name},最喜欢的语言是{love}!')
len()
函数可以帮助我们获取字符串长度,即字符串中字符的个数:
print(len('Python'))
in
和not in
操作符可以用于第一个字符串(大小写敏感)是否在第二个字符串中,返回一个 bool 类型的值:
print('Hello' in 'Hello World!')
print('hello' in 'Hello World!')
upper()
和lower()
字符串方法返回一个新字符串,其中原字符串的所有字母都被相应地转换为大写或小写。字符串中非字母字符保持不变。
print('Hello World!'.upper())
print('Hello World!'.lower())
Python中有许多判断字符串的isX()方法:
isupper()
,如果字符串含有字母,并且所有字母都是大写,返回True;islower()
,如果字符串含有字母,并且所有字母都是小写,返回True;isalpha()
,如果字符串只包含字母和汉字,并且非空,返回True;isalnum()
,如果字符串只包含字母、汉字和数字,并且非空,返回True;isdecimal()
,如果字符串只包含数字字符,并且非空,返回True;isspace()
,如果字符串只包含空格、制表符和换行,并且非空,返回True;istitle()
,如果字符串仅包含以大写字母开头、后面都是小写字母的单词,返回True。print('Hello World!'.isupper())
print('hello world!'.islower())
print('hello1234'.isalpha())
print('你好'.isalnum())
print('hello1234'.isalnum())
print(' \t'.isspace())
print('Hello World'.istitle())
startswith()
和endswith()
,如果它们所调用的字符串以该方法传入的字符串开始或结束,返回True。否则,返回False。经常被用于判断网址链接或是文件类型后缀:
print('https://github.com'.startswith('http://'))
print('hello.py'.endswith('.mp4'))
join()
方法用于将一个字符串列表用特定的字符串连接起来,返回连接后的字符串,基本使用格式:
<链接字符串>.join(<字符串列表>)
如:
s = ','.join(['一二三', '三二一', '一二三四五六七!'])
print(s)
split()
则完全相反,它会按照指定的字符串来将原本的字符串切割成字符串列表,返回生成的列表,基本使用格式:
<字符串>.split(<分割字符串>)
如:
l = '一二三,三二一,一二三四五六七!'.split(',')
print(l)
rjust()
和ljust()
字符串方法返回调用它们的字符串的填充版本,通过插入空格来对齐文本。这两个方法的第一个参数是一个整数长度,用于对齐字符串,第二个可选参数将指定一个填充字符,取代空格字符。
center()
字符串方法则是让文本居中,而不是左对齐或右对齐。
print('Hello'.ljust(20, '+'))
print('World'.rjust(20, '-'))
print('Python'.center(20, '='))
有时候你希望删除字符串左边、右边或两边的空白字符(空格、制表符和换行符),可以使用这些方法:
strip()
方法将返回一个新的字符串,它的开头或末尾都没有空白字符。lstrip()
方法将相应删除左边的空白字符。rstrip()
方法将相应删除右边的空白字符。
s = ' Python '
print(s)
print('=' + s + '=')
print('=' + s.strip() + '=')
print('=' + s.lstrip() + '=')
print('=' + s.rstrip() + '=')
这三个方法还可以传入一个字符串参数,指定要删除的字符:
s = '1234 Python 4321'
print(s)
print('=' + s + '=')
print('=' + s.strip('12') + '=')
print('=' + s.lstrip('124') + '=')
print('=' + s.rstrip('134') + '=')
# 传入方法的字符串中,字符的顺序不重要,即:
# strip('123') 等价于 strip('213')、strip('231')
replace()
方法用于将字符串中的所有指定字符串替换为另一个指定的字符串,返回替换后的字符串:
s = '一二三,三二一,一二三四五六七!'.replace('一二三', '123')
print(s)
input()
函数等待用户在键盘上输入一些文本,并按下回车键。返回一个字符串,即用户输入的文本:
num = input()
print(num * 3)
函数可以传入一个字符串参数,作为输入的提示语:
num = float(input('请输入一个数字:'))
print(num * 3)
print()
函数的作用是将输入的参数打印出来,默认打印到屏幕上:
print('hello')
函数可以同时传入多个字符串参数,它们之间默认用空格隔开打印:
print('hello', 'world', '!')
传入关键字参数sep可以改变默认的间隔字符:
print('hello', 'world', '!', sep='+')
函数打印结尾默认会添加换行符,通过传入关键字参数end改变结尾字符:
print('hello', end='+')
print('world', end='')
print('!', end = '3.14')
Python 中的布尔类型只有两种值:
True
和False
。
bool类型是数字类型,在参与数学计算时会分别转型为1,0:
print(True + False)
Python中3个布尔操作符(
and
、or
和not
)被用于进行逻辑运算,分别代表与、或、非三种逻辑运算:
a | b | a and b | a or b | not a |
---|---|---|---|---|
False | False | False | False | True |
False | True | False | True | True |
True | False | False | True | False |
True | True | True | True | False |
运算优先级由高到低为:not,and,or。
print(False or not False and True)
bool类型值通常来自于关系运算的结果,下面是Python中包含的各种关系比较的操作符:
运算符 | 样例 | 结果 | 功能说明 |
---|---|---|---|
< | 5 < 4 | False | 小于 |
> | 5 > 4 | True | 大于 |
<= | 5 <= 4 | False | 小于等于 |
>= | 5 >= 3 | True | 大于等于 |
== | 5 == 4 | False | 等于 |
!= | 5 != 4 | True | 不等于 |
Python表达式支持多个比较运算,这种表达式和数学中的表达方式非常接近。
x = 4
print(3 < x < 5)
# !!! C语言与Java中不能这么写 !!!
Python中共有75个内置函数,这些是Python自带的函数,在需要使用时可以直接调用。
下表列出了一些常用的Python内置函数:
函数名称 | 代码示例 | 结果 | 功能描述 |
---|---|---|---|
abs | x = -5 abs(x) |
5 | 求绝对值 |
float | float(‘8.8’) | 8.8 | 将整数或者字符串转换为浮点数 |
int | int(8.8) | 8 | 将浮点数截断小数部分后转换为整数或者将只包含数字的字符串转换化为整数 |
len | len(‘你好世界’) | 4 | 获得字符串、列表、元组、集合或字典的长度(即元素个数) |
max | max(8,-8.8,3,32,24.5) | 32 | 获得一组数据中最大值 |
min | min(8,-8.8,3,32,24.5) | -8.8 | 获得一组数据中最小值 |
range | list(range(0,6,3)) | [0,3] | 产生一个可迭代对象,在此列中从0开始到6之前(即不包括6),以步长为3产生可迭代对象后利用list函数转换成列表 |
sum | sum([8,-8.8,3,32,24.5]) | 58.7 | 获得一组数据的和,在此列中获得列表[10,3, -10.8,58]中的数据之和 |
模块是第三方专门为了解决某些特定问题而编写的工具。Python本身自带了一些常用的模块,例如,math模块中具有较为复杂的求解正弦、余弦和平方根等运算,这些模块不需要安装,但是在使用前需要导入。
Windows 下安装非标准库,需要在命令提示符中输入:
pip install 库名
Linux 和 MacOS 中则是在终端输入上述命令。
导入模块使用import关键字,Python中导入模块有不同的方法:
导入整个模块:
import math
math.sqrt(64)
导入整个模块的同时给该模块取个较短的别名:
import numpy as np
np.sqrt(64)
导入某个模块子模块的同时给该子模块取个较短的别名:
import matplotlib.pyplot as plt
导入模块中指定函数:
from math import sqrt, exp
sqrt(64)
导入某个模块的子模块中指定函数:
from matplotlib.pyplot import plot