当前位置: 首页 > 后端技术 > Python

Python从入门到精通100天-Day02-分支结构

时间:2023-03-26 16:30:53 Python

分支结构应用场景回家路上买一个西瓜,有火龙果就买两个;猜猜程序员会买回来什么?Python中if语句的使用在Python中,可以使用if、elif、else关键字来构造分支结构。所谓关键字,就是有特殊含义的词,比如if、else就是专门用来构造分支结构的关键字,显然你不能把它当作变量名来使用(实际上是不允许用来作为其他标识符的)。下面的例子演示了如何构造一个分支结构。"""用户认证"""username=input('请输入用户名:')password=input('请输入密码:')#如果想在终端不回显的情况下输入密码,可以使用getpass模块的getpass函数#importgetpass#password=getpass.getpass('请输入密码:')ifusername=='admin'andpassword=='123456':print('认证成功!')else:print('Authenticationfailed!')唯一需要说明的是,与C/C++、Java等语言不同,Python不使用花括号来构造代码块,而是使用缩进来设置代码层次。如果if条件为真,则需要执行多条语句,只要多条语句的缩进相同,换句话说,如果连续的代码保持相同的缩进,那么它们就属于同一个代码块,即相当于一个整体的执行。当然,如果你想构造更多的分支,可以使用if...elif...else...结构,比如下面的分段函数求值。$$f(x)=\begin{cases}3x-5&\text{(x>1)}\\x+2&\text{(-1}\leq\text{x}\leq\text{1)}\\5x+3&\text{(x<-1)}\end{cases}$$"""分段函数求值3x-5(x>1)f(x)=x+2(-1<=x<=1)5x+3(x<-1)"""x=float(input('x='))ifx>1:y=3*x-5elifx>=-1:y=x+2else:y=5*x+3print('f(%.2f)=%.2f'%(x,y))当然根据实际开发的需要,分支结构可以嵌套,比如判断通关后是否需要根据获得的宝物或道具的数量给自己的表现打一个等级(比如点亮两颗或三颗星星),那么我们需要在if里面构造一个新的分支结构,同理elif和else中也可以构造新的分支,我们称之为嵌套分支结构,也就是说上面的代码也可以写成下面这样。"""分段函数计算3x-5(x>1)f(x)=x+2(-1<=x<=1)5x+3(x<-1)"""x=float(input('x='))ifx>1:y=3*x-5else:如果x>=-1:y=x+2else:y=5*x+3print('f(%.2f)=%.2f'%(x,y))解释:你可以自己感受一下这两种写法哪个更好。“扁平化优于嵌套式。”之所以提倡代码“扁平化”,是因为嵌套结构的嵌套层次多了之后,代码的可读性会受到严重影响,所以能用扁平化结构嵌套的就别用了。Exercise练习1:交换英制单位和公制单位"""交换英制单位英寸和公制单位厘米"""value=float(input('请输入长度:'))unit=input('请输入单位:')ifunit=='in'orunit=='inch':print('%finch=%fcm'%(value,value*2.54))elifunit=='cm'orunit=='cm':print('%fcm=%finches'%(value,value/2.54))else:print('Pleaseenteravalidunit')Exercise2:Rollthedicetodecidewhattodo"""Rollthedice决定做什么"""fromrandomimportrandintface=randint(1,6)ifface==1:result='singer'elifface==2:result='dance'elifface==3:result='learnThedogbarks'elifface==4:result='dopush-ups'elifface==5:result='readthetonguetwister'else:result='tellabadjoke'print(result)描述:上述代码中使用了random模块的randint函数生成指定范围内的随机数来模拟掷骰子。Exercise3:Convertthegradesystemfromthe100-pointsystemtogradesystem"""convertthegradesystemfromthe100-pointsystemtothegradesystem.Gradeabove90points-->A80~89-->B70~79-->C60~69-->D60以下-->E"""score=float(input('请输入成绩:'))ifscore>=90:grade='A'elifscore>=80:grade='B'elifscore>=70:grade='C'elifscore>=60:grade='D'else:grade='E'print('对应的成绩是:',grade)练习4:输入三边的长度,如果能组成三角形就计算周长和Area"""判断输入的边长是否能组成三角形,如果能,则计算三角形的周长和面积"""importmatha=float(input('a='))b=float(input('b='))c=float(input('c='))ifa+b>canda+c>bandb+c>a:print('周长:%f'%(a+b+c))p=(a+b+c)/2area=math.sqrt(p*(p-a)*(p-b)*(p-c))print('Area:%f'%(area))else:print('Cannotformatriangle')解释:在上面的代码中,使用了math模块的sqrt函数来计算平方根。使用边长计算三角形面积的公式称为海伦公式。练习5:个人所得税计算器。"""输入月收入和五险一金计算个人所得税"""salary=float(input('本月收入:'))insurance=float(input('五险一金:'))diff=salary-insurance-3500ifdiff<=0:rate=0deduction=0elifdiff<1500:rate=0.03deduction=0elifdiff<4500:rate=0.1deduction=105elifdiff<9000:rate=0.2deduction=555elifdiff<35000:rate=0.25deduction=1005elifdiff<55000:rate=0.3deduction=2755elifdiff<80000:rate=0.35deduction=5505else:rate=0.45deduction=13505tax=abs(diff*rate-deduction)print('个人所得税:¥%.2fYuan'%tax)print('实际收入:¥%.2fYuan'%(diff+3500-tax))解释:以上代码使用Python内置的abs()函数取绝对值处理-0问题。本文基于github开源项目(作者:罗浩)https://github.com/jackfrued/...我是从这个项目入手Python的,本系列文章是为了记录学习过程,分享给有兴趣的朋友们。基于项目https://github.com/skygiter/P新建一个项目...