1、基本概念

1.1 流程控制语句

  流程控制语句就是按照一定的步骤来实现某些功能的语句

  python 中主要的流程控制语句:选择语句、条件表达式、循环语句、跳转语句、pass 语句

1.2 程序结构

(1)顺序结构:按照代码的顺序依次执行

(2)选择结构:根据条件表达式的结果选择执行不同的语句

  通常使用 if 语句实现

(3)循环结构:在一定条件下反复执行某段程序的流程结构

2、if 语句

2.1 简单的 if 语句

语法:如果符合条件,则...

if 表达式:
    语句块
# 实例:
# -*- coding:utf-8 -*-
# version:python3.7

number = int(input("请输入number的值:"))
if number > 5:
    print("number>5")

执行结果:
请输入number的值:6
number>5

2.2 if...else 语句

  语法:如果符合条件,则...,否则...

if 表达式:
    语句块1
else:
    语句块2
# 实例:
# -*- coding:utf-8 -*-
# version:python3.7

score = int(input("请输入你英语成绩:"))
if score >= 60:
    print("你的英语成绩合格")
else:
    print("你的英语成绩不合格")

执行结果:
请输入你英语成绩:56
你的英语成绩不合格

2.3 if...elif...else 语句

  语法:如果符合条件,就...,否则,如果满足另一种条件,则...

if 表达式1:
    语句块1
elif 表达式2:
    语句块2
......
else:    #如果都不满足则执行语句块n
    语句块n
实例:
# -*- coding:utf-8 -*-
# version:python3.7
# 猜数游戏

number = 55
print("猜数字游戏!")
number_in = int(input("你猜的数字是:"))
if number_in == number:
    print("你猜对了!")
elif number_in > number:
    print("你猜的数字大了")
else:
    print("你猜的数字小了")

执行结果:
猜数字游戏!
你猜的数字是:56
你猜的数字大了
实例:折中算法
# -*- coding:utf-8 -*-
# version:python3.7
# 输入一个最大5位的正整数,判断这是几位数

num = int(input("please enter this number:"))
if num >= 1000:
    if num >= 10000:
        print("该数为5位数")
    else:
        print("该数为4位数")
else:
    if num >= 100:
        print("该数为3位数")
    elif num >= 10:
        print("该数为2位数")
    else:
        print("该数为1位数")

  注意1:如果已经定义了一个布尔类型的变量 flag,推荐使用如下判断语句:

if flag:
if not flag:

   而不推荐使用如下判断语句:

if flag == True:     #不推荐
if flag == False:    #不推荐

  注意2:判断变量是否等于数值时:

# 建议使用:
if 1== a
# 不建议使用:if a == 1,容易错写为
if a = 1

2.4 if 语句的嵌套

  语法:嵌套语法可以有多种结合,此处列举一列如下

if 表达式1:
        if 表达式2:
            语句块2
        else:
            语句块3
else:
    语句块1
# 实例:判断是否为酒后驾车
# -*- coding:utf-8 -*-
# version:python3.7

print("为了您和家人的安全,严禁酒后驾车!")
proof = int(input("请输入每100毫升血液的酒精含量:"))
if proof < 20:
    print("您还不构成饮酒驾车,可以开车,但请注意安全!")
else:
    if 80 > proof >= 20:
        print("已经达到酒后驾驶标准,请不要开车!")
    else:
        print("您已经达到醉酒驾驶标准,千万不要开车!!!")

执行结果1:
为了您和家人的安全,严禁酒后驾车!
请输入每100毫升血液的酒精含量:90
您已经达到醉酒驾驶标准,千万不要开车!!!
执行结果2:
为了您和家人的安全,严禁酒后驾车!
请输入每100毫升血液的酒精含量:19
您还不构成饮酒驾车,可以开车,但请注意安全!

3、循环语句

3.1 while 循环

  一直重复,直到条件不满足时停止,语法:

