Python 程序流程控制(顺序结构与选择结构)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

程序流程控制在各编程语言中都得到了广泛运用,是算法运行的程序框架。本章将以例题讲解的模式带领各位道友去领会程序流程控制之美。

提示:以下是本篇文章正文内容,下面案例可供参考

一、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("不是闰年")
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值