Python入门(7)——分支语句与循环语句

Python代码块

首先说明一下Python代码块的问题。Python有着严格的代码缩进要求,对于有C++、Java等编程经验的人来说,区分代码块是以花括号{}形式进行划分的。但对于Python来说,Python区分代码块是以缩进形式进行划分的,即属于同一个代码块的代码有着相同的缩进,所以,在Python中,千万不要随意添加空格,一般我们使用Tab制表符进行缩进,每次缩进为一个制表符长度,即4个空格。

代码块有以下规则:

  • 缩进增加时,代码块开始
  • 代码块可以包含其他代码块
  • 缩进减少为零,或与外面包围代码块对齐,代码块就结束了

分支语句的使用

要构造分支结构可以使用ifelifelse关键字。下面例子中演示了如何构造一个分支结构。

"""
验证回答是否正确
Version: 1.0
Author: Caizi
"""
a =int(input('计算:1 + 2 = '))
# 如果计算正确,则打印"回答正确!"
if a == 3:
    print('回答正确!')
else:
    print("回答错误!")

如果if条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了。

如果要构造出更多的分支,可以使用if...elif...else...结构或者嵌套的if...else...结构。

if 条件:
    if子句1
    if子句2
    ...
elif 条件:
    elif子句1
    elif子句2
    ...
else:
    else子句1
    else子句2
    ...

下面例子演示了如何利用多分支结构判断数字是正数、负数还是零。

"""
判断数字是正数、负数还是零
Version: 1.0
Author: Caizi
"""
a = int(input('请输入一个整数:'))
# 如果为0,则打印"此数为零!"
if a == 0:
    print('此数为零!')
# 如果大于0,则打印"此数是正数!"
elif a > 0:
    print('此数是正数!')
# 否则,打印"此数是负数!"
else:
    print("此数是负数!")

当然,分支结构是可以嵌套的,即所谓的嵌套分支结构。例如上面的判断我们也可以写成下面的形式。

"""
判断数字是正数、负数还是零
Version: 2.0
Author: Caizi
"""
a = int(input('请输入一个整数:'))
# 如果为0,则打印"此数为零!"
if a == 0:
    print('此数为零!')
else:
    if a > 0:
        print('此数是正数!')
    else:
        print("此数是负数!")

有C/C++/Java编程经验的人都知道,if语句可以用三元运算符简写。但在Python中,语法格式与它们并不一样,在Python中的格式为条件为True执行的表达式 if 条件表达式 else 条件为False执行的表达式。下面的例子演示了如何使用Python中的三元运算符。

"""
三元运算符
Version: 1.0
Author: Caizi
"""
x = 0
print('x为零' if x == 0 else 'x不为零')  # x为零
y = 1
print('y为零' if y == 0 else 'y不为零')  # y不为零

循环语句的使用

循环结构就是程序中控制某条或某些指令重复执行的结构。在Python中构造循环结构有两种做法,一种是for-in循环,一种是while循环。

for-in循环

在明确知道循环执行的次数或者要对一个容器进行迭代,推荐使用for-in循环。

# for-in循环格式
for 变量名 in range(范围):
    循环子句1
    循环子句2
    ...

例如下面代码中计算0~100求和的结果。

"""
求0~100的累加和
Version: 1.0
Author: Caizi
"""
sum = 0
for x in range(101):
    sum += x
print(sum)

代码中的range(101)可以用来构造一个从0到100的范围,当我们把这样一个范围放到for-in循环中,就可以通过前面的循环变量x依次取出从0到100的整数。

range()函数,有三个参数,第一个参数为起始值,第二个参数为终止值,第三个参数为步长。

  • range(101):可以用来产生0到100范围的整数。
  • range(50, 101):可以用来产生50到100范围的整数,相当于前面是闭区间后面是开区间。
  • range(50, 101, 2):可以用来产生50到100的奇数,其中2是步长,即每次数值递增的值。
  • range(100, 50, -2):可以用来产生100到50的偶数,其中-2是步长,即每次数字递减的值。

while循环

要构造不知道具体循环次数的循环结构,我们使用while循环。while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True则继续循环;表达式的值为False则结束循环。

下面的例子判断输入的密码是否正确,不正确则重新输入,直到你输入正确为止结束程序。

"""
检查输入的密码是否正确,直到你输入正确为止结束程序
Version: 1.0
Author: Caizi
"""
yourKey = '123456'
key = input('请输入密码:')
while True:
    if key == yourKey:
        print('密码正确。')
        break
    else:
        print('密码输入错误!')
        key = input('请重新输入密码:')

上面的代码中使用了break关键字来提前终止循环,需要注意的是break只能终止它所在的那个循环,即终止内层循环。除了break之外,还有另一个关键字是continue,它可以用来放弃本次循环后续的代码直接让循环进入下一轮,即直接进入下一轮循环。

循环结构是可以嵌套的,即所谓的嵌套循环。下面例子演示了如何通过嵌套的循环来输出一个九九乘法表。

"""
打印九九乘法表
Version: 1.0
Author: Caizi
"""
for i in range(1, 10):
    for j in range(1, i + 1):
        print('%d*%d=%d' % (i, j, i * j), end='\t')
    print()

上面代码中的print()语句,写了个类似C/C++的格式输出写法,但与C/C++不同,在Python中的格式为:输出字符串与变量之间用%隔开,%后面加个括号填写要填入字符串的变量名,多个变量名用英文逗号隔开。

Python中特殊的else语句

while-else语句

如果 while 后面的条件语句为 false 时,则执行 else 的语句块。

"""
循环判断大小
Version: 1.0
Author: Caizi
"""
count = 0
while count < 3:
    print(count, '小于3')
    count += 1
else:
    print(count, '大于或等于3')

上面的代码输出为

0 小于3
1 小于3
2 小于3
3 大于或等于3

for-else语句

如果 for 没有循环完所有数据,则执行 else 的语句块。如果 for 循环完所有数据,则不执行 else 语句块。

"""
循环城市
Version: 1.0
Author: Caizi
"""
citys = ["Beijing", "Shanghai", "Shenzhen", "Guangzhou"]
for city in citys:
    if city == "Shenzhen":
        print("深圳!")
        break
    print("循环数据 " + city)
else:
    print("没有循环数据!")
print("完成循环!")

上面的代码输出为

循环数据 Beijing
循环数据 Shanghai
深圳!
完成循环!

你可能感兴趣的:(Python,python)