Python的控制语句

时间:2022-04-01 17:30:19

控制语句

1.  控制语句简介

  控制语句是用来改变程序执行的顺序。程序利用控制语句有条件地执行语句,循环地执行语句或者跳转到程序中的其他部分执行语句。

  Python支持三种不同的控制语句:if,for和while,不支持C语言中的switch语句。

1.1  if 语句

  编程时经常需要检查一系列条件,并据此决定采取什么措施。在Python中,if语句让你能够检查程序的当前状态,并据此采取相应的措施。Python中的if语句的语法根java中的表示有点小小的区别。java中执行语句块需要用大括号括起来,而Python中是在if表达式后加冒号。

  注意:一个if 语句可以有多个 eli f部分,但是,只能有一个else 。

1.1.1 简单的 if 语句

  最简单的 if 语句只有一个条件和一个执行的语句块。其语法格式如下:

  if 表达式 :

    语句块

  以上 if 语句 只有表达式的值为真,才会执行语句块,否则,忽略语句块,什么也不操作。

  例如,提示用户输入两个值,如果相同,则输出它们。

 a = input("a:")
b = input("b:")
if a == b:
print("a的值和b的值相等,都等于",a,"。")

  

  结果如下:

 a:20
b:20
a的值和b的值相等,都等于 20 。

1.1.2 if - else 语句

 很多情况下,我们在中文中都会说,如果...就... ,否则就...。其语法格式如下所示:

  if 表达式 :

    语句块1

  else :

        语句块2

  以上 if 语句,如果 表达式为真,则执行语句块1,否则,则执行语句块2。

  例如,我们将用户名和密码存在变量中,然后根据用户输入的用户名和密码判断是否正确,并打印相应提示信息。

 _username = 'Yun'
_password = 'abc123'
username = input("username:")
password = input("password:")
if _username == username and _password == password:
print("Welcome user {name} loging...".format(name=username))
else:
print("Invalid username or password")

  

  输入的用户名和密码正确时,运行结果如下:

 username:Yun
password:abc123
Welcome user Yun loging...

  

  输入的用户名和密码不正确时,运行结果如下:

 username:Yun
password:123abc
Invalid username or password

1.1.3 if - elif - else 语句

  许多情况下,我们需要判断的情况不止两种,为此可以使用Python提供的if - elif - else 语句。其语法格式如下所示:

  if 表达式 1:

   语句块1

elif  表达式 2 :

      语句块2

  else :

       语句块3

  以上 if 语句,如果表达式1为真,则执行语句块1;否则如果表达式2为真,则执行语句块2;否则,则执行语句块3。

  例如,我们输入a和b两个整数,然后判断a、b的大小,输入最大值。

  代码1:

 a = input("a:")
b = input("b:")
if a > b :
print("你输入的最大值为",a,"。")
elif b > a:
print("你输入的最大值为",b,"。")
else:
print("你输入的a的值和b的值相等。")

  

  (1)当我们输入的值都是整数时:

 a:10
b:20
你输入的最大值为 20 。

  (2)当我们输入的值有一个为字符时:

 a:10
b:abc
你输入的最大值为 abc 。

  说明:在数据类型的介绍中,我们知道,python会将输入的整数当做字符串。所以我们需要用int()函数将输入的整数强行转换为整数,然后才能当作整数使用。

当我们输入的a和b都是整数时,不用int()转换,其结果跟整数比较的结果一样,但是,如果输入的不是整数时,代码仍然可以运行,但是 不是我们想要的整数比较,而是字符串比较。

  因此,为了避免输入错误导致不必要的结果,我们应该将输入的值强行转换为整型,这样,当我们输入的不是整数时,就会报异常,我们就知道自己输入的数据不满足需求。这也是写代码养成良好的习惯的细节表现。

  

  代码2:

 a = int(input("a:"))
b = int(input("b:"))
if a > b :
print("你输入的最大值为",a,"。")
elif b > a:
print("你输入的最大值为",b,"。")
else:
print("你输入的a的值和b的值相等。")

  

  (1)当我们输入的值是字符时:

 a:10
b:abc
Traceback (most recent call last):
File "F:/PyProject/s14/day1/if.py", line 21, in <module>
b = int(input("b:"))
ValueError: invalid literal for int() with base 10: 'abc'

  (2)当我们输入的值是浮点数时:

 a:10