while 条件表达式:
    循环体
# 实例:while循环实现1+2+...+100
# -*- coding:utf-8 -*-
# version:python3.7

sum = 0
n = 0
while n <= 100:
    sum = sum + n
    n = += 1
print("1+2+...+100=",sum)

执行结果:
1+2+...+100= 5050

3.2 for 循环

  一般重复一定次数,通常用于迭代、枚举或遍历,语法:

for 迭代变量 in 对象:
    循环体
实例:for循环实现1+2+...+100
# -*- coding:utf-8 -*- 
# version:python3.7

sum = 0                 #保存累加结果的变量
for i in range(101):    #range()函数实现数值循环:生成一系列连续整数
    sum += i            #实现累加
print("1+2+...+100=",sum)

执行结果:
1+2+...+100= 5050

  range() 函数实现数值循环

    主要作用:生成一系列连续整数

    基本语法:range(start,end,stop)

      start 指起始值(包括)、end结束值(不包括)、stop

# range()实例:
# -*- coding:utf-8 -*- 
# version:python3.7

for i in range(1,10,2):    #输出1,3,5,7,9(从1开始到10结束,隔2个)
    print(i,end=' ')       #range默认输出到多行,end=' '指以空格分隔

执行结果:
1 3 5 7 9

  for循环除了可以循环数值,也可以遍历字符串

# 实例:for循环遍历字符串
# -*- coding:utf-8 -*-
# version:python3.7

string = "我可以的"
print(string)
for ch in string:
    print(ch)

执行结果:
我可以的
我
可
以
的

3.3 循环嵌套

# 语法1
while 条件表达式1:
    while 条件表达式2:
        循环体2
    循环体1

# 语法2
while 条件表达式:
    for 迭代变量 in 对象:
        循环体2
    循环体1

# 语法3
for 迭代变量 in 对象:
    while 条件表达式:
        循环体2
    循环体1

# 语法4,5......
实例:使用循环嵌套,输出99乘法表
# -*- coding:utf-8 -*-
# version:python3.7

for i in range(1,10):         #控制行数
    for j in range(1,i+1):    #输出与行数相等的列,range不包括结束值,所以i+1
        print(str(j)+"X"+str(i)+"="+str(j*i)+"\t",end='')    #\t:转义字符一个Tab键,end='':在一行输出
    print("")    #转行

执行结果:
1X1=1    
1X2=2    2X2=4    
1X3=3    2X3=6    3X3=9    
1X4=4    2X4=8    3X4=12    4X4=16    
1X5=5    2X5=10    3X5=15    4X5=20    5X5=25    
1X6=6    2X6=12    3X6=18    4X6=24    5X6=30    6X6=36    
1X7=7    2X7=14    3X7=21    4X7=28    5X7=35    6X7=42    7X7=49    
1X8=8    2X8=16    3X8=24    4X8=32    5X8=40    6X8=48    7X8=56    8X8=64    
1X9=9    2X9=18    3X9=27    4X9=36    5X9=45    6X9=54    7X9=63    8X9=72    9X9=81

4、跳转语句

4.1 break 语句

  直接跳出循环

# 实例:电影院座位五行七列,你的座位为第二行第三列,请找出你的座位
# -*- coding:utf-8 -*-
# version:python3.7

for row in range(1,5):
    print("当前所在排:",row)
    if row == 2:
        print("这是您座位所在排")
        for column in range(1,8):
            print("当前所在列:",column)
            if column == 3:
                print("这是您的座位")
                break
        break

执行结果:
当前所在排: 1
当前所在排: 2
这是您座位所在排
当前所在列: 1
当前所在列: 2
当前所在列: 3
这是您的座位

# 如果不使用break跳转语句跳出循环,会将所有排数都打印一遍

4.2 continue 语句

  不能跳出整个语句,只能退出本次循环,提前进入下次循环

