简介
Python代码在执行的时候是按照自上向下顺序执行的
通过流程控制语句可以改变程序的执行顺序,也可以让指定的程序反复执行多次
流程控制语句分为两大类:条件判断语句、循环语句
条件判断语句
语法: if 条件表达式 :语句
执行流程:if 语句在执行的时候会对条件表达式进行求值判断,如果是True,则执行if语句,否则,不执行
默认情况下,if 语句只会控制紧随其后的语句,如果希望 if 可以控制多条语句,则 if 后面可以跟一个代码块,代码块是一种代码分组的机制。如果要写代码块,语句就不能紧随其后了,而是要写在下一行
语法
if 条件表达式:
代码块
Python中的缩进是4个空格,1个Tab
input()让用户输入东西,返回字符串
if...else...
if ... elif ... else
语法:
if 条件表达式 :
代码块
elif 条件表达式:
代码块
elif 条件表达式:
代码块
else :
代码块
语句在执行的时候,会自上向下依次对条件表达式进行求值判断,如果表达式的结果为True,则执行当前代码块,然后语句结束,如果表达式结果为False,则继续执行,直到找到True为止;如果所有的条件表达式为False,则执行else后面的代码块
''' 题目1:输入一个数字,程序判断数字是奇数还是偶数 '''
num = int(input('请输入一个整数:'))
if num % 2 == 0:
pritn(num,'是偶数')
else:
print(num,'是奇数')
''' 题目2:判断闰年,如果一个年份可以被4整除但不能被100整除, 或者可以被400整除,这个年份就是闰年 '''
year = int(input('请输入要判断的任意年份:'))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print(year,'是闰年')
else:
print(year,'不是闰年')
''' 题目3:我家狗五岁了,5岁的狗相当于多大年纪的人? 狗的前两年每一年相当于人类的10.5岁,然后每增加一年就增加四岁。 5岁的狗相当于人类的年龄 = 10.5 * 2 + 4 * 3 = 21+12 = 33(岁) '''
dog_age = float(input('请输入狗的年龄'))
if dog_age > 0:
if dog_age <= 2:
like_person_age = dog_age * 10.5
else:
like_person_age = 2 * 10.5
like_person_age += (dog_age - 2) * 4
print(dog_age,'岁的狗年龄相当于',like_person_age,'岁的人')
else:
print('年龄输入错误!')
''' 题目4:从键盘输入小明的期末成绩, 当成绩为100时,奖励一辆汽车, 成绩为[80,99],奖励一台iPhone 成绩为[60,79],奖励一本参考书 其它,什么奖励也没有 '''
score = int(input('请输入分数(0-100):'))
#检查用户的输入是否合法
if 0 <= score <= 100:
if score == 100:
print('宝马一台')
elif score >= 80:
print('苹果手机一台')
elif score >= 60:
print('参考书一本')
else:
print('跪下!')
else:
print('您输入的成绩不合法!')
循环语句
循环语句分为两种:while循环、for循环
while循环
语法:
while 条件表达式:
代码块
执行流程:
while语句执行时,会先对while后的条件表达式进行求值判断,如果判断结果为True,则执行循环体(代码块);循环执行完毕后再对条件表达式进行求值判断,以此类推,直到判断结果为False,则循环终止
注意:慎用!条件不能写死,不能死循环!
循环的三个要件
-
初始化表达式,初始化变量 i = 0
-
条件表达式,设置循环要执行的条件
i = 0
while i < 10:
i += 5
print(i)
-
创建一个要执行十次的循环
'''求100以内所有奇数的和'''
res = 0
i = 0
while i < 100:
i += 1
if i % 2 != 0:
res += i
print(res)
# 获取用户输入的任意数字,判断其是否为质数
num = int(input('请输入一个大于1的整数:'))
#判断num是否是质数,
#质数只能被1和它自身整除的数就是质数
i = 2
flag = True
while i < num:
if num % 2 == 0:
flag = False
i += 1
if flag:
print(num,'是质数')
else:
print(num,'不是质数')
#创建一个可以控制循环来控制图形的高度
'''
* * * * * *
* * * * * *
* * * * * *
* * * * * *
* * * * * *
'''
i = 0
#控制行高
while i < 5:
j = 0
#控制行宽
while j < 6:
print('* ',end='')
j += 1
print()
i += 1
# 打印99乘法表
i = 0
#控制行高
while i < 9:
j = 0
#控制行宽
while j < i+1:
print(f'{j+1}*{i+1}={(i+1)*(j+1)}',end='\t')
j += 1
print()
i += 1
break可以用来立即退出循环语句
continue可以用来跳过当次循环
break和continue只对当次循环起作用(有内外循环的时候)
pass是用来在循环语句中进行占位的,没有pass占位的话,程序会报错
for循环
for...else...
问题
说明:我用的系统是深度,上面的sublime在使用input()函数时遇到了问题,无论是系统自带快捷键ctr+b还是使用自己设置的sublimeREFL中的python解释器都无法解决问题
问题诊断:里面的python解释器环境是python2,所以需要将解释器环境配置到python3,参考以下文章解决了问题
Python-更改sublimeREPL默认python版本(转载)_赵小红的博客-CSDN博客
时间模块
通过引用模块来对Python进行扩展
引入时间执行模块,来统计程序执行的时间
质数优化
只能被自己和1整除的数字是质数,优化前的代码如下
from time import *
#time()函数可以获取当前的时间,返回的单位是秒
#获取程序开始的时间
begin = time()
i = 2
while i <= 100:
flag = True
j = 2
while j < i :
if i % j == 0:
flag = False
j += 1
if flag :
pass
# print(i) #print 花费的时间大
i += 1
#获取程序结束时间
end = time()
print('程序花费了:',end - begin,'秒')
优化后
可以将计算的数字范围改大,对程序的性能再调优
对于质数的问题,其实没有必要将所有的数都检查一遍,找到 就可以了
from time import *
#time()函数可以获取当前的时间,返回的单位是秒
#获取程序开始的时间
begin = time()
i = 2
while i <= 100:
flag = True
j = 2
while j <= i ** 0.5 :
if i % j == 0:
flag = False
break
j += 1
if flag :
pass
# print(i) #print 花费的时间大
i += 1
#获取程序结束时间
end = time()
print('程序花费了:',end - begin,'秒')