print是python内置的函数,可以使用+-*/()等运算符进行算术运算,先乘除后加减;运算符和数字之间可以没有空格,也可以有多个空格,但是一般习惯一个空格。
python
print(1+10*3)
print(220*6-1173)
print(2 / 3)

注意:C语言中,2/3结果为0(小数部分被截断);但是在python中得到的结果则是一个小数(例如上图所示),更符合日常使用感官。
下图为Python的内置函数:

1.变量和类型
什么是变量
有时候,我们需要进行计算一些复杂数据,需要把计算的中间结果保存起来,这个时候就需要用到变量。
示例
给定四个分数,65.5,89.0,12.9,32.2,求这四个分数的方差?
解题过程为:
python
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg) ** 2
result = total / 3
print(result)
2.变量语法
2.1定义变量
python
a = 10
创建变量的语句非常简单,其中
- a为变量名,当我们创建很多个变量的时候,就可以用名字来进行区分
- =为赋值运算符,表示把=右侧的数据放到=左侧的空间中。
注意:变量的名字要遵守一定规则
- 变量名由数字字母下划线构成;
- 数字不能开头;
- 变量名不能和"关键字"重复;
- 变量名大小写敏感;
软性规则(建议遵守)
- 变量名使用有描述性的单词来表示,尽量表达出变量的作用;
- 一个变量名可以由多个单词构成,长一点没有关系,但是含义要清晰;
- 当变量名包含多个单词的时候,建议使用"驼峰命名法"。形如totalCount这种,除了首单词外,剩余单词首字母大写。
数学中,变量通常使用x,y,z这种简单的英文字母或拉丁字母表示。但在编程中不建议如此使用。
2.2使用变量
读取变量的值
python
a = 10
print(a)
修改变量的值
python
a = 22
print(a)
注意:在python中,修改变量也是使用=运算符,看起来和定义变量没有明显区别。
也可以用一个变量赋值给另一个变量
python
a = 10
b = 20
a = b
print(a)
print(b)
3.变量类型
变量里面存储的不仅仅是数字,还可以存储其他种类的数据。为了区分不同种类的类型,我们引入"类型"这样的概念。和C++/Java等语言不同,python变量的类型不需要显式指定,而是在赋值的时候确定的。
3.1整数
python
a = 10
print(type(a))

注意:和C++/Java等语言不同,Python的小数只有float一种类型,没有double类型。但是实际上Python的float就相当于C++/Java的double,表示双精度浮点数。
3.2字符串
python
a = 'hello'
print(a)
print(type(a))

使用' '或" "引起的,称为字符串。可以用来表示文本。
注意:在python中,单引号构成的字符串和双引号构成的字符串,没有区别。'hello'和"hello"是完全等价的。
可以使用len函数来获取字符串的长度
python
a = 'hello'
print(len(a))
可以使用+针对两个字符串进行拼接
python
a = 'hello'
b = 'opencv'
print(a+b)
此处是两个字符串相加,不能拿字符串和整数/浮点数相加。
3.3布尔
布尔类型是一个特殊的类型,取值只有两种,True(真)/False(假)
python
a = True
print(type(a))
b = False
print(type(b))

Python中还有list,tuple,dict,自定义类型等,后续介绍。
为什么需要类型
- 类型决定了数据在内存中占据多大空间
- 类型其实约定了能对这个变量做什么样的操作
3.4动态类型特性
在python中,一个变量是什么类型,是可以在"程序运行"过程中发生变化的。这个特性称为"动态类型"。
python
a = 10
print(type(a))
a = 'hello'
print(type(a))

