目录

  • 单元1  初识Python
    • ● 任务 1.1  计算机程序设计语言概述
    • ● 任务 1.2 Python语言
    • ● 任务1.3 Python开发环境搭建
    • ● 任务 1.4 Python的简单使用
    • ● 知识拓展
    • ● 思考与练习
  • 单元2   Python基础知识
    • ● 任务2.1 Python程序基本结构
    • ● 任务2.2  标准输入输出
    • ● 任务2.3  Python对象
    • ● 任务2.4 Python变量
    • ● 任务2.5  数据类型
    • ● 任务2.6 字符串
    • ● 任务2.7 运算符
    • ● 知识拓展
    • ● 思考与练习
  • 单元3   程序流程控制
    • ● 任务3.1  顺序结构
    • ● 任务3.2 选择结构
    • ● 任务3.3  循环结构
    • ● 知识拓展
    • ● 思考与练习
  • 单元4  Python序列
    • ● 任务4.1  序列
    • ● 任务4.2 列表
    • ● 任务4.3  用于序列操作的常用内置函数
    • ● 任务4.4   元组
    • ● 任务4.5  字典
    • ● 任务4.6  集合
    • ● 知识拓展
    • ● 思考与练习
  • 单元5  函数
    • ● 任务5.1 函数的定义与调用
    • ● 任务5.2 函数的参数
    • ● 任务5.3   参数类型
    • ● 任务5.4  变量作用域
    • ● 任务5.5   嵌套调用与递归调用
    • ● 任务5.6  lambda表达式
    • ● 任务5.7  模块
    • ● 知识拓展
    • ● 思考与练习
  • 单元6  异常处理
    • ● 任务6.1 异常处理的基本概念
    • ● 任务6.2 Python的异常处理语句
    • ● 任务6.3  自定义异常
    • ● 知识扩展
    • ● 思考与练习
  • 单元7  文件操作
    • ● 任务7.1  文件的分类
    • ● 任务7.2  文件对象
    • ● 任务7.3  文本文件
    • ● 任务7.4  二进制文件
    • ● 知识拓展
    • ● 思考与练习
  • 单元8  面向对象程序设计
    • ● 任务8.1 面向对象技术的基本概念
    • ● 任务8.2 类与对象
    • ● 任务8.3 类的继承
    • ● 任务8.4 方法重写
    • ● 知识扩展
    • ● 思考与练习
  • 单元9  网络编程基础
    • ● 任务9.1  Socket概述
    • ● 任务9.2   Socket对象内建方法
    • ● 任务9.3  Socket编程实例
    • ● 任务9.4    PythonInternet模块
    • ● 知识扩展
    • ● 思考与练习
  • 单元10    Python标准库及第三方库
    • ● 任务10.1 Python标准库
    • ● 任务10.2 Python第三方库的下载及安装
    • ● 任务10.3  Python第三方库举例
    • ● 知识扩展
    • ● 思考与练习
  • 任务11 用户图形界面(GUI)
    • ● 任务11.1 图形用户界面概述
    • ● 任务11.2 窗体容器和组件
    • ● 任务11.3 界面布局管理
    • ● 任务11.4 文本框组件
    • ● 任务11.5 其他组件
    • ● 任务11.6菜单与对话框
    • ● 任务11.7 鼠标键盘事件
    • ● 知识扩展
    • ● 思考与练习
  • 任务12   Python操作数据库
    • ● 数据库基础
    • ● 结构化查询语言SQL
    • ● Python操作数据库核心API
    • ● Python操作数据库案例
    • ● sqlite3 实训练习案例
    • ● pymysql 数据库实训案例
    • ● 小结  思考与练习
  • 习题解析(线上作业等参考解答)
    • ● 第一单元 初识Python  作业
    • ● 第二单元  Python基础(作业)
    • ● 第三单元  程序流程控制 作业(1)
    • ● 第三单元  程序流程控制  作业(2)
    • ● 第四单元  Python序列   作业
    • ● 第五单元   函数   作业
    • ● 单元六  异常处理  作业
    • ● 单元七、八  文件操作,GUI,面向对象
    • ● 单元九   网络编程基础
    • ● 线上习题解析
    • ● 编程训练
  • 应用题解(综合编程技术)
    • ● 《食品识别小专家》
    • ● 格式输出
    • ● 习题选解
    • ● 每日一帖
    • ● 模拟基本信息
    • ● 模拟基本数据
    • ● 数制转换
    • ● 定制每日运动计划
    • ● 《简易购物系统》
  • 课程章节测验
    • ● 第1次章节测验
  • 复习
    • ● Python基础知识总结
  • 第三方库TOOLS(备用)
    • ● 库模块(可下载)
    • ● 供考查备用的库模块(可下载)