b:20.10
Traceback (most recent call last):
File "F:/PyProject/s14/day1/if.py", line 21, in <module>
b = int(input("b:"))
ValueError: invalid literal for int() with base 10: '20.10'

  (3)当我们数据的都是整数时,分为三种情况输出一下。

  • a 小于 b的情况:
 a:10
b:20
你输入的最大值为 20 。

 

  • a 大于b的情况:
 a:30
b:10
你输入的最大值为 30 。
  • a等于b的情况:
 a:10
b:10
你输入的a的值和b的值相等。

1.1.4 多个elif代码块

  if 表达式 1:

     语句块1

elif  表达式 2 :

        语句块2

  ......

elif 表达式 n:

       语句块n

  else :

       语句块n+1

  以上 if 语句,如果表达式1为真,则执行语句块1;否则如果表达式2为真,则执行语句块2;否则如果表达式N为真,则执行语句块N;否则,则执行语句块n+1。

  例如,我们输入一个学生的姓名、学号即成绩,然后根据学生分数来划分成绩等级:优、良、中、差、不及格,即,大于等于90分为A;大于等于80分为B;大于等于70分C;大于等于60分为D;小于60分为F。

  代码:

 student_name = input("请输入学生的姓名:")
student_no = input("请输入学生的学号:")
student_score = input("请输入该学生的成绩:")
if student_score >= '' :
grade = "A"
elif student_score >= '':
grade = "B"
elif student_score >= '':
grade = "C"
elif student_score >= '':
grade = "D"
else:
grade = "F"
print(student_name,student_no,grade) if grade == "F":
print("亲爱的",student_name,"该努力了!")
else:
print("亲爱的",student_name,"恭喜过关,再接再厉!")

  

  (1)成绩为99分:

 请输入学生的姓名:Yun Qtian
请输入学生的学号:S100001
请输入该学生的成绩:99
Yun Qtian S100001 A
亲爱的 Yun Qtian 恭喜过关,再接再厉!

  

  (2)成绩为87分:

 请输入学生的姓名:Yun Qtian
请输入学生的学号:S1000001
请输入该学生的成绩:87
Yun Qtian S1000001 B
亲爱的 Yun Qtian 恭喜过关,再接再厉!

  (3)成绩为76分:

1 请输入学生的姓名:Yun Qtian
2 请输入学生的学号:S1000001
3 请输入该学生的成绩:76
4 Yun Qtian S1000001 C
5 亲爱的 Yun Qtian 该努力了! 

  (4)成绩为60分:

1 请输入学生的姓名:Yun Qtian
2 请输入学生的学号:S1000001
3 请输入该学生的成绩:60
4 Yun Qtian S1000001 D
5 亲爱的 Yun Qtian 恭喜过关,再接再厉! 

  (5)成绩为56分:

1 请输入学生的姓名:Yun Qtian
2 请输入学生的学号:S1000001
3 请输入该学生的成绩:56
4 Yun Qtian S1000001 F
5 亲爱的 Yun Qtian 该努力了! 

1.1.5  省略 else 代码块

  在Python代码中,一个 if 语句不能带有多个else 代码块 ,但是可以省略else代码块。

  例如,我们将上一节中的例子中的代码里面的else省略后,改为 用 elif 代替它。

  代码:

 1 student_name = input("请输入学生的姓名:")
2 student_no = input("请输入学生的学号:")
3 student_score = input("请输入该学生的成绩:")
4 if student_score >= '90' :
5 grade = "A"
6 elif student_score >= '80':
7 grade = "B"
8 elif student_score >= '70':
9 grade = "C"
10 elif student_score >= '60':
11 grade = "D"
12 elif student_score < '60'
13 grade = "F"
14 print(student_name,student_no,grade)
15
16 if grade == "F":
17 print("亲爱的",student_name,"该努力了!")
18 else:
19 print("亲爱的",student_name,"恭喜过关,再接再厉!")

  

 

(1)成绩为99分:

1 请输入学生的姓名:Yun Qtian
2 请输入学生的学号:S100001
3 请输入该学生的成绩:99
4 Yun Qtian S100001 A
5 亲爱的 Yun Qtian 恭喜过关,再接再厉!

  

  (2)成绩为87分:

1 请输入学生的姓名:Yun Qtian
2 请输入学生的学号:S1000001
3 请输入该学生的成绩:87
4 Yun Qtian S1000001 B
5 亲爱的 Yun Qtian 恭喜过关,再接再厉!

  (3)成绩为76分:

1 请输入学生的姓名:Yun Qtian
2 请输入学生的学号:S1000001
3 请输入该学生的成绩:76
4 Yun Qtian S1000001 C
5 亲爱的 Yun Qtian 该努力了! 

  (4)成绩为60分:

1 请输入学生的姓名:Yun Qtian
2 请输入学生的学号:S1000001
3 请输入该学生的成绩:60
4 Yun Qtian S1000001 D
5 亲爱的 Yun Qtian 恭喜过关,再接再厉! 

  (5)成绩为56分:

1 请输入学生的姓名:Yun Qtian
2 请输入学生的学号:S1000001
3 请输入该学生的成绩:56
4 Yun Qtian S1000001 F
5 亲爱的 Yun Qtian 该努力了!  

  

  从以上运行结果来看,跟上一节中的完全一致。虽然这有编写Python解释器也支持,但是为了更规范,也让学习过其他语言的朋友更好的理解Python代码,尽量保持相同的编程风格。

1.1.6 多个 if 条件

  在Python,虽然 if-elif-else 结构功能强大,但仅适用于只有一个条件满足的情况,因为如果前面的条件满足后,后面的条件就会跳过。这种行为很好,效率很高,让你能测试一个特定的条件。

  然后,有时我们需要检查所有条件。在这种情况下,就应该使用多个不包含 elif 和 else 代码块的简单 if 语句。在可能有多个条件为True,且你需要在每个条件为True时都采取相应的措施时,适合使用这种方法。

  例如,在一个比萨店中,如果顾客点了两种配料,就需要确保在其比萨中包含这些配料:

  代码:

 requested_toppings = ['mushrooms','extra cheese']

 if 'mushrooms' in requested_toppings:
print("Adding mushrooms.")
if 'pepperoni' in requested_toppings:
print("Adding pepperoni.")
if 'extra cheese' in requested_toppings:
print("Adding extra cheese.")
print("\nFinished making your pizza!")

  运行结果如下:

 Adding mushrooms.
Adding extra cheese. Finished making your pizza!

 

1.2  while 语句

  在java 中,while 语句的表达式用括号括起来,循环体用大括号括起来,但在Python中,while 语句的表达式不需要用括号括起来,循环体也不需要用大括号括起来,而是在表达式后用冒号即可。

  while 语句条件为真时,while语句重复执行语句块。在Python 中的 while 语句的基本语法为:

  while 表达式 :

        循环体

  首先,while 语句计算表达式,它将返回一个boolean 值(true 或者 false)。如果表达式返回true,则执行循环体中的语句。然后,while 语句继续测试表达式来确定是否执行循环体,直到表达式返回false。

  例如,用while循环打印0到5:

 count = 0
while count < 5:
print(count)
count += 1

  运行结果如下:

 0
1
2
3
4

1.3 for 语句

  for 语句提供了一个更简便、灵活的方法来进行循环。在Python中,for 语句的语法 如下所示:

   for  变量 in  对象:

    循环体

  例如,循环打印0到5 的数据:

 count = 1
for i in range(0,5):
print("第",count,"个数是:",i)
count += 1

  运行结果如下:

 第 1 个数是: 0
第 2 个数是: 1
第 3 个数是: 2
第 4 个数是: 3
第 5 个数是: 4

1.4  跳转语句

  Python 语言有两种跳转语句:

  (1)break 语句。跳出循环。

  (2)continue 语句。跳出本次循环,继续下一次循环。

1.4.1  break 语句

  要立即退出 while 循环或者 for 循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用 break  语句。break 语句用于控制程序流程,可使用它控制哪些代码行将执行,哪些代码行不执行,从而让程序按你的要求执行你要执行的代码。

  例如,我们循环打印数据,每次加1,直到我们要求退出时结束循环。

  代码:

 count = 0
while True:
print("count:",count)
count += 1
if count == 5:
break

  运行结果如下:

 count: 0
count: 1
count: 2
count: 3
count: 4

 

1.4.2  continue 语句

  在循环中,如果要返回到循环开头,并根据条件测试结果决定 是否继续执行循环,可使用continue语句,它不像break语句那样不再执行余下的代码并退出整个循环。

  例如,我们来看一个从1数到10,但只打印其中的奇数的循环。

  代码:

 count = 0
while count < 10:
count += 1
if count % 2 == 0:
continue
print(count)

  运行结果如下:

 1
3
5
7
9