Python条件与循环

在程序的执行过程中,经常要使用条件判断语句决定程序的执行流转,还要使用循环语句进行相同代码的重复执行,它们在任何语言中都是非常重要的组成部分,熟练掌握才能更好的控制程序。以下实现过程,本人在CentOS 7系统(默认是Python 2.7.5)中实现。

博文大纲:
一、Python条件判断
1.if条件语句
2.条件表达式与关系运算符
3.if-else条件语句
4.多重if语句
5 if语句的常见问题
二、Python的循环
1.while循环
2.for循环
3.循环控制
1)break
2)continue

一、Python条件判断

条件语句是根据条件表达式的不同计算结果,使程序流转到不同的代码块。Python中的条件语句是if语句和if else语句。

1.if条件语句

if语句用于判断某个条件是否成立,如果成立,则执行语句内的程序,否则跳过if语句执行后面的内容,语法格式如下:

if(条件):
    语句块

if语句的执行过程时:如果条件的布尔值为True,则执行语句块;否则跳过语句块,继续执行后面的语句。语句块是一组程序语句,Python的语法中没有用Java等语言中的花括号表示一组语句,而是采用空格缩进的方式表示一组语句,通常用4个空格表示一组语句,使程序员在编码时减少了代码的工作量。

实例1如下:

[root@localhost ~]# vim 1.py
#coding:utf-8                      //由于是在Linux环境下,需要使用“utf8”声明一下,不然会出现中文乱码的情况
m=100                                 //定义一个变量
if(m>90):                              //进行判断,冒号结尾,如果输出以下内容   
        print "Double kill"
        print "Triple kill"             //注意缩进空格(这两条语句都是同样的缩进情况,所以属于一个语句块)
[root@localhost ~]# python 1.py                   //使用python命令执行脚本
Double kill
Triple kill

实例2如下:

#coding:utf-8
score=input()                           //input()表示变量的内容等待从键盘输入
print score >= 60                       //经过运算得到布尔值
if score >=60:                           //冒号结尾,如果满足条件输出“合格”
        print "合格"
[root@localhost ~]# python 2.py                  //执行python脚本
80
True
合格

2.条件表达式与关系运算符

使用if语句是,后面要用到条件表示式和关系运算符,他们可以经过运算得到布尔值。语法如下:

操作数 关系运算符 操作数

两个操作数使用关系运算符进行比较,得到布尔值。
常用的关系运算符如下:
Python条件与循环

比如:

>>> print 10==9
False
>>> print 10!=9
True

3.if-else条件语句

if语句还可以加上else关键字,根据条件判断,决定执行不同的语句块,当条件为True时,执行语句块1,当条件为False是,执行语句2.语法如下:

if(条件):
    语句块1
else:
    语句块2

实例如下:

[root@localhost ~]# vim 3.py
#coding:utf-8
print "请输入成绩"
source=input()
if source >= 60:                         
        print "合格"                      //满足条件打印这个语句块内容
else:
        print "不合格"                     //不满足时,打印这个语句块内容
[root@localhost ~]# python 3.py
请输入成绩
80
合格
[root@localhost ~]# python 3.py
请输入成绩
40
不合格

if-else语句是在需要根据条件决定程序需要执行的内容时使用。语法上要注意if和else后面都要使用冒号,他们前面的空格缩进都是相同的,表示它们是一个整体,而它们对应的语句块也是同级的,空格缩进也是相同的,整体的代码看起来比较简洁、易懂。

4.多重if语句

使用if-else通过条件判断程序能够有两条执行路径,但有时还需要更多条路径进行处理,这时可以加入elif关键字进行处理。语法如下:

if(条件1):
    语法块1
elif(条件2)
    语句块2
elif(条件3)
    语句块3
……
else:
    语句块

实例如下:

[root@localhost ~]# vim 4.py
#coding:utf-8
score=input()
if (score>=90):
        print '优秀'
elif (score>=80):
        print'良好'
elif (score>=70):
        print '合格'
else:
        print '不合格'
[root@localhost ~]# python 4.py
90
优秀
[root@localhost ~]# python 4.py
80
良好
[root@localhost ~]# python 4.py
70
合格
[root@localhost ~]# python 4.py
60
不合格

使用键盘输入不同的值,输出的结果不同,执行了不同的语句块。其中else语句是一个可选项,可以有也可以没有,需要根据程序的需要灵活掌握。

5. if语句的常见问题

(1)出现逻辑错误

[root@localhost ~]# vim 1.py
#coding:utf-8
score=input()
if score >=60:                           //条件的空格是可以省略的,没有问题
        print '合格'
if score >=70:
        print '良好'
