Python入门(5)——分支与循环

时间:2022-11-25 13:58:11


Python入门(5)——分支与循环

使用功能更强大的IDE



PyCharm 是一款功能强大的 Python 编辑器,具有跨平台性。学习分支语句及循环语句,为了我们调试方便,我们后期选择使用 PyCharm ,PyCharm可以直接到官网下载。


Python入门(5)——分支与循环

下载并安装完成后,选择新建项目。


Python入门(5)——分支与循环

填写项目目录,即可进入项目界面。


Python入门(5)——分支与循环

在界面的左边,是项目的目录树。


Python入门(5)——分支与循环

在界面的右边是代码编辑区,默认打开Python主模块文件。


在此文件中,我们把除了  

if __name__ == '__main__':

以外的文本删去,在此句下面写我们的python代码,注意代码要缩进。



Python入门(5)——分支与循环

Python代码块



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


代码块有以下规则:

1. 缩进增加时,代码块开始

2. 代码块可以包含其他代码块

3. 缩进减少为零,或与外面包围代码块对齐,代码块就结束了



Python入门(5)——分支与循环

分支语句的使用



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

"""
验证回答是否正确
Version: 1.0
Author: Caizi
"""
if __name__ == '__main__':
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
"""
if __name__ == '__main__':
a = int(input('请输入一个整数:'))
# 如果为0,则打印"此数为零!"
if a == 0:
print('此数为零!')
# 如果大于0,则打印"此数是正数!"
elif a > 0:
print('此数是正数!')
# 否则,打印"此数是负数!"
else:
print("此数是负数!")


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

"""
判断数字是正数、负数还是零
Version: 2.0
Author: Caizi
"""
if __name__ == '__main__':
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入门(5)——分支与循环

循环语句的使用



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


for-in循环

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

# for-in循环格式

for 变量名 in range(范围):

    循环子句1

    循环子句2

    ...


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

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


代码中的 range(101) 可以用来构造一个从0到100的范围,当我们把这样一个范围放到 for-in 循环中,就可以通过前面的循环变量 依次取出从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
"""
if __name__ == '__main__':
yourKey = '123456'
key = input('请输入密码:')
while True:
if key == yourKey:
print('密码正确。')
break
else:
print('密码输入错误!')
key = input('请重新输入密码:')


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


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

"""
打印九九乘法表
Version: 1.0
Author: Caizi
"""
if __name__ == '__main__':
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入门(5)——分支与循环

Python中特殊的else语句



while-else语句

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

"""
循环判断大小
Version: 1.0
Author: Caizi
"""
if __name__ == '__main__':
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
"""
if __name__ == '__main__':
citys = ["Beijing", "Shanghai", "Shenzhen", "Guangzhou"]
for city in citys:
if city == "Shenzhen":
print("深圳!")
break
print("循环数据 " + city)
else:
print("没有循环数据!")
print("完成循环!")

上面的代码输出为

循环数据 Beijing

循环数据 Shanghai

深圳!

完成循环!