任务2.7 运算符

运算符是用于表示某种运算操作的符号,指明对操作数进行的运算。运算符按其功能可以划分为:算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符、成员运算符、身份运算符等。这里仅介绍逻辑运算符:and、or和not,其余运算符将在后续程序中使用时再予以介绍。逻辑运算符的操作数是逻辑值True(真)和False(假)。not属于一元运算符,只需要一个操作数;or和not属于二元运算符,需要两个操作数。

操作数X

操作数Y

X and Y 

X or Y 

not X

True

True

True

True

False

True

False

False

True

False

False

True

False

True

True

False

False

False

False

True


表达式是由变量、对象、方法调用和操作符等元素组成的式子,它执行操作符指定的计算并返回计算结果。例如:a+b,a>b,a and b都是表达式。表达式的计算结果或者赋值于变量,或者用于程序控制的条件。单独的变量或方法调用等也可视为一个表达式。

表达式中出现多个运算符时,Python将按运算符的优先级从高到低进行计算。例如四则混合运算中,乘(*)除(/)的运算优先级高于加(+)减(-),即在没有使用括号改变运算次序时,乘(*)除(/)优先于加(+)和减(-)。

运算符

描述

**

指数(最高优先级)

~,+,- 

按位翻转,正号,负号

*,/,%,//

乘、除、取模和取整除

+,-

加法、减法

>>,<<

右移、左移运算符

&

位与

^,|

位运算符

<,<=,>,>=,!=,==

比较运算符

is,is not

身份运算符

in,in not

成员运算符

not,or,and

逻辑运算符

赋值 链式赋值

b = a = a + 1相当于

如下2条语句:

>>> a = a + 1

>>> b = a

位运算:  只适用于整数,位运算就是按整数的二进制位进行的运算

取反     ~,与    &  , 或    |,异或      ^,左移     <<,右移     >>

例:

print( 1<< 1)    #2

print( 1>> 1)    #0


Python运算符优先级: 算术运算符 > 位运算符 > 关系运算符 > 逻辑运算符

算术运算符的优先级:  ** > + -(正负号)> * / > // > % > + -

逻辑运算符的优先级:not > and > or


 逻辑操作符 and 和 or 也称作短路操作符,具有惰性求值的特点:表达式从左向右解析,一旦结果可以确定就停止。

当计算表达式 exp1 and exp2 时,先计算exp1的值,当exp1的值为True或非空值,才计算并输出exp2的值;当exp1的值为 False 或空值直接输出exp1的值,不再计算exp2。

当计算表达式 exp1 or exp2 时,先计算exp1的值,当exp1的值为True或非空值,直接输出exp1的值,不再计算exp2;当exp1的值为False或空值,才计算并输出exp2的值。




例:

print(3 < 2 and 2 < 1 or 5 > 4)  #True

x, y, z = 1, 2, 3

print( x + 3/y -z % 2 > 2)   #False

print( 3 - 2 << 1)    #2     相当于 print( (3 - 2)<< 1) 

print( (3 - 2)<< 1)    #2

print(3 - 2 << 1 < 3)   #True

print( 1<< 1)    #2

print( 1>> 1)    #0

计算方法

左移表达式的位 result = expression1 << expression2

参数 result  任何变量。expression1  任何表达式。expression2   任何表达式。

说明:<<运算符把expression1的所有位向左移expression2指定的位数。例如:

var temp temp = 14 << 2 变量temp的值为 56,因为 14 (即二进制的 00001110)向左移两位等于 56 (即二进制的 00111000)。

简单介绍一种方便计算的方法:

8 << 1的值为8*2=16;

8 << 2的值为8*(2^2)=32;

8 << n的值为8*(2^n)。

右移运算符,移位运算符的一种程序设计中位操作运算符的一种。移位运算符有双目移位运算符:<<(左移)和>>(右移)。移位运算符组成的表达式也属于算术表达式,其值为算术值。左移运算是将一个二进制位的操作数按指定移动的位数向左移位,移出位被丢弃,右边的空位一律补0。右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定。在使用补码作为机器数的机器中,正数的符号位为0,负数的符号位为1。(均由机器来定:这个不正确)(MSDN原文明确说明,右移对于无符号类型强制补0,对于有符号类型续补符号位)

例:

print( 3<< 1)    #6  十进制3(即二进制 11)   左移1位变成后补0  110

print( 3<< 2)    #12 十进制3(即二进制 11)   左移2位变成后补00  1100

print( 3>> 1)    #1   十进制3(即二进制 11)  右移1位。01

#右移运算是将一个二进制位的操作数按指定移动的位数向右移动,

#移出位被丢弃,左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定。

print( 4>> 2)    #1   十进制3(即二进制 100)  右移2位,成001