# 实例:逢七过游戏(叫数游戏:遇到七的倍数和以七结尾的数过)
# -*- coding:utf-8 -*-
# version:python3.7

total = 99    #假定99次都过
for number in range(1,100):    #从1循环到99
    if number % 7 == 0:    #是七的倍数
        continue           #继续下一次叫数
    else:
        string = str(number)
        if string.endswith('7'):    #判断是否以七结尾
            continue       #继续下一次循环
    total -= 1    #可过次数-1
print("从1到99可以过",total,"次")

执行结果:
从1到99可以过 22 次

4.3 pass 语句

  表示空语句,不做任何事情,起占位作用

# 实例:输出1-10之间的偶数,不是偶数的先使用pass空语句占位
# -*- coding:utf-8 -*-
# version:python3.7

for i in range(1,11):
    if i % 2 == 0:
        print(i,end=' ')    #输出1-10之间的偶数,中间使用空格隔开
    else:
        pass    #不是偶数的先占位

执行结果:
2 4 6 8 10

 5、算法入门

5.1 打印九九乘法表

# -*- coding:utf-8 -*-
# version:python3.7

for i in range(1, 10):
    for j in range(1, i+1):
        print("{}X{}={}".format(j, i, j*i), end='\t')    #格式化字符串,后续篇幅讲解
    print("")

#执行结果:
1X1=1    
1X2=2    2X2=4    
1X3=3    2X3=6     3X3=9    
1X4=4    2X4=8     3X4=12    4X4=16    
1X5=5    2X5=10    3X5=15    4X5=20    5X5=25    
1X6=6    2X6=12    3X6=18    4X6=24    5X6=30    6X6=36    
1X7=7    2X7=14    3X7=21    4X7=28    5X7=35    6X7=42    7X7=49    
1X8=8    2X8=16    3X8=24    4X8=32    5X8=40    6X8=48    7X8=56    8X8=64    
1X9=9    2X9=18    3X9=27    4X9=36    5X9=45    6X9=54    7X9=63    8X9=72    9X9=81

5.2 打印菱形

#分析:
   *       #3个空格 + 1个*号
  ***      #2个空格 + 3个*号
 *****     #1个空格 + 5个*号
*******    #0个空格 + 7个*号
 *****     #1个空格 + 5个*号
  ***      #2个空格 + 3个*号
   *       #3个空格 + 1个*号

 

# -*- coding:utf-8 -*-
# version:python3.7

n = 7    #定义菱形最长行*数
e = n//2
for i in range(-e, e+1):
    print("{}{}".format(abs(i)*" ", (n-(2*abs(i)))*"*"))

#执行结果:
   *
  ***
 *****
*******
 *****
  ***
   *

5.3 打印100以内的斐波那契数列

# 打印100以内的斐波那契数列
# -*- coding:utf-8 -*-
# version:python3.7

a2 = 1
a1 = 1
print(a2,end=' ')
print(a1,end=' ')
while True:
    a = a2 + a1
    if a > 100:
        break
    else:
        print(a,end=' ')
    a2 = a1
    a1 = a

执行结果:
1 1 2 3 5 8 13 21 34 55 89

5.4 求斐波那契数列的第101项

# 求斐波那契数列的第101项
# -*- coding:utf-8 -*-
# version:python3.7

a2 = 1
a1 = 1
count = 2

while True:
    a = a2 + a1
    if count == 100:
        print(a,end=' ')
        break
    count += 1
    a2 = a1
    a1 = a

执行结果:
573147844013817084101

5.5 求10万以内的所有质数

  一般考虑时间复杂度,算法最优,但开始刚接触算法,先不用考虑这么多

# 先求20以内的所有质数,再求10万以内的所有质数
# -*- coding:utf-8 -*-
# version:python3.7

for i in range(2,20):
    count = 0
    for j in range(1,i):
        if i % j == 0:
            count += 1
    if count == 1:
        print(i,end=' ')

执行结果:
2 3 5 7 11 13 17 19