在程序的执行过程中,经常要使用条件判断语句决定程序的执行流转,还要使用循环语句进行相同代码的重复执行,它们在任何语言中都是非常重要的组成部分,熟练掌握才能更好的控制程序。以下实现过程,本人在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语句是,后面要用到条件表示式和关系运算符,他们可以经过运算得到布尔值。语法如下:
操作数 关系运算符 操作数
两个操作数使用关系运算符进行比较,得到布尔值。
常用的关系运算符如下:
比如:
>>> 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”,还有其他的替代符,如图:
替代符实例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)逻辑运算符
如图:
实例如下:
[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
———————— 本文至此结束,感谢阅读 ————————