2.5 运算符与表达式

  2.5.1 算术运算符和算术表达式

  算术运算符包括四则运算符、求模运算符和求幂运算符。

算术运算符

加减乘除:+  -  *  /    表达式:x+y   x-y   x*y  x/y

求模:%    表达式:x%y

求幂: **    表达式:x**y

注意:与C、Java语言不用,Python不支持自增运算符和自减运算符。例如,i++、i--是错误的语法

  1. print("1+1=",1+1)
  2. print("2*3=",2*3)
  3. print("3%2=",3%2)
  4. print("2**3=",2**3)
  1. [root@Dannyserver danny]# python .py
  2. +=
  3. *=
  4. %=
  5. **=

注意:在Python2中1/2和python3中的1/2结果略有不同,python2认为1和2是整型,相除后的结果会被截断,因此得到值为0。python3中能得到正确结果0.5

python的算术表达式具有数学表达式的结合性和优先性。及从左至右,先乘除,再加减,有括号先运算括号内的。

2.5.2 关系运算符和关系表达式

  同C语言一样

<  >  <=  >=  ==  !=

小于、大于、小于等于、大于等于、等于、不等于

2.5.3 逻辑运算符和逻辑表达式

and  :逻辑与  表达式:x and y

or  :逻辑或  表达式:x || y

not  :逻辑非  表达式:not x

  1. print(not True)
  2. print(False and True)
  3. print(True and False)
  4. print(True or False)
  1. [root@Dannyserver danny]# python .py
  2. False
  3. False
  4. False
  5. True

3.Python的控制语句

3.1 条件判断语句

  python中的条件判断语句有——if语句、if else语句

3.1.1 if 条件语句

语法1:

if (表达式):

  语句1

else:

  语句2

语法2:

if (表达式1):

  语句1

elif (表达式2):

  语句2

...

elif(表达式n):

  语句n

else:

  语句m

  python控制台输入函数:input()捕获用户的原始输入并将其转为字符串。

语法:input([prompt]) -> string

prompt是控制台输出的提示文字,提示用户输入,返回值为字符串。如果输入的是数字,返回的还是字符串,使用前需要调用int()转换一下。例:

  1. x = input("x:")
  2. x = int(x)
  3. x = x + 1
  4. print(x)
  1. [root@Dannyserver danny]# python .py
  2. x:

注意:如果不调用int()把字符串格式化为数字,计算表达式时会提示错误

例1:

  1. a=input("a:")
  2. a=int(a)
  3. b=input("b:")
  4. b=int(b)
  5. if(a>b):
  6. print(a,">",b)
  7. elif(a<b):
  8. print(a,"<",b)
  9. else:
  10. print(a,"=",b)

例2:

  1. score=float(input("please input the score:")) #接受用户输入并格式化为float类型,当输入的为小数时,使用int格式化会报错
  2. if (90<=score<=100):
  3. print("A")
  4. elif (80<=score<90):
  5. print("B")
  6. elif (60<=score<80):
  7. print("C")
  8. else:
  9. print("D")

注意:else子句后需要加一个冒号,使python解释器能识别出else子句对应的代码块。在python2中还有raw_input()函数用于接收用户输入,功能与Python3的input()相同。而python2中的input()接收的值不转换为字符串类型,而是保留原始类型,在python3中已经去除。

3.1.2 if语句嵌套

if语句嵌套是指在if语句中可以包含一个或多个if语句。

例:

  1. x=0
  2. y=99
  3. if(x>=0):
  4. if(x>0):
  5. y=1
  6. else:
  7. y=0
  8. else:
  9. y=-1
  10. print ("y=",y)

3.1.3 switch语句的替代方案

  switch语句用于编写多分支结构的程序,类似于if...elif...else语句。C语言中switch语句的结构如下所示。

switch(表达式) {

  case  常量表达式1:语句1

  case  常量表达式2:语句2

  ...

  case  常量表达式n:语句n

  default:语句m

}

  switch语句表示的分支结构比if...elif...else语句更清晰,代码可读性更高。但是python并没有提供switch语句,python可以通过字典实现switch语句的功能。

  实现方法分为两步。首先,定义一个字典。字典是由键值对组成的集合,然后,调用字典的get()获取相应的表达式。

