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的值:6number>5
2.2 if...else 语句
语法:如果符合条件,则...,否则...
if表达式:
语句块1else:
语句块2
# 实例:
#-*- coding:utf-8 -*-#version:python3.7
score= int(input("请输入你英语成绩:"))if score >= 60:print("你的英语成绩合格")else:print("你的英语成绩不合格")
执行结果:
请输入你英语成绩:56你的英语成绩不合格
2.3 if...elif...else 语句
语法:如果符合条件,就...,否则,如果满足另一种条件,则...
if表达式1:
语句块1elif表达式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,推荐使用如下判断语句:
ifflag: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:
语句块2else:
语句块3else:
语句块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=0while 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.7for 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 instring: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=11X2=2 2X2=41X3=3 2X3=6 3X3=91X4=4 2X4=8 3X4=12 4X4=161X5=5 2X5=10 3X5=15 4X5=20 5X5=251X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=361X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=491X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=641X9=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=11X2=2 2X2=41X3=3 2X3=6 3X3=91X4=4 2X4=8 3X4=12 4X4=161X5=5 2X5=10 3X5=15 4X5=20 5X5=251X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=361X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=491X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=641X9=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 = 1a1= 1
print(a2,end=' ')print(a1,end=' ')while True:
a= a2 +a1if 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= 1a1= 1count= 2
whileTrue:
a= a2 +a1if count == 100:print(a,end=' ')breakcount+= 1a2=a1
a1=a
执行结果:573147844013817084101
5.5 求10万以内的所有质数
一般考虑时间复杂度,算法最优,但开始刚接触算法,先不用考虑这么多
#先求20以内的所有质数,再求10万以内的所有质数
#-*- coding:utf-8 -*-
#version:python3.7
for i in range(2,20):
count=0for 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