python-控制结构

一、程序基本结构

程序流程图

 

 

二、简单分支

 1、条件判断

      if<condition>:<body>  

      else if<condition>:<body>  

      else:<body>  

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()

 

 

三、异常处理

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

 

while True:
    try:
        x = int(input('请输入一个数字:'))
        break
    except ValueError:
        print('输入的不是一个有效数字!请再次输入!')

 

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

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

 

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

 

##身体质量指数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

 

 

 

 

 

 

 

 

  

 

 

 

 

 

posted @ 2019-09-29 17:21  kuluma  阅读(462)  评论(2编辑  收藏  举报