目录
常量和表达式
变量
变量的语法
变量的类型
动态类型特性
注释的使用
输入和输出
通过控制台输出
通过控制台输入
运算符
算术运算符
关系运算符
逻辑运算符
赋值运算符
常量和表达式
print是Python中的一个内置函数,使用print函数可以将数据打印到控制台上
上述的代码运行后会输出到控制台上:
在C语言中,整数 除以 整数 结果还是整数,并且会把小数部分直接舍弃,而 Python 中并不遵守这种规则
观察上述结果,1 + 2 / 3 得到的结果是 1.6666666666666665,而不是1,就可以验证
-
Python中浮点数在内存中的存储遵循IEEE754标准,这套标准在表示浮点数时可能会存在微小的误差,这就可以解释为什么是 665而不是其他数字,是标准规定的微小误差
-
形如 1+2+3 这样的算式称为表达式,表达式的运算结果称为表达式的返回值,而像1,2,3这样的数字称为字面值常量
变量
有的时候, 我们需要进行的计算可能更复杂一些,需要把一些计算的中间结果保存起来,这个时候就需要用到 变量
变量的语法
定义变量
定义变量的语句如下:
a = 1
变量的命名规则
硬性规则(必须遵守):
- 变量名由数字、字母、下划线构成
- 变量名不能以数字开头
- 变量名不能和Python的 关键字 重复
- 变量名大小写敏感,比如num和Num是两个不同的变量名
软性规则(建议遵守):
- 变量名使用有描述性的单词来表示,尽量表达出变量的作用
- 当一个单词无法表述清楚变量的作用时,可以用多个单词进行命名,含义要清晰
- 当变量名包含多个单词时,建议使用驼峰命名法,例如 personInfo
使用变量
读取变量的值:
// 结果为10
a = 10
print(a)
修改变量的值:
// 给变量a重新赋值,结果为20
a = 10
a = 20
print(a)
变量的类型
与C/C++等其他语言不同的是,Python中变量的类型不需要在定义的时候显式声明,而是根据初始化的值的类型来进行确定的
整数
整数的类型为int:
结果为:
- type和print类似,也是Python中的一个内置函数,可以使用type函数来查看一个变量的类型
- 与C++/Java等其他语言不同的是,Python中int类型的变量能够表示的数据范围是没有上限的,只要内存足够大,理论上就可以表示无限大的数据,是动态扩容的
浮点数
浮点数(小数)的类型为float:
结果为:
与C++/Java等其他语言不同的是,Python中的浮点数只有float一种类型,没有double类型,实际上Python中的float就相当于C/C++等语言中的double类型,表示双精度浮点数
字符串
字符串的类型为str:
结果为:
字符串可以是用“单引号”、“双引号”、“三单引号”或者“三双引号”引起来的一串字符
那么为什么会引入这几种引号,有一个不就够了吗
因为可能某些字符串中本身是有引号的,例如:
此时就会报错,因为编译器会认为在 is 后面的那个 双引号 就是字符串的结尾了,后面的字符就是非法的
所以在这种情况下, 就可以使用 单引号 引起来字符串
运行结果:
也可以使用len函数来获取字符串的长度:
结果为:
可以使用+对两个字符串进行拼接,拼接后的字符串不会对原字符串产生影响:
结果为:
需要注意的是:
不能将字符串和数字混合相加
布尔
表示真假的类型为bool:
结果为:
布尔类型的取值只有两种,True(真) 和 False(假)
注意与 C++/Java 不同的是,这里的首字母是大写的
其余像list、tuple、dict、自定义类型等等,我们后续再做介绍
动态类型特性
- 动态类型: 在运行时,解释器基于变量值的类型决定变量的类型
- 静态类型: 在编译时,编译器基于所声明的数据类型确定变量的类型
C++/Java等大多数语言都是静态类型语言,在编写静态类型语言的代码时,必须声明变量的数据类型
而Python则是一种动态类型语言, 因此在编写Python代码时不用声明变量的数据类型
程序运行过程中,变量的类型可能会发生改变:
结果为:
一个编程语言是否是动态类型,只是取决于运行时,类型是否发生改变,不取决于变量定义的时候是否声明类型
相比之下,静态类型的语言还是更好一些的,因为动态类型特性非常灵活,灵活就意味着更容易出错,尤其是在大型的多人协作的开发中,更推荐使用静态类型的语言
注释的使用
注释行
使用 #开头 的行都是注释,注释可以单独的写在一行,也可以写在代码的右侧
文档字符串
使用三引号引起来的称为“文档字符串”,也可以视为是一种注释:
注释大家都比较了解了,这里就不过多涉及了
输入和输出
通过控制台输出
使用print函数可以将任意类型的变量输出到控制台:
控制台输出结果:
如果想要混合输出不同类型的变量,那么就需要对输出的字符串进行格式化输出
Python中采用的是 f-string 的方式,f-string里面可以使用 {} 来内嵌一个其他的变量或表达式:
结果为:
通过控制台输入
使用input函数可以从控制台读取用户输入的数据:
结果为:
需要注意:
input的返回值就是用户输入的内容,是字符串类型(str)
由于input函数的返回值是字符串类型,因此下面代码实际进行的是字符串的拼接操作:
结果为:
如果不想拼接,就只是想进行算术运算,那么需要在运算前对读取到的值进行类型转换:
int () 的方式进行类型转换
此时的结果为:
类似的,也可以通过 float() 、bool() 、str() 等将变量转换成对应的类型
运算符
算术运算符
Python 中的算术运算符,包括 +
、-
、*
、/、%
、**
(幂)、//(地板除)
计算顺序是:先算乘方,然后是乘除,最后算加减,如果运算过程中想修改默认的运算顺序,就需要加上 ()
① 0 不能做除数,否则程序会抛异常
② 两个整数相除后得到的是一个浮点数:
结果为:
证明了两个整数相除后得到的是一个浮点数
③ **
可以求一个数的整数次幂,也可以求一个数的小数次幂
结果为:
④ // 是地板除,整数除以整数得到的结果还是整数(针对计算的结果,向下取整)
也就是和 C++/Java 中的除法计算方式类似
结果为:
关系运算符
关系运算符就是在比较两个操作数之间的 大小、相等 这样的关系
Python中的关系运算符,包括 < 、<= 、> 、>= 、== 、!=
关系运算符对应的表达式值是 布尔类型,表达式符合要求为真(True),不符合要求为假(False)
结果为:
判断两个字符串是否相等
在Python中使用 == 或 != ,即可直接判断两个字符串的内容是否相等:
结果为:
判断两个浮点数是否相等
不能直接使用 ==
来判断两个浮点数是否相等,因为浮点数在内存中的存储和表示,是可能存在误差的
结果为:
根据上面的 0.1 + 0.2 的结果可以得知, 0.1 + 0.2 != 0.3,浮点数是有误差的
正确的比较方式是:判定这两个浮点数的差值是否小于允许的误差范围:
结果为:
需要注意:
Python 中支持这种连续小于的写法,C++/Java 中是不支持这种写法的
逻辑运算符
Python中的逻辑运算符,包括 and、or、not
and:并且,两侧操作数均为True,则最终结果为True,否则为False
or:或者,两侧操作数均为False,则最终结果为False,否则为True
not:逻辑取反,操作数本身为True,则返回False,本身为False,则返回True
因为 Python 中支持连续的小于比较,所以 a < b and b < c 是等价于 a < b < c 的
Python中也存在短路求值规则:
对于and,如果左侧表达式为False,则整体一定为False,因此右侧表达式不再执行
对于or,如果左侧表达式为True,则整体一定为True,因此右侧表达式不再执行
如下所示:
此时 a > b 是不成立的,所以直接返回False, 不执行右侧表达式了:
如果将 a > b 改为 a < b,就会执行后面的 10 / 0,会有异常:
赋值运算符
Python中的赋值运算符,包括=、+=、-=、*=、/=、%=、**=、//=、&=、|=、^=、<<=、>>=
使用 = 同时对多个变量赋值
结果为:
多元赋值:
结果为:
多元赋值可以完成交换变量的值:
结果为:
复合赋值运算符
像 += 、-=等等都是复合赋值运算符,例如:
结果为:
a += 1 和 a = a + 1 是一个含义,其他的复合赋值运算符以此类推
注意:
Python不支持C++中的 ++ / -- 操作,想要进行类似的操作只能 +=1 / -= 1,
Python的入门基础到此结束