分享

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

 菜籽爱编程 2022-04-27

使用功能更强大的IDE


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

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

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

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

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

在此文件中,我们把除了  

if __name__ == '__main__':

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

Python代码块


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

代码块有以下规则:

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

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

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

分支语句的使用


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

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

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

"""判断数字是正数、负数还是零Version: 2.0Author: 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.0Author: Caizi"""x = 0print('x为零' if x == 0 else 'x不为零')  # x为零y = 1print('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.0Author: 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.0Author: 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.0Author: 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中特殊的else语句


while-else语句

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

"""循环判断大小Version: 1.0Author: 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.0Author: 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

深圳!

完成循环!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多