python的if和else_Python:if-else语句和三元运算符,Pythonifelifelse,与,操作符

if-elif-else语句

题目概述:按照 100 分制,90 分以上成绩为 A,80 到 90 为 B,60 到 80 为 C,60 以下为 D,写一个程序,当用户输入分数,自动转换为ABCD 的形式打印。

首先我们先使用嵌套 if 语句来实现:

if(条件): …else:…语句用于控制程序的执行。

当(判断条件)成立时(非零),执行后面的语句。else 为可选语句,当条件不成立时则执行其他语句。

i = int(input('请输入分数:'))

if 90 <= i <= 100:

print('A')

else:

if 80 <= i < 90:

print('B')

else:

if 60 <= i < 80:

print('C')

else:

if 0 <= i < 60 :

print('D')

else:

print('输入错误')

这样写是完全没有问题的,但是随着条件的增加,这种缩进只会越来越多,极其影响代码的可读性与美观性,而且初学者极易因为缩进问题而产生错误。

python的代码用缩进表示从属(一般缩进为四个空格),所以python对缩进非常的敏感,对代码格式要求非常严格。

报错信息:IndentationError: unexpected indent;IndentationError: expected an indented block。

如果遇到这类报错,就可能是代码里tab和空格缩进的问题,你需要检查下tab和空格了”。

我们不妨把代码简化一下:

i = int(input('请输入分数:'))

if 90 <= i <= 100:

print('A')

if 80 <= i < 90:

print('B')

if 60 <= i < 80:

print('C')

if 0 <= i < 60 :

print('D')

if i < 0 or i > 100:

print('输入错误')

这样的写法的确美观了很多,但是由于所有的if都是并列关系,所以系统要把所有条件判断完了才会反馈答案给我们,这样的机制会极其消耗系统资源。

(当我输入100时,即使已经满足第一个if条件了,但系统并不会马上反馈A,而是把所有if条件都判断后才进行反馈)

如果使用if-elif-else语句,上面这些问题就可以迎刃而解啦。

elif 等同于 else if。

要避免嵌套结构的 if … else …,我们可以用 if … 多个elif … else … 的结构,一次写完所有的规则:

while 1: #可以循环输入

i = int(input('请输入分数:'))

if 60 <= i < 80 : #为提高效率,把平均成绩放第一

print('C') #(输入得比较多)

elif 80 <= i < 90 :

print('B')

elif 90 <= i <= 100 :

print('A')

elif 0 <= i < 60 :

print('D')

else:

print('输入错误,',end = '')

三元操作符

Python 的作者在很长一段时间不肯加入三元操作符就是怕跟 C 语言一样搞出国际乱码大赛,蛋疼的复杂度让初学者望而生畏,不过,如果你一旦搞清楚了三元操作符的使用技巧,或许一些比较复杂的问题反而迎刃而解。

请将以下代码修改为三元操作符实现:

x, y, z = 6, 5, 4

if x < y:

small = x

if z < small:

small = z

elif y < z:

small = y

else:

small = z

完成这道题之前,我们先来重温一下三元操作符。

三元操作符格式:i =(成立) if (条件) else (不成立)

当条件成立时,变量i=左边,当条件不成立时,变量i=右边。

接着我们来看一下题目:

当第一个if条件满足时,要判断第二个if(有缩进)是否满足。

if x < y:

small = x

if z < small:

small = z

到这里我们可以得出:当 x < y时=x,当 x < y且x > z时=z

当第一个if条件不满足,则要判断elif是否满足,否则执行最后语句。

elif y < z:

small = y

else:

small = z

到这里我们可以得出:当y < z时=y否则=z

我们把这几个不等式代入 i =(成立) if (条件) else (不成立)中

得出:small = x if ( x < y and x < z ) else ( y if y < z else z )

注意:x > z时=z,反推得x > z时=x,如果两个都成立则=x,反之其中一个不成立都交给下一个条件判断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值