鱼C论坛

 找回密码
 立即注册
查看: 1601|回复: 8

[已解决]005讲课后作业

[复制链接]
发表于 2022-1-24 15:07:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")

if num1 < num2:
    print("第一个数比第二个数小!")

if num1 > num2:
    print("第一个数比第二个数大!")

if num1 == num2:
    print("第一个数和第二个数一样大!")

动动手这道题错在没有讲input的内容放进int中,但这道题不太理解为什么可以连用三个if而没有else啊?如果可以这样的话那else有什么意义呢,不是可以一直if了么?
最佳答案
2022-1-26 09:03:46
wadmdmaw 发表于 2022-1-25 17:58
你好,输出的是i和b,可以请问一下那个elif的用法是什么么,还有所以多个if在一起的时候每个if里面的分 ...

个人理解是elif可以理解为else if的组合,就是后面可以跟判断条件的else,elif也是可以无限嵌套的。不是不会执行,是只会执行一条,就是是从上往下判断的,只要有一条成立就会跳出整个if判断,执行下一个循环或者语句
i = 1
a = 1
b = 1
c = 1
d = 1
if i == 2:
    print("i")
elif a == 1:
    print("a")
elif c == 1:
    print("c")
elif d == 1:
    print("d")
else:print("e")
if b == 1:
    print("b")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-24 15:18:03 | 显示全部楼层
if和else或者elif一起用的话只会执行其中一条,用三个if的话每个if都会判断一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-24 15:21:53 | 显示全部楼层
试一下这个就明白了
i = 1
a = 1
b = 1
if i ==1:
    print("i")
elif a == 1:
    print("a")
else:print("c")
if b == 1:
    print("b")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-24 15:26:55 | 显示全部楼层
确实可以,这种比较少的分支写成这样虽然可读性更好,但这样在底层编译占用的字节码更大,因为每次都要做一次判断,执行速度也更慢(可能某些编译器自带优化)

试想一下,如果分支内还有分支,很多分支的情况下你是否能把所有的情况都列举出来,然后if
而且这里是判断条件 比较简单的情况,比如判断条件是if(.................)很多,很难将所有的情况分清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-24 16:06:46 | 显示全部楼层
一直if无法穷举所有状态
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-24 23:03:45 | 显示全部楼层
确实可以一直用if,但是这样编译器每次都要重新判断,效率就很低,if和else的话可以理解为:如果怎样就。。。。。,否则就。。。。。。,可以看出if和else搭配只会判断一次,然后做出相应的回应。。if和elif则是,先判断第一条,不满足再判断第二条,不满足再判断第三条,只要有一条满足就会自动跳过后面的elif语句。

num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")
#假设我输入1和2
if num1 < num2:#判断:1<2,执行这条语句
    print("第一个数比第二个数小!")

if num1 > num2:#判断:1不大于2,不执行
    print("第一个数比第二个数大!")

if num1 == num2:#判断:1不等于于2,不执行
    print("第一个数和第二个数一样大!")



#使用if和elif
num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")
#假设我输入1和2
if num1 < num2:#判断:1<2,执行这条语句
    print("第一个数比第二个数小!")

elif num1 > num2:#因为执行了第一条语句不在判断,跳过
    print("第一个数比第二个数大!")

elif num1 == num2:##因为执行了第一条语句不在判断,跳过
    print("第一个数和第二个数一样大!")

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-25 17:58:47 | 显示全部楼层
阿萨德按时 发表于 2022-1-24 15:21
试一下这个就明白了

你好,输出的是i和b,可以请问一下那个elif的用法是什么么,还有所以多个if在一起的时候每个if里面的分支会被忽略不执行么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-26 09:03:46 | 显示全部楼层    本楼为最佳答案   
wadmdmaw 发表于 2022-1-25 17:58
你好,输出的是i和b,可以请问一下那个elif的用法是什么么,还有所以多个if在一起的时候每个if里面的分 ...

个人理解是elif可以理解为else if的组合,就是后面可以跟判断条件的else,elif也是可以无限嵌套的。不是不会执行,是只会执行一条,就是是从上往下判断的,只要有一条成立就会跳出整个if判断,执行下一个循环或者语句
i = 1
a = 1
b = 1
c = 1
d = 1
if i == 2:
    print("i")
elif a == 1:
    print("a")
elif c == 1:
    print("c")
elif d == 1:
    print("d")
else:print("e")
if b == 1:
    print("b")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-25 13:59:00 | 显示全部楼层
阿萨德按时 发表于 2022-1-26 09:03
个人理解是elif可以理解为else if的组合,就是后面可以跟判断条件的else,elif也是可以无限嵌套的。不是 ...

不好意思回复晚了,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 06:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表