提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
程序流程控制在各编程语言中都得到了广泛运用,是算法运行的程序框架。本章将以例题讲解的模式带领各位道友去领会程序流程控制之美。
提示:以下是本篇文章正文内容,下面案例可供参考
一、Python 语句执行的三种基本控制结构
1.顺序结构
2.选择结构
3.循环结构
二、结构详解
1.顺序结构
例:输入三角形的三条边的边长,计算三角形面积。
提示:三角形面积 = [h * (h-a)(h-b)(h-c)]^1/2
a,b,c为三角形的三边,h为三角形周长的一半
代码如下(示例):
import math #引入math库
a = float(input()) #引入变量
b = flaot(input())
c = float(input())
h = (a+b+c)/2 #代入算法公式
S = math.sqrt(h*(h-a)*(h-b)*(h-c))
if a+b>c and a-b<c: #判断输出
print(str.format("三角形的面积为:{0}", S))
else:
print("False")
2.单分支结构
例:输入两个数a和b,比较二者大小,使得a>b
代码如下(示例):
a = float(input()) #引入变量
b = float(input())
if a > b: #判断输出
print(str.format("数a = {0},数b = {1}", a,b))
else:
a,b=b,a #变量值置换
print(str.format("数a = {0},数b = {1}", a,b))
2.双分支结构
例:y = {sinx + 2*(x+e^4) ^2 - (x-1) ^3} ,x>=0 and
{ln(-5x) - |x^2 - 8x|/7x + e} , x<0
计算上述分段函数。
代码如下:
from math import * #引入math库用于计算
x = float(input("请输入x: ")) #引入数字x
if (x>=0):
y = sin(x) + 2*sqrt(x+e**4) - (x+1)**3
else:
y = log(-5*x) - fabs(x**2 - 8*x)/(7*x) + e
print(str.format("y ={0}", y))
3.多分支结构
例1:已知百分制分数mark,将其转化为5级制(优、良、中、及格、不及格)的评定等级grade。
评定条件如下:
优:mark>=90
良:80<= mark < 90
中:70<= mark < 80
及格:60<= mark <70
不及格:mark <60
代码如下:
mark = float(input("请输入您的成绩: "))
if mark >= 90:
print("优")
elif mark >= 80:
print("良")
elif mark >= 70:
print("中")
elif mark >= 60:
print("及格")
else:
print("不及格")
例2:已知坐标点(x,y),判断其所在象限(if_coordinate.py)
代码如下:
x, y = map(int, input("请输入x,y ").split(",")) #注意:输入的格式要与变量展示的格式相同。如希望输出x,y 需要输入3,2
if (x==0 and y==0): #先用最难满足的条件判断,再逐渐放宽条件。
print('原点')
elif (x==0):
print("在y轴")
elif (y==0):
print("在y轴")
elif (x>0 and y>0):
print("在第一象限")
elif (x>0 and y<0):
print("在第四象限")
elif (x<0 and y>0):
print("在第二象限")
else:
print("在第三象限")
4.if语句嵌套
例:计算并输出一元二次方程的两个根。如果判别式b^2 - 4ac <0,显示“方程无实根”的提示信息。
a, b, c = map(float, input("请依次输入a,b,c ").split(","))
d = b**2 - 4*a*c #注意不要嵌套过多,会出现math domain error錯誤
x1 = (-b+d)/(2*a); x2 = (-b-d)/(2*a) #表示x1,x2
if d < 0:
print("方程无实根")
else:
print(x1, x2)
5.选择结构综合举例
例1:输入三个数a,b,c。从大到小排序。
法1:暴力法(无脑输出)
a, b, c = map(int, input('请依次输入a,b,c ').split(",")) #暴力法(直接找出所有情况)
if b == max(a,b,c):
if a > c:
print(b,a,c)
else:
print(b,c,a)
elif c == max(a,b,c):
if a > b:
print(c,a,b)
else:
print(c,b,a)
else:
if b > c:
print(a,b,c)
else:
print(a,c,b)
法2:(杯子理论:想交换n个杯子里的水需要准备n+1个杯子。)
a, b, c = map(int, input('请依次输入a,b,c ').split(",")) #强制法(强制让a>b>c,不满足条件就换值,如a<b ,交换a,b的值
if (a<b): t = a; a = b; b = t
if (a<c): t = a; a = c; c = t
if (b<c): t = b; b = c; c = t
print(a, b, c)
法3(列表法)
a = [] #先创建一个空列表
for i in range(1, 4): #循环输入数字
b = int(input('请输入第'+str(i)+"个正整数: "))
a.append(b) #每输入一个数字就添加到列表中
a.sort(reverse=True) #将列表元素逆序排列
print(a)
法4(字典法)
a, b, c = map(int, input("请依次输入a,b,c ").split(","))
d = {"a":a, "b":b, "c":c} #创建字典
for i in sorted(d, key=d.get, reverse=True): #获取字典的值并逆序排列
print(d[i], end=",") #输出值
例2:判断某年是否为闰年。闰年判断条件:年份可以被4整除不能被100整除,或者能被400整除。
代码如下
法1:
y = int(input("请输入年份: ")) #结构判断法
if (y % 4 == 0 and y % 100 != 0) or (y % 400 == 0):
print("闰年")
else:
print("不是闰年")
法2:
y = int(input("请输入年份: ")) #嵌套法
if y % 400 == 0:
print("闰年")
else:
if y % 4 == 0:
if y % 100 != 0:
print("闰年")
else:
print("不是闰年")
else:
print("不是闰年")