下面这段代码通过算术运算的符号,获取算术运算的表达式。

  1. #使用字典实现switch语句
  2. from __future__ import division
  3. x=1
  4. y=2
  5. operator="*" #定义变量
  6. result={ #定义字典
  7. "+" : x+y,
  8. "-" : x-y,
  9. "*" : x*y,
  10. "/" : x/y
  11. }
  12. print(result.get(operator)) #调用get()方法,get()参数即变量operator的值,此处为乘号*
  1. [root@Dannyserver danny]# python .py

  还有一种使用switch分支语句的方案是创建一个switch类,处理程序的流转。这种实现方法比较复杂,涉及面向对象、for循环、中断语句、遍历等知识。

  注意:switch语句造成代码不易维护,使源文件臃肿。面向对象的设计中常常对switch语句进行重构,把switch语句分解为若干个类。当然,对于分支流程简单的switch,可以使用字典来实现。使用字典更容易管理switch,而switch类回到了C、Java的老路上,而且写法更复杂了,不推荐使用。

3.3 循环语句

  python中的循环语句有while、for。

3.3.1 while循环

  python中while循环的格式如下所示。

while(表达式):

  ...

else:

  ...

while循环的执行过程:当循环表达式为真时,依次执行while中的语句。知道循环表达式的值为False,程序的流程转到else语句。其中else子句可以省略,表达式两侧的括号也可以省略。

注意:while循环中的else子句也属于循环的一部分,最后一次循环结束后将执行else子句。

例1:

  1. #while循环
  1. numbers=input("输入几个数字,用逗号分隔:").split(",")
  2. print(numbers)
  3. x=0
  4. while(x<len(numbers)): #当x的值小于输入数字的个数时,执行循环
  5. print (numbers[x])
  6. x+=1 #一个循环结束时给x加1
  1. [root@Dannyserver danny]# python .py
  2. 输入几个数字,用逗号分隔:,,
  3. ['', '', '']

例2:

  1. #带else子句的while循环
  2. x=float(input("输入x的值:"))
  3. i=0
  4. while(x!=0):   #python3中不等于抛弃了<>,一律使用!=
  5. if(x>0):
  6. x -= 1
  7. else:
  8. x += 1
  9. i=i+1
  10. print("第%d次循环:" %i,x)
  11. else:
  12. print("x等于0:",x)
  1. [root@Dannyserver danny]# python .py
  2. 输入x的值:
  3. 1次循环: 4.0
  4. 2次循环: 3.0
  5. 3次循环: 2.0
  6. 4次循环: 1.0
  7. 5次循环: 0.0
  8. x等于0 0.0
  9. [root@Dannyserver danny]# python .py
  10. 输入x的值:-
  11. 1次循环: -4.0
  12. 2次循环: -3.0
  13. 3次循环: -2.0
  14. 4次循环: -1.0
  15. 5次循环: 0.0
  16. x等于0 0.0

注意:在使用循环语句时,应注意循环语句的布尔值,避免出现死循环。

3.3.2 for循环

  for循环用于遍历一个集合,格式如下:

for 变量 in 集合:

  ...

else:

  ...

  for ... in ...循环通常与range()函数一起使用,range()返回一个列表,for..in...遍历列表中的元素。range()函数声明如下:

class range(object)

  range(stop) -> range object

range(start,stop[,stop]) -> range object

例:range(1,5,2)表示从1开始到5结束,每次增加2个单位,不包括5。

  range()返回一个range对象,列表的元素值由3个参数决定;参数start表示列表开始的值,默认值为0;参数stop表示列表结束的值,改参数不可或缺;参数setp表示步长,每次递增或递减的值,默认值为1。

  1. for x in range(-1,2):
  2. if (x>0):
  3. print("正数:",x)
  4. elif (x==0):
  5. print("零:",x)
  6. else:
  7. print("负数:",x)
  8. else:
  9. print("循环结束")

注意:在C、Java语言中,支持如下结构的for循环

for(表达式1;表达式2;表达式3)

  语句块

但是在python中不支持这样的for循环。如果需要编写类似功能的循环,可以使用while循环。例:

  1. x=0
  2. while x<5:
  3. print(x)
  4. x=x+2

以上功能也可以用range+for的方式实现,例:

  1. for x in range(0,5,2):
  2. print(x)

代码看上去更简单一点,当然这里只是实现了传统的for循环。如果要用条件表达式作为循环的条件,可以构造range()函数来实现。

