Python 100天练习 — Day3 分支结构

Python 100天练习 专栏收录该内容
9 篇文章 0 订阅

本文以GitHub上100天python从新手到大师为素材,规划为约100天的练习,每次的学习和总结均发在这里。有错误的地方还请朋友们指正。

应用场景

在Day1 &2 两天的程序中,我们的代码都属于顺序结构,即一条线下来的代码。以Day2练习中“华氏度转换摄氏度”为例做流程图:

将华氏度转换为摄氏度流程图
但在现实中也包含有需要条件判断才能够进行下一步操作的场景:

例如在计算分段函数的过程中需要先行判断自变量 x x x的取值属于哪个范围才能够进一步计算因变量 f ( x ) f(x) f(x)的值。

我们称之为“分支结构”或“选择结构”

在Python中可以使用 if - else语句来实现,if else elif 是构造分支结构的关键词,关键词是python中具备特殊含义的单词,在之前也写过变量名称不可与关键词冲突。

在Python中不适用花括号{ }来确定层次结构,而使用缩进(Tab)来确定层次结构。如果if条件成立的条件下需要执行多条语句,那么只要保持多条语句具有相同的缩进就可以了。

if—else结构

if—else是最简单的分支结构,只有if一个判断条件。大体语法结构如下:
(只示意)

if 第一个条件:
	# 如果判断条件是True则执行这条语句
	执行语句
else:
	# 如果判断条件是False则执行这条语句
	执行语句

下面是一个简单例子,输入用户名和密码,如果用户名为“admin”,密码为“123456”则登录成功,否则登陆失败。

 """
 输入账号名称和密码
 如果账号名称为admin,密码为123456则登陆成功,否则登陆失败
 """
 username = input("请输入账户名称: ")
 password = input("请输入密码: ")

 if (username == "admin") and (password == "123456"):
     print("登陆成功")
 else:
     print("登陆失败")

if - elif - else 结构

在其他的场景中,还会有多个条件判断的情况出现,例如分段函数中出现3个区间的时候,简单的if - else就没有办法解决这个问题。所以我们可以采用if - elif - else结构来解决问题:

下面是一个简单示例:利用if - elif - else 结构实现这个分段函数
实现这个分段函数
代码如下:

"""
分段函数的实现
    3x - 5 (x > 1)
y = x + 2 (-1 ≦ x ≦ 1)
    5x + 3 (x < -1)
"""

x = float(input("输入x的值: "))
if x > 1:
    y = 3*x -5
elif x >= -1:
    y = 5*x + 3
else:
     y = x + 2

print("f(%.2f)= %.2f" %(x,y))

if嵌套

当然上面的分段函数问题也可以用if嵌套的方式来实现,需注明在if elif else下面多可以进行嵌套


"""
嵌套
"""
x = float(input("输入x的值: "))

if x > 1:
    y = 3 * x - 5
else:
    if x < -1:
        y = 5 * x + 2
    else:
        y = 5 * x + 3

print("f(%.2f)= %.2f" %(x,y))

但不推荐使用嵌套if的方式进行,嵌套语句会影响代码的可读性。

练习

下面是Day3的3道练习题,与官方给出的解法有出入,如果有啥错误问题还请指出~~

练习1 英寸和厘米互相转换

Tips:
转换公式:1 英寸 = 2.54 厘米

"""
英寸和厘米互相转换
1英寸inch  = 2.54 厘米centimeter
"""
vlaue = float(input(("请输入长度值: ")))
unit = input("输入单位: ")

if unit == "in" or unit == "英寸":
    print("%.2f 英寸 为 %.2f 厘米" %(vlaue,vlaue * 2.54))
elif unit == "cm" or unit == "厘米":
    print("%.2f 厘米 为 %.2f 英寸" %(vlaue,vlaue%2.54))
else:
    print("输入不规范,请重新输入")
练习2 百分制成绩转换为等级制

要求:
90分以上(含90分 输出A;
80分-90分(不含90分)输出B;
70分-80分(不含80分)输出C;
60分-70分(不含70分)输出D;
60分以下输出E。


"""
将百分制成绩分数转换为等级制成绩
转换公式如下:
如果输入的成绩在
90分以上(含90分 输出A;
80分-90分(不含90分)输出B;
70分-80分(不含80分)输出C;
60分-70分(不含70分)输出D;
60分以下输出E。
"""

score = float(input("请输入成绩: "))
if score >= 90:
    print("该成绩为A")
elif score >= 80:
    print("该成绩为B")
elif score >= 70:
    print("该成绩为C")
elif score >= 60:
    print("该成绩为D")
else:
     print("该成绩为E")
练习3:给出三条边,判断是否可以组成三角形,如果可以的话计算周长和面积

Tip:利用边长计算三角形面积公式为海伦公式

a r e a = p × ( p − a ) × ( p − b ) × ( p − c ) area=\sqrt{p\times(p-a)\times(p-b)\times(p-c)} area=p×(pa)×(pb)×(pc)

具体的推导可以在这里浏览(wiki被墙了好像,导到百度百科将就一下)→链接

"""
判断输入边长是否可以成为三角形,如果可以的话计算周长和面积
利用边长计算三角形面积的公式为海伦公式:
设周长的一半为p
area = √p(p-a)(p-b)(p-c)
"""
a = float(input("输入第一条边的长度: "))
b = float(input("输入第二条边的长度: "))
c = float(input("输入第三条边的长度: "))

if a + b > c and a + c > b and b + c > a:
    perimeter = a + b + c
    p = perimeter / 2
    area = (p * (p - a) * (p - b) * (p - c))**0.5
    print("perimeter is %.2f \narea is %.2f" %(perimeter,area))
else:
    print("该边长组不成立三角形")

本文在作者学习完文字内容后,以列出标题大纲的方式让自己填充内容,以求对学习的内容有一个复习的作用,同时对照文字学习材料进行修正,尽量保证不误人子弟。如有错误之处还请朋友们多多指正,谢谢!

  • 1
    点赞
  • 0
    评论
  • 5
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值