if score >=80:
        print '优秀'                           //无法实现最后想要的效果

注意:if语句的执行过程是,从上往下,找到即停!

(2)语句块没有缩进

实例1如下:

[root@localhost ~]# vim 1.py
#coding:utf-8
score=input()
if score >=90:
print '优秀'                    //语句块没有注意缩进的问题

实例2如下:

#coding:utf-8
score=input()
if score >=90:
        print '优秀'
       print 'ok'                      //同一个语句块,缩进的位置不同

这两种情况,编译器就会直接报错!

(3)条件表达式的冒号

一定要注意:条件表达式后的冒号,千万千万不要忘记!

二、Python的循环

编写程序时,经常有代码需要重复运行,Python提供了while和for进行循环。

1.while循环

while循环用于已知的循环次数(根据条件进行判断)!

(1)while循环可以根据条件进行判断,决定是否要循环执行语句块。语法如下:

while 循环条件:
    循环操作语句

循环条件后也是使用冒号,然后缩进写循环操作语句,先判断条件是否成立,如果为True ,则执行循环操作语句,如果为False,则跳出循环。

实例1如下:

[root@localhost ~]# vim 1.py
#coding:utf-8
count=0
while (count<5):
        count = count+1
        print count
[root@localhost ~]# python 1.py
1
2
3
4
5

实例2如下:

[root@localhost ~]# vim 2.py
#coding:utf-8
i=1
sum=0
while i <=3:                                       //循环条件
        print '请输入第%d门课程的考试成绩' %i      //%d表示格式化整数型。%i表示调取变量i的值赋值给%d
        sum = sum + input()                  //执行的循环操作
        i = i + 1
avg = sum / (i-1)
print '3门课程的平均成绩是%d' %avg                    //格式化整数型,%avg表示将avg的值赋值给%d 
[root@localhost ~]# python 2.py
请输入第1门课程的考试成绩
70
请输入第2门课程的考试成绩
80
请输入第3门课程的考试成绩
90
3门课程的平均成绩是80

字符串格式化中可以使用的替代符除了“%d”,还有其他的替代符,如图:
Python条件与循环

替代符实例1如下:

[root@localhost ~]# vim 3.py
#coding:utf-8
num=5
numStr="5"
numF=5.55
print "第%d名" %num
print "第%s名" %numStr
print "分数是%f" %numF
[root@localhost ~]# python 3.py
第5名
第5名
分数是5.550000

替代符实例2如下:

[root@localhost ~]# vim 4.py
#coding:utf-8
first=1
second=2
print "第%d名和第%d名" %(first,second)            //使用时,注意变量的顺序,位置不能放错
[root@localhost ~]# python 4.py
第1名和第2名

(2)python脚本中,“#”也是注释的意思跟shell脚本一样,但是python的注释要求是“#+空格”,其实“#”就已经可以了!

(3)while循环嵌套使用,比如:

[root@localhost ~]# vim 5.py
#coding:utf-8
j=1                   //初始化外层循环计数器j
prompt = '请输入学生姓名'
while j<=2:                 //定义外层循环
        sum =0              //总成绩情零
        i=1             //初始化内层循环计数器i
        name=raw_input(prompt)                  //raw_input表示:读取标准输入的字符串
        while i<=3:         //内层循环
                print '请输入第%d门课程的成绩' %i
                sum = sum + input()
                i = i + 1
        avg = sum / (i-1)
        print '%s的3门课程的平均成绩是:%d' %(name,avg)
        j = j + 1
print '学生成绩输入完成'
[root@localhost ~]# python 5.py
请输入学生姓名lzj
请输入第1门课程的成绩
70
请输入第2门课程的成绩
80
请输入第3门课程的成绩
90
lzj的3门课程的平均成绩是:80
请输入学生姓名lzj1
请输入第1门课程的成绩
90
请输入第2门课程的成绩
80
请输入第3门课程的成绩
70
lzj1的3门课程的平均成绩是:80
学生成绩输入完成

2.for循环

for用于未知的循环次数(遍历元素的方式)!

1)for循环的几种方式

语法结构:

for 变量 in 集合:
    语句块

常用的几种使用方式。

(1)for循环对字符串进行遍历,逐个获得字符串中的每个字符,比如:

[root@localhost ~]# vim 1.py
#coding:utf-8
for i  in 'python':
        print 'Current letter:%s' %i
[root@localhost ~]# python 1.py
Current letter:p
Current letter:y
Current letter:t
Current letter:h
Current letter:o
Current letter:n

(2)for循环可以对列表或元组进行遍历,比如:

[root@localhost ~]# vim 2.py
#coding:utf-8
j=['abc','cba','bca']
for i in j:
        print i