根据上图的运行结果可知,变量a的类型刚开始是int,后面变成了str。C++/Java这样的语言则不允许这样的操作,一个变量定义后类型就是固定的了。这种特性则称为"静态类型"。
动态类型特性是一把双刃剑
- 对于中小型程序,可以大大地节约代码量;
- 对于大型程序,则提高了模块之间的交互成本。
4.注释
4.1什么是注释
注释是一种特殊的代码,它不会影响到程序的执行,但是能够起到解释说明的作用,能够帮助程序员理解程序代码的执行逻辑。
4.2注释的语法
(1)注释行
python
# 这是一行注释
(2)文档字符串
使用三引号引起来的称为"文档字符串",也可以视为一种注释。
-
可以包含多行内容;
-
一般放在文件/函数/类的开头;
-
(```)或(""")均可
python
```
这是文档字符串
这是文档字符串
```
4.3注释规范
- 内容准确:注释内容要和代码一致,匹配,并在代码修改时及时更新;
- 篇幅合理:注释既不应该太精简,也不应该长篇大论;
- 使用中文:一般中国公司都要求使用中文注释,外企另当别论;
5.输入输出
和用户交互
程序需要和用户进行交互
- 用户把信息传递给程序的过程,称为"输入";
- 程序把结果展示给用户的过程,称为"输出"。
输入输出的最基本的方法就是控制台。用户通过控制台输入一些字符串,程序再通过控制台打印出一些字符串。
5.1通过控制台输出
python使用print函数输出到控制台
python
print('hello opencv')
不仅能输出一个字符串,还可以输出一个其他类型的变量
python
a = 10
print(a)
b = True
print(b)

但这样的结果不是我们想要的,我们想要的是输出num = 10:
python
num = 10
print(f'num = {num}')

注意:
- 使用f作为前缀的字符串,称为f-string
- 里面可以使用{}来内嵌一个其他的变量/表达式;
5.2通过控制台输入
python使用input函数,从控制台读取用户的输入
python
num = 0
num = input('请输入一个整数:')
print(f'你输入的整数是 {num}')

注意:
- input的参数相当于一个"提示信息",也可以没有;
- input的返回值就是用户输入的内容,是字符串类型。
python
a = input('请输入第一个整数:')
b = input('请输入第二个整数:')
print(f'a + b = {a + b}')

上图运行结果可知,此处的结果是字符串拼接,不是算术运算。若想进行算术运算,需要先转换类型。
python
a = input('请输入第一个整数:')
b = input('请输入第二个整数:')
a = int(a)
b = int(b)
print(f'a + b = {a + b}')

通过int()把变量转换成了int类型,这时的结果才正确。
6.运算符
6.1算术运算符
像+ - * / % ** //
这种进行算术运算的运算符,称为算术运算符。
- /中不能用0作为除数,否则会抛异常。
- 整数/整数结果可能是小数,而不会截断。
- %不是"百分数",而是求余数。
- **是求乘方,不光能算整数次方,还能算小数次方。
- //是取整数除法(也叫地板除),整数除以整数,结果还是整数(舍弃小数部分,向下取整,不是四舍五入)。
6.2关系运算符
像< <= > >= == !=
这一系列的运算符称为关系运算符,它们是在比较操作数之间的关系。
其中:
<=
是"小于等于">=
是"大于等于"==
是"等于"!=
是"不等于"
(1)如果关系符合,则表达式返回True;如果关系不符合,则表达式返回False
python
a = 10
b = 20
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

(2)关系运算符不光针对整数/浮点数进行比较,还能针对字符串进行比较;
python
a = 'hello'
b = 'world'
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

注意:
- 直接使用==或者!=即可对字符串内容判定相等;
- 字符串比较大小,规则是"字典序";
(3)对于浮点数来说,不要使用==判定相等
浮点数在计算机中的表示并不精确,在计算的过程中容易出现误差。
6.3逻辑运算符
像and or not
这一系列的运算符称为逻辑运算符。
python
a = 10
b = 20
c = 30
print(a < b and b < c)
print(a < b and b > c)
print(a > b or b > c)
print(a < b or b > c)
print(not a < b)
print(not a > b)

关于短路求值
和其他编程语言类似,python也存在短路求值的规则。
- 对于and,如果左侧表达式为False,则整体一定为False,右侧表达式不再执行;
- 对于or,如果左侧表达式为True,则整体一定为True,右侧表达式不再执行。
python
print(10 > 20 and 10 / 0 == 1)
print(10 < 20 or 10 / 0 == 1)

从上图运行结果来看,代码没有抛出异常,说明右侧的除以0操作没有真正执行。
6.4赋值运算符
(1)=
的使用
=
表示赋值;
=
除了基本的用法外,还可以同时针对多个变量进行赋值;
链式赋值
python
a = b = 10
多元赋值
python
a,b = 10,20
(2)复合赋值运算符
python还有一些符合赋值运算符,例如+= -= *= /= %=
。
其中a += 1
等价于a =a + 1
。其他复合赋值运算符也是同理
python
a = 10
a = a + 1
print(a)
b = 10
b += 1
print(b)