Python流程控制解析

概述

我们学习完了数据类型,开启编程的第二步,学习流程控制语句。

流程控制大纲图如下:

大纲

1.条件控制,使用if...else..语句对条件结果(True/False)进行判断

2.循环语句用来执行一条或着多条语句,有while循环和for循环两种形式。

可以通常与条件控制语句结合一起使用,实现复杂的代码逻辑如

  • 如果条件符合,则反复执行循环体里的语句
  • 在每次执行完后都会判断一次条件是否为True
  • 如果为True则继续重复执行循环体里的语句。

1. 条件分支类型

条件根据不同的结果执行不同的代码,这称为选择结构或者分支结构。

Python 中的 if else 语句可以细分为三种形式

  • if 语句
  • if else 语句
  • if elif else 语句
1.1 单分支

单分支结构只if判断,当条件为True,执行语句,否则就不执行条件语句块

单分支
1.2 双分支

双分支结构,当条件为True时,执行语句块1。如果条件False时,则为执行语句块2.

双分支
1.3 多分支

多分支结构就是有多个条件判断。

多分支

2.循环语句

Python循环语句有while和for两种循环体。接下来会详细介绍它们的使用。

学习之前,我们先找一个小练习打印乘法表,带着去解决问题思维,去使用两个循环吧。

2.1 while循环

while循环书写格式

while 条件:

    循环体
while
# 用while循环实现如下
row = 1
while row <= 9:
    col = 1
    while col <= row:
        print('%d * %d = %d ' %(col,row,col*row),end='')
        col += 1
    print('')
    row += 1

while
2.2 for循环

Python for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串。

for循环书写格式

   for 变量 in 可迭代对象:

       循环体
for循环
# 用for循环实现如下
for x in range(1,10):
    for y in range(1,10):
        print("{0}*{1}={2}".format(x,y,(x*y)),end="\t")
    print()
2.3 嵌套循环

顾明思议,就是循环里嵌循环。

for 变量 in 可迭代对象:
    for 变量 in 可迭代对象:
        循环体2
    循环体1
for循环
while 条件:
   while 条件
    循环体
   循环体
while

3. 循环中配套语句

3.1 break

break语句可用while和for循环,用来结束整个循环。

当有嵌套循环时,break语句只能跳出最近的循环。

break
# 输出 JueJing 的每个字母
for letter in 'JueJing':
    if letter == 'n':
        break
    print('当前字母 :', letter)

break
3.2 contiue

continue语句用于结束本次循环,继续下一次。

多个循环嵌套时,continue也是应用于最近的一层循环。

continue

# 输出 JueJing 的每个字母
for letter in 'JueJing':
    if letter == 'u':
        continue
    print('当前字母 :', letter)

continue
3.3 else

while,for 循环可以附带一个else语句(可选)。

如果for,while 语句没有被break语句结束,则会执行else子句,否则不执行。

语法格式如下

while 条件表达式:
    循环体
else:
    语句块

或者:

for 变量 in 可迭代对象:
    循环体
else:
    语句块
image.png
# 打印4次输入的内容,如果输入Q,则直接退出循环,如果输出4次,则执行到else提示已达到上限
for i in range(4):
    i = input()
    if i == "Q":
        break
    print(i)

else:
    print("Over")
   
else
3.4 pass

Python pass 是空语句,是为了保持程序结构的完整性。

pass 不做任何事情,一般用做占位语句。

pass
# 输出 JueJing 的每个字母
for letter in 'JueJing':
    if letter == 'u':
        pass
        print('这是 pass 块')
    print('当前字母 :', letter)

pass
3.5 循环代码优化

虽然计算机越来越快,空间也越来越大,我们仍然要在性能问题上考虑,编写循环时,遵循下面三个原则,可以大大提高运行效率,避免不必要的低效计算

  1. 尽量减少循环内部不必要的计算
  2. 嵌套循环中,尽量减少内层循环计算,尽可能向外提
  3. 局部变量查询较快,尽量使用局部变量
import  time

start  = time.time()
for i in range(1000):
    res = []
    for j in range(10000):
        res.append(i*1000+j*100)
end  = time.time()
print("耗时:{0}".format(end-start))

start2  = time.time()
for i in range(1000):
    res = []
    C = i*1000
    for j in range(10000):
        res.append(C+j*100)
end2  = time.time()
print("耗时:{0}".format(end2-start2))

image.png

4.综合练习

Leetcode两数相加题目
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:
给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解题思路:

使用双指针概念,暴力方法最简单,两个for循环嵌套使用

def twoSum_wayOne(nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        n=len(nums)
        for x in range(n):
            for y in range(x+1,n):
                if nums[x]+nums[y] == target:
                    return [x,y]
                    break
                else:
                    continue

运行结果

你可能感兴趣的:(Python流程控制解析)