[root@localhost ~]# python 2.py
abc
cba
bca

(3)需要循环操作相同的内容时,可以用for循环和range()函数结合使用。比如:

[root@localhost ~]# vim 3.py
#coding:utf-8
print range(0,5)
print range(0,5,2)                   
//range()函数的作用是初始值,终止值,递增的频率(如不指定,则表示1),默认不输出终止值
[root@localhost ~]# python 3.py
[0, 1, 2, 3, 4]
[0, 2, 4]

2)for循环实例

[root@localhost ~]# vim 4.py
#coding:utf-8
sub=('python','mysql','linux')
sum=0
for i in sub:
        print '请输入%s考试成绩:' %i
        score = input()
        sum += score                   //相当于sum+score
avg = sum / len(sub)            //len()表示求列表长度
print '平均成绩是%d' %avg
[root@localhost ~]# python 4.py
请输入python考试成绩:
80
请输入mysql考试成绩:
90
请输入linux考试成绩:
85
平均成绩是85

3)逻辑运算符

如图:
Python条件与循环

实例如下:

[root@localhost ~]# vim 1.py
#coding:utf-8
score = 180
if (score<0 or score>100):
        print '成绩错误,不能小于0或大于100'
[root@localhost ~]# python 1.py
成绩错误,不能小于0或大于100
[root@localhost ~]# vim 2.py
#coding:utf-8
score = 180
if (not (score>=0 and score<=100)):                 //使用not取反
        print '成绩错误,不能小于0或大于100'
[root@localhost ~]# python 2.py
成绩错误,不能小于0或大于100

4)for循环嵌套

如下:

[root@localhost ~]# vim 1.py
#coding:utf-8
stu=['小明','小张']
sub=['python','mysql','linux']
for i in stu:                  //第一层循环对学生姓名进行遍历
        sum = 0
        for j in sub:                //第二层循环学习科目进行遍历
                print '请输入%s的%s考试成绩:' %(i,j)
                score=input()
                sum +=score
        avg = sum / len(sub)
        print '%s的平均成绩是%d' %(i,avg)
[root@localhost ~]# python 1.py
请输入小明的python考试成绩:
90
请输入小明的mysql考试成绩:
80
请输入小明的linux考试成绩:
70
小明的平均成绩是80
请输入小张的python考试成绩:
80
请输入小张的mysql考试成绩:
70
请输入小张的linux考试成绩:
60
小张的平均成绩是70

3.循环控制

当使用while和for循环操作时,有可能需要改变循环的正常顺序,这时就需要用循环控制语句实现,循环控制语句有break和continue。

1)break

在循环的语句块中使用break,可以跳出整个循环。比如:

[root@localhost ~]# vim 1.py
#coding:utf-8
stu=['小明','小张']
sub=['python','mysql','linux']
for i in stu:                    //第一层循环
        sum = 0
        for j in sub:                 //第二层循环
                print '请输入%s的%s考试成绩:' %(i,j)
                score=input()
                if (score<0 or score>100):              //进行判断
                        print '成绩无效!'
                        break                    //跳出整个二层循环
                sum +=score
        avg = sum / len(sub)
        print '%s的平均成绩是%d' %(i,avg)
[root@localhost ~]# python 1.py
请输入小明的python考试成绩:
180
成绩无效!
小明的平均成绩是0
请输入小张的python考试成绩:
180
成绩无效!
小张的平均成绩是0

2)continue

continue循环只是跳过当前一轮循环体的剩余语句,重新测试循环状态,进行下一轮循环。比如:

[root@localhost ~]# vim 1.py
#coding:utf-8
stus=['小明','小张']
subs=['python','mysql','linux']
for stu in stus:                //第一层for循环
        sum = 0
        i=0
        while (i<len(subs)):         //第二层while循环
                print '请输入%s的%s考试成绩:' %(stu,subs[i])
                score=input()
                if (score<0 or score>100):
                        print '成绩无效!'
                        continue              //跳到if语句重新进行判断
                i = i + 1
                sum +=score
        avg = sum / len(subs)
        print '%s的平均成绩是%d' %(stu,avg)
[root@localhost ~]# python 1.py
请输入小明的python考试成绩:
180
成绩无效!                              //输出之后不跳出循环,等待继续输入
请输入小明的python考试成绩:
10
请输入小明的mysql考试成绩:
20
请输入小明的linux考试成绩:
30
小明的平均成绩是20
请输入小张的python考试成绩:
80
请输入小张的mysql考试成绩:
180
成绩无效!
请输入小张的mysql考试成绩:
10
请输入小张的linux考试成绩:
90
小张的平均成绩是60

———————— 本文至此结束,感谢阅读 ————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章