第二课 Python中的分支循环、逻辑运算和关系运算

 

第二课 条件判断和循环的单例

 

       考虑以后的应用和语法查询的方便,在这节课还是将程序流程以及涉及的运算以单独而简单案例的形式展现一下。学习的方法是阅读程序,尽量修改一下,下节课就比较复杂了。对程序流程而言,只有三种结构:顺序、分支、循环,无论多复杂的程序也是这三种结构的排列和综合。

本次课程中案例所涉及的内容包括:       

1、三种条件语句

1) if 条件:

执行语句块a


2)  if 条件:

执行语句块a

else:

执行语句块b


3)  if 条件:

执行语句块a

elif 另一个条件:

执行语句块b

else:

执行语句块c


2、Python中真假的表达


3、两种循环

1)for in循环

2)while 循环

4、生成序列的range 函数

5、没有 do while怎么办

6、关系运算和逻辑运算

7、continue和break


 

条件判断

Python的条件判断也使用“if”这个关键字,并且比较直观,例如:

 

a=30

b=20

if a>b:

    print 'a='+`a`+' is max number'

print 'over'

 

根据Python的规则,如果if语句判断是True,就把缩进的语句执行了,否则,什么也不做,首先注意if的条件判断如果是True,那么只运行if后面那层缩进的语句,而不管这个缩进有多少句,而一旦缩进取消,则不管条件如何都会执行,例如上例的print‘over’;其次注意if条件的后面有一个“:”冒号。

 

也可以给if添加一个else语句,这样可以表达,如果条件为True执行A,否则执行B

a=30

b=50

if a>b:

    print 'a='+`a`+' is max number'

else:

    print 'b='+`b`+' is max number'

 

print 'over'

注意if的条件和else后面都有冒号:。

 

如果有多重条件的判断,Python提供了elif这个关键字,代替了其它语言的elseif,只是简写一下,没其他意思。例如下面的程序:

 

a=input('pls inputa: ')

b=input('pls inputb: ')

 

if  a>b:

    print 'a='+`a`+' is max number'

elif  b>a:

    print 'b='+`b`+' is max number'

 

else :

    print 'equal'

   

print 'over'

 

 

所以if语句的完整形式就是:

if <条件判断1>:

    <执行1>

elif <条件判断2>:

    <执行2>

elif <条件判断3>:

    <执行3>

else:

    <执行4>

除了if以外,其他都可以省略,if语句从上至下执行,如果在某个判断上是True,则会忽略掉剩下的elif和else。

 

真假的表达 

Python中什么是True(真)呢,Python中的真包括:非零数值、非空字符串、非空list、元组等非空集合(集合以后再说)。0,空字符串、空集合为False(假)。

所以判断a不为0可以这样写:

if a:

   print “a is not 0”

 

循环 

Python支持两种循环,一种是for...in循环,另一种是传统的while,请看例子:

 

我们想计算1-10的整数之和,可以用一个sum变量做累加:

sum = 0

for x in [1, 2, 3, 4, 5, 6,7, 8, 9, 10]:

    sum = sum + x

print sum

这比较好理解,x依次取集合中1到10([1,2,3,4,5,6,7,8,9,10]在数学中也是集合的含义)的数值,然后用sum累加(sum=sum + x的含义是新的sum的值为sum的当前值加x)

但是要计算1-100的整数之和,从1写到100有点困难,幸好Python提供一个range()函数,可以生成一个整数集合的序列, range(N)生成的序列是从0开始小于N的整数:

例如 range(15)会产生0到14一共15个整数。

 

那么range(101)就可以生成0-100的整数序列,求100以内的整数和可以编程如下:

sum = 0

for x in range(101):

    sum = sum + x

print sum

 

第二种循环是著名的和传统的while循环,也叫“当型循环”,即只要(当)条件满足(条件为True或非0),就不断循环,条件不满足(条件为Flase或 为0时)时退出循环。再次用while来编程计算100以内所有整数之和:

 

sum = 0

i= 0

while i < 101 :

    sum = sum + i

    i+=1

print sum

 

Python 用for in取代了传统的for,那是为了使用“迭代”统一了“遍历集合”的方法,省得像我这种老顽固老习惯用index这种东西。

 

没有 do while

我看了许多人抱怨Python为什么没有dowhile语句了,呵呵, 其实do while本来就可以用while代替,当初C语言创造它就是为了少做一次输入或赋值而已。

例如下面这个求所有输入整数的累加和直至输入-1退出的例程:

 

第二课 Python中的分支循环、逻辑运算和关系运算_第1张图片


 关系运算符和逻辑运算符

最后说一下关系运算符和逻辑运算符

首先说破个秘密,就是运算优先级实际上不太用考虑,关系运算符总是比逻辑运算符优先级高(除了C语言中的!),其原因就是大家懒得写括号。

例如a大于100或a小于10可以写作:a>100or a<10,你看根本不用考虑括号问题。一般情况下总是如此,当然复杂的运算还是要注意一些优先级。 

简单说一下关系运算

>,<,<=,>=,==,!=,依次是大于,小于,大于等于,小于等于,比较两数相等(为True),比较两数不等(为True),简单吧

至于逻辑运算,也就是与、或、非三种:and、or、not 必须小写,每个一句话,不用考虑什么真值表啥的。我给出一个表达式样例并给出一句话解释

“与 运算样例”:a and b :  a,b中一个为假,运算结果为假

“或 运算样例”:a or b :  a,b中一个为真,运算结果为真

“非 运算样例”:!a :结果与a相反

 当前学过的运算符按优先级排列:算术运算符    关系运算符    逻辑运算符

下面锻炼一下脑子:4种判断n是奇数的方法

 

1: if  n%2!=0:

       print ‘odd’

 

2:  if not(n%2==0):

       print ‘odd’


3: if n%2==1:

       print ‘odd’


 

4:  if n%2:

       print ‘odd’


 break 和 continue

最后要说的是break和continue这两个关键字用来中断循环,break用来中断本层循环,continue只用来中断本次循环。

 

我总是觉得话说不清,脑子也想不清,学习的另一个捷径就是把别人说的话用另外的方法说出来,还的让别人理解,那就是学会了,学编程也是如此。所以本次课的所有程序都没有注释,自己读读,懂了,能说出来,就是会了。

下面的程序是:输入一个数n,求它的所有因子的和,我们考虑,最大因数是n/2取整,所以程序如下:

 

i=0

sum=0

n=input("pls input n : ")

for i in range(1,n):

    if i>n/2:

       break      

    ifn%i== 0:

       print'i= '+`i`

       sum+=i

    else:

       continue      

print 'sum = '+ `sum`

 

range 函数产生序列

其中range(1,n)是产生1到n-1的整数集合。

那么range函数的两种用法:

range(n)产生 0 到 n-1 的序列

range(m,n)产生 m 到 n-1的序列


 


你可能感兴趣的:(Python教程,Python,树莓派,编程,语言,面向对象)