Python里有很多运算符(operator),这节就让我们来详细学一学。

注意:本文没有特别说明的地方,只考虑bool、int、float三种类型。例如“两边操作数类型相同时,得到的结果为操作数类型”这句话只需要考虑上述三种类型就可以了。

算术运算符

 

加运算符(plus,+)

+运算符将两个数相加。例如1+2等于3,1.23+4.56等于5.79。

+运算符用于一个数前时等于它本身。例如+(-2)等于-2,+2等于2。

减运算符(minus,-)

-运算符将两个数相减。例如4-1等于3,1.23-4.56等于-3.33。

-运算符也可以计算一个数的相反数。例如-(-7)等于7。

乘运算符(multiply ... by ...,*)

*运算符将两个数相乘。例如12*7等于84,4.5*0.9等于4.05。

除运算符(divided by,/)

/运算符将两个数相除。例如16/4等于4.0,4/3等于1.33333...。注意/得到的一定是float类型。如果除数为0,会产生ZeroDivisionError。

地板除运算符(floor division,//)

//运算符将两个数相除,得到答案的整数部分。例如4//3等于1,4.0//3.0等于1.0。如果除数为0,会产生ZeroDivisionError。

取余运算符(modulo,%)

%运算符求两个数相除的余数,也叫。例如4%3等于1,4.0%3.0等于1.0。如果除数为0,会产生ZeroDivisionError。

乘方运算符(power,**)

**运算符用来计算乘方。a ** b得到a的b次方。例如,2 ** 7等于128,4 ** -2等于0.0625。

在除了/以外的运算符中,两边操作数类型相同时,得到的结果为操作数类型;对于/运算符,得到的结果一定为float类型。

比较运算符

大于运算符(greater than,>)

大于运算符用来判断一个数是否大于另一个数。结果为bool,如果大于返回True,否则返回False。例如1>0为True,1>2为False。

小于运算符(lesser than,<)

小于运算符用来判断一个数是否小于另一个数。结果为bool,如果小于返回True,否则返回False。例如0<1为True,1<0为False。

等于运算符(equal to,==)

等于运算符用来判断一个数是否等于另一个数。结果为bool,如果等于返回True,否则返回False。例如1+1==2为True,1+1==3为False。

注意区分==和=,后者是赋值号。a = b表示将b赋给a,a == b表示a与b是否相等。请勿混淆。

不等于运算符(not equal to,!=)

不等于运算符用来判断一个数是否不等于另一个数。结果为bool,如果不等于返回True,否则返回False。例如1+1!=3为True,1+1!=2为False。

大于等于运算符(greater than or equal to,>=)

大于等于运算符用来判断一个数是否大于或等于另一个数。结果为bool,如果大于或等于返回True,否则返回False。例如1>=1为True,0>=1为False。

小于等于运算符(lesser than or equal to,<=)

小于等于运算符用来判断一个数是否小于或等于另一个数。结果为bool,如果小于或等于返回True,否则返回False。例如1<=1为True,1<=0为False。

逻辑运算符

and运算符

and运算符(一般)用于两个布尔值之间,如果两边都为True,则返回True,否则返回False。例如True and True、1 > 0 and 1 > -1为True,True and False、False and False、1 == 0 and 1 > 0为False。

and也可以用于其它类型,以后会有更深入的介绍。

or运算符

or运算符(一般)用于两个布尔值之间,如果两边有任意一个为True,则返回True,否则返回False。例如1 > 0 or 1 > 1、True or True、True or False为True,1 == 2 or 1 == 3为False。

or也可以用于其它类型,以后会有更深入的介绍。

not运算符

not运算符(一般)用于一个布尔值之前,如果该值为True,则返回False,否则返回True。例如not True等于False,not 1 == 0为True。

not也可以用于其它类型,以后会有更深入的介绍。

赋值运算符

=运算符

=运算符将右边的值赋给左边的变量。例如:

>>> a = 0
>>> a
0
>>> a = 10
>>> a
10
>>> a = True
>>> a
True

+=运算符

+=运算符将左边的变量加上右边的值。a += b是a = a + b的缩略形式。

-=运算符

-=运算符将左边的变量减去右边的值。a -= b是a = a - b的缩略形式。

*=运算符

*=运算符将左边的变量乘以右边的值。a *= b是a = a * b的缩略形式。

/=运算符

/=运算符将左边的变量除以右边的值。a /= b是a = a / b的缩略形式。

//=运算符

//=运算符将左边的变量地板除右边的值。a //= b是a = a // b的缩略形式。

%=运算符

%=运算符将左边的变量模右边的值。a %= b是a = a % b的缩略形式。

**=运算符

**=运算符计算左边变量的右边次方(听起来很奇怪)并赋给左边变量。a **= b是a = a ** b的缩略形式。

类型转换

转换规则

bool->int

True为1,False为0。

bool->float

True为1.0,False为0.0。

int->bool

不为0转换为True,为0转换为False。

int->float

值不变,但是类型改变。例如1变成1.0,4变成4.0。

float->bool

不为0.0转换为True,为0.0转换为False。

float->int

向0取整。如果值为整数(例如1.0、2.0),不变;如果值为整数,取小于该数的最大整数;如果值为小数,取大于该数的最小整数。整数例如1.5->1,-1.5->-1。

其实还有更多的转换规则,更多的以后再讨论。

隐式类型转换(implicit type cast)

当一个有两个操作数的运算符两边操作数类型不同时,就会出现隐式类型转换。限于目前读者的Python水平,只讲关于+、-、*、/、//、%、**这7个运算符的类型转换。

在Python中,类型的级别是不同的,从低到高依次是bool、int、float(这不代表没有其它类型,还记得吗,文章前面说只考虑这三种类型)。

两边都是bool的情况

将两边的操作数都转成int类型。对于除/以外的运算符,结果为int类型。对于/运算符,结果为float类型。

其它情况

将拥有低级类型的操作数转换成高级类型。对于除/以外的运算符,结果为高级类型。对于/运算符,结果为float类型。

例如:

>>> True + False
1
>>> True - 2
-1
>>> 1.5 - True
0.5
>>> 1.2 * 7
8.4
>>> 1.7 - 4
-2.3

显式类型转换(explicit type cast)

上面说的是隐式类型转换,Python也允许显式类型转换。显式类型转换指用户明确指出要进行类型转换。

显式类型转换的格式为type(value),type为目标类型,value为要转换的值。例如int(2.5)表示将2.5转换成int类型,即2;float(2)表示将2转换成float类型,即2.0。

注意,对于变量,使用显式类型转换并不会改变其类型:

>>> a = 10.5
>>> int(a)
10
>>> a
10.5

虽然中间输出了a转换成int之后的值,但这只是个零时的值,不会改变a的类型。只有赋值才可以改变:

>>> a = int(a)
>>> a
10

注意

有个地方要注意:在类型转换中,只会暂时转换变量的值的类型,不会改变变量类型!只有修改变量值才会出现类型上的变化。例如:

>>> a = 10
>>> a + 10.0 # a is still int!
20.0
>>> a += 10.0   # a is float!
>>> a
20.0

ToDo

以后会补充优先级概念。如果不在cnblogs上发现本文,请访问http://www.cnblogs.com/collectionne/p/6853051.html查看完整文章(也可能还没补充)。

小结

1. Python的算术运算符有+、-、*、/、//、%、**。

2. Python的比较运算符有==、>、<、>=、<=。

3. Python的逻辑运算符有and、or、not。

4. Python的赋值运算符有+=、-=、*=、/=、//=、%=、**=。

5. 接受两个操作数的运算符的操作数类型不一致时,会有隐式类型转换。

6. 显式类型转换格式:type(value)。

Python教程(2.3)——运算符和类型转换的更多相关文章

  1. 写给.NET开发者的Python教程(三):运算符、条件判断和循环语句

    本节会介绍Python中运算符的用法,以及条件判断和循环语句的使用方法. 运算符 运算符包括算术运算符.赋值运算符.比较运算符.逻辑运算符等内容,大部分用法和C#基本一致,下面我们来看一下: 算数运算 ...

  2. 《简明python教程》笔记一

    读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info  安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...

  3. (原+转)简明 Python 教程:总结

     简明 Python 教程 说明:本文只是对<简明Python教程>的一个总结.请搜索该书查看真正的教程. 第3章 最初的步骤 1. Python是大小写敏感的. 2. 在#符号右面的内容 ...

  4. Python教程(0)——介绍

    What's Python? Python是一种编程语言,由荷兰人Guido van Rossum于1989年,为打发无聊的圣诞节而开发的. Python的优点是语法简洁,代码量比C/C++.Java ...

  5. 笔记|《简明Python教程》:编程小白的第一本python入门书

    <简明Python教程>这本书是初级的Python入门教材,初级内容基本覆盖,对高级内容没有做深入纠结.适合刚接触Python的新手,行文比较简洁轻松,读起来也比较顺畅. 下面是我根据各个 ...

  6. Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助

    Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化  format函数字符串格式化  帮助 目录 Pychar ...

  7. 《简明Python教程》学习笔记

    <简明Python教程>是网上比较好的一个Python入门级教程,尽管版本比较老旧,但是其中的基本讲解还是很有实力的. Ch2–安装Python:下载安装完成后,在系统的环境变量里,在Pa ...

  8. 【转】简明 Python 教程

    原文网址:http://woodpecker.org.cn/abyteofpython_cn/chinese/ 简明 Python 教程Swaroop, C. H. 著沈洁元  译www.byteof ...

  9. python读书笔记-《简明python教程》上

    1月15日 <简明python教程>上 基本结构: 基础概念+控制流+函数+模块+数据结构+面向对象+I/O+异常+标准库+其他   1.概念 1-0    退出python linux: ...

随机推荐

  1. 20144306《网络对抗》CAL_MSF基础运用

    1  实验内容 一个主动攻击,如ms08_067 一个针对浏览器的攻击,如ms11_050 一个针对客户端的攻击,如Adobe 成功应用任何一个辅助模块 2  实验过程记录 2.1 主动攻击MS08- ...

  2. 关于使用ModelSim中编写testbench模板问题

    对于初学者来说写Testbench测试文件还是比较困难的,但Modelsim和quartus ii都提供了模板,下面就如何使用Modelsim提供的模板进行操作. Modelsim提供了很多Testb ...

  3. 【转】JDBC学习笔记(8)——数据库连接池(dbcp&C3P0)

    转自:http://www.cnblogs.com/ysw-go/ JDBC数据库连接池的必要性 一.在使用开发基于数据库的web程序时,传统的模式基本是按一下步骤: 1)在主程序(如servlet/ ...

  4. 第二章、元组和列表(python基础教程第二版 )

    最基本的数据结构是序列,序列中每个元素被分配一个序号-元素的位置,也称索引.第一个索引为0,最后一个元素索引为-1. python中包含6种内建的序列:元组.列表.字符串.unicode字符串.buf ...

  5. MySQL注射的过滤绕过技巧

    SQL注射的绕过技巧较多,此文仅做一些简单的总结. 最好利用的注射点: 支持Union 可报错 支持多行执行.可执行系统命令.可HTTP Request等额外有利条件 若非以上类型,则可能需要暴力猜解 ...

  6. 蓝桥杯-组素数-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  7. [PHP] 网盘搜索引擎-采集爬取百度网盘分享文件实现网盘搜索

    标题起的太大了,都是骗人的.最近使用PHP实现了简单的网盘搜索程序,并且关联了微信公众平台.用户可以通过公众号输入关键字,公众号会返回相应的网盘下载地址.就是这么一个简单的功能,类似很多的网盘搜索类网 ...

  8. Linux命令之初出茅庐

    此处讲解常用到的参数选项: ls 是列出文件的意思 ls -a ,查看所有文件包含隐藏文件 ls -l ,查看与文件相关的所有属性信息 ls -i ,查看文件的inode信息 ls -h,按照更为容易 ...

  9. Java Socket应用---通信是这样练成的

    网络基础简介 Java 中网络相关 API 的应用     Java 中的 InetAddress 的应用   Test01.java package com.imooc; import java.n ...

  10. Vue H5 History 部署IIS上404问题

    背景简介 vue使用vue-router时,默认的地址并不美观,以#进行分割,例如:http://www.xxx.com/#/main. 为了访问地址能像正常的url一样,例如:http://www. ...