python学习笔记三——控制语句的更多相关文章

  1. Python 学习笔记三

    笔记三:函数 笔记二已取消置顶链接地址:http://www.cnblogs.com/dzzy/p/5289186.html 函数的作用: 給代码段命名,就像变量給数字命名一样 可以接收参数,像arg ...

  2. webdriver(python) 学习笔记三

    知识点:简单的对象定位 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象.一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一个人的身份证号,姓名,或者他住在哪 ...

  3. python学习笔记三--字典

    一.字典: 1. 不是序列,是一种映射, 键 :值的映射关系. 2. 没有顺序和位置的概念,只是把值存到对应的键里面. 3. 通过健而不是通过偏移量来读取 4. 任意对象的无序集合 5. 可变长,异构 ...

  4. Python学习笔记三

    一. 为什么要使用函数? 函数可以方便阅读代码. 函数可以减少重复代码. 函数可以减少管理操作,减少修改操作. 二. 函数分类: 内置函数:len()   sum()   max()   min() ...

  5. python学习笔记(三)、字典

    字典是一种映射类型的数据类型.辣么什么是映射呢?如果看过<数据结构与算法>这一本书的小伙伴应该有印象(我也只是大学学习过,嘻嘻). 映射:就是将两个集合一 一对应起来,通过集合a的值,集合 ...

  6. Python学习笔记三:模块

    一:模块 一个模块就是一个py文件,里面定义了一些业务函数.引用模块,可以用import语句导入.导入模块后,通过 模块.函数名(参数)  来使用模块中的函数.如果存在多个同名模块,则前面模块名需要加 ...

  7. python学习笔记(三)高级特性

    一.切片 list.tuple常常截取某一段元素,截取某一段元素的操作很常用 ,所以python提供了切片功能. L=['a','b','c','d','e','f'] #取索引0,到索引3的元素,不 ...

  8. python学习笔记(控制语句)

    博主平时学python的时候.大多是复制网上别人现成的进行改动实现自己的测试的要求 所有python基础语法其实掌握的很差 本来想优化下接口脚本实现.发现基础的循环控制语句都不知道怎么写 所以准备整理 ...

  9. python学习笔记(三):文件操作和集合

    对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 文件基本操作: f = open('file.txt','r') #以只读方式打开一个 ...

随机推荐

  1. MATLAB——sigmoid传递函数

    一.log——sigmoid函数 二.tan——sigmoid函数

  2. Percona XtraDB Cluster集群

    官网参考地址: https://www.percona.com/doc/percona-xtradb-cluster/LATEST/configure.html 前期准备: 都用的root权限或使用s ...

  3. Html5 标签二(超链接)

    1.五种超链接形式 2.超链接属性 一 五种超链接 <!DOCTYPE html> <html lang="en"> <head> <me ...

  4. 【Codeforces Round 1137】Codeforces #545 (Div. 1)

    Codeforces Round 1137 这场比赛做了\(A\).\(B\),排名\(376\). 主要是\(A\)题做的时间又长又交了两次\(wa4\)的. 这两次错误的提交是因为我第一开始想的求 ...

  5. MySQL(十三)事务处理和字符集

    一.事务处理 事务处理(transaction processing):是一种机制,用来维护数据库的完整性,管理必须成批执行的MySQL操作,以保证数据库不包含不完整的操作结果. 这样可以保证一组操作 ...

  6. https原理简析

    [转]http://www.cnblogs.com/carsonzhu/p/5225778.html HTTPS的工作原理 HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手 ...

  7. Luogu P2257 YY的GCD

    莫比乌斯反演第一题.莫比乌斯反演入门 数论题不多BB,直接推导吧. 首先,发现题目所求\(ans=\sum_{i=1}^n\sum_{j=1}^m [\gcd(i,j)=prime]\) 考虑反演,我 ...

  8. Qt5.9使用QWebEngineView加载网页速度非常慢,问题解决

    折腾了大半天终于解决了 原帖地址:https://bugreports.qt.io/browse/QTBUG-44763 BUG单下的留言讲明了问题发生的原因,那就是系统默认设置为自动寻找代理,而使用 ...

  9. [UWP 自定义控件]了解模板化控件(2):模仿ContentControl

    ContentControl是最简单的TemplatedControl,而且它在UWP出场频率很高.ContentControl和Panel是VisualTree的基础,可以说几乎所有VisualTr ...

  10. Helper

    //检测端口是否使用 public static bool VerifyListenerPort(int port) { bool inUse = false; System.Net.NetworkI ...