流程控制语句

简介

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,'秒')

 

 优化后

 

 

可以将计算的数字范围改大,对程序的性能再调优

对于质数的问题,其实没有必要将所有的数都检查一遍,找到 \sqrt{i} 就可以了

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,'秒')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值