程序异常是python语言基本控制结构_python-控制结构

一、程序基本结构

程序流程图

1577015-20190922192922629-223477367.png

二、简单分支

1、条件判断

if:

else if:

else:

2、关系操作符:<,<=,==,>=,>,!=

and 、or 、 not

3、二分支结构 <表达式1>if<条件>else<表达式2>

#紧凑形式:简单表达式的二分支结构

guess = eval(input())

print("猜{}了".format("对" if guess == 99 else "错"))

4、例子

##求解二次方程

import math

def main():

a,b,c = eval(input('请输入方程的3个参数(a,b,c):'))

delta = b*b-4*a*c

if a == 0:

x = -b / c

print('\n该方程不是二次方程,只有一个解为:', x)

elif delta < 0:

print('该一元二次方程无实根!')

elif delta == 0:

discRoot = math.sqrt(delta) ##开根号

root1 = (-b + discRoot) / (2 * a)

print('\n该方程只有一个重根为:', root1)

else:

discRoot = math.sqrt(delta) ##开根号

root1 = (-b + discRoot) / (2*a)

root2 = (-b - discRoot) / (2*a)

print('\n该方程的两个实根分别为:',root1,root2)

main()

1577015-20190922202247640-1047688202.png

三、异常处理

1、try.......except......

1577015-20190922202547686-1886977327.png

while True:

try:

x = int(input('请输入一个数字:'))

break

except ValueError:

print('输入的不是一个有效数字!请再次输入!')

2、try......except........else......finally.....

try中有异常执行except,如无异常执行else,无论是否发生异常都要执行finally

1577015-20190922203106923-1634687333.png

def main():

try:

num1,num2 = eval(input('请输入两个数字做除法,以逗号为分隔:'))

result = num1 / num2

except ZeroDivisionError:

print('0不能做除数!')

except SyntaxError:

print('少输入一个逗号!')

except:

print('输入有误!')

else:

print('没有错误,计算结果为:',result)

finally:

print('最后执行语句。。。')

main()

##求解二次方程

import math

def main():

try:

a,b,c = eval(input('请输入方程的3个参数(a,b,c):'))

delta = b*b-4*a*c

discRoot = math.sqrt(delta) ##开根号

root1 = (-b + discRoot) / (2*a)

root2 = (-b - discRoot) / (2*a)

print('\n该方程的两个实根分别为:',root1,root2)

except ValueError as excObj:

if str(excObj) == 'math domain error':

print('没有实根!')

else:

print('没有给到正确的系数')

except NameError:

print('输入的并非3个数字!')

except TypeError:

print('输入的并非数字')

except SyntaxError:

print('输入形式有误,可能没有输入逗号分隔')

except:

print('其他类型错误')

main()

实例1----找出三者最大

##N个数中最大值

def main():

n = eval(input('输入数值的个数:'))

max = eval(input('输入第一个数>>>>'))

for i in range(n-1):

x = eval(input('输入下一个数>>>>'))

if x >= max:

max = x

print('最大值为:',max)

main()

## max()函数

x,y,z = eval(input('输入3个数:'))

print('最大值为:',max(x,y,z))

实例2----身体质量指数BMI

1577015-20191109180120903-329565012.png

##身体质量指数BMI

try:

height , weight = eval(input('请输入身高/体重【以逗号隔开,例:1.66,60】:'))

bmi = weight / pow(height,2)

print('BMI数值为{:.2f}'.format(bmi))

who , nat = '',''

if bmi <18.5:

who,nat = '偏瘦','偏瘦'

elif 18.5<= bmi <24:

who, nat = '正常', '正常'

elif 24<= bmi <25:

who, nat = '正常', '偏胖'

elif 25 <= bmi < 28:

who, nat = '偏胖', '偏胖'

elif 28 <= bmi < 30:

who, nat = '偏胖', '肥胖'

else:

who, nat = '肥胖', '肥胖'

print('BMI指标为:国际"{}",国内"{}"'.format(who,nat))

except:

print('输入格式不正确')

四、循环结构

1、for循环

需要提供固定循环次数

## 循环列表中的每个元素

words = ['hello','sleeping','tommorrow']

for w in words:

print(w,len(w))

for i in range(5): i是在0--4

for i in range(1,6,2):

print(i,end='') ##135

2、while循环

continue---终止本次循环

break-----终止整个循环

通常搭配if使用,尽量少用

循环语句中的else

当循环没有被break退出时,执行else语句

for n in range(2,10):

for x in range(2,n):

if n % x == 0: ## 余数

print(n,'=',x,'*',n // x) ##不大于n除以x的最大整数

break

else:

print(n,'是一个素数')

3、交互式循环

##交互式循环

##求平均数

sum = 0

count = 0

moredata = 'yes' ##字符串索引

while moredata[0] == 'y':

x = eval(input('输入一个数字:'))

sum += x

count += 1

moredata = input('你需要输入更多数字吗(yes/no)?')

print('平均数为:',sum/count)

4、哨兵循环

##哨兵循环1

##求平均数

##选取<0的数作为哨兵

sum = 0

count = 0

x = eval(input('输入一个数字(输入负数即停):'))

while x>=0:

sum += x

count += 1

x = eval(input('输入一个数字(输入负数即停):'))

print('平均数为:',sum/count)

##哨兵循环2

##求平均数

##选取空字符''(没有空格)作为哨兵

sum = 0

count = 0

xStr = input('输入一个数字(直接回车即停):')

while xStr != '':

x = eval(xStr)

sum += x

count += 1

xStr = input('输入一个数字(直接回车即停):')

print('平均数为:',sum/count)

5、文件循环

##文件循环

##求平均数

infile = open('数中', 'r')

sum = 0

count = 0

for line in infile: ##遍历文件每一行

sum += eval(line)

count += 1

print('平均数为:',sum/count)

##文件循环

##求平均数

infile = open('数中', 'r')

sum = 0

count = 0

line = infile.readline()

while line != '':

sum += eval(line)

count += 1

line = infile.readline()

print('平均数为:',sum/count)

6、嵌套循环

##嵌套循环

##求平均数

infile = open('数中', 'r')

sum = 0

count = 0

line = infile.readline()

while line != '':

for xStr in line.split(','): ## 文件只有一行数字,用,隔开

sum += eval(xStr)

count += 1

line = infile.readline()

print('平均数为:',sum/count)

7、死循环

while True:

8、后测循环:条件语句在循环体的后面

python没有后测循环语句,可以通过while或break实现

##后测循环,while

num = -1

while num < 0:

num = eval(input('请输入一个正数:'))

##后测循环,break

while True:

num = eval(input('请输入一个正数:'))

if num >= 0 :break

五、布尔表达式

1、True /// False

2、运算符优先级 not >> and >> or

绝对值函数 abs()

3、数字:0--False,非0--True

字符串:''--False,非空--True

序列:[]--False,非空序列--True

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值