wadmdmaw 发表于 2022-1-24 15:07:35

005讲课后作业

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

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

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

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

动动手这道题错在没有讲input的内容放进int中,但这道题不太理解为什么可以连用三个if而没有else啊?如果可以这样的话那else有什么意义呢,不是可以一直if了么?

阿萨德按时 发表于 2022-1-24 15:18:03

if和else或者elif一起用的话只会执行其中一条,用三个if的话每个if都会判断一次

阿萨德按时 发表于 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")

翼是孤独 发表于 2022-1-24 15:26:55

确实可以,这种比较少的分支写成这样虽然可读性更好,但这样在底层编译占用的字节码更大,因为每次都要做一次判断,执行速度也更慢(可能某些编译器自带优化)

试想一下,如果分支内还有分支,很多分支的情况下你是否能把所有的情况都列举出来,然后if
而且这里是判断条件 比较简单的情况,比如判断条件是if(.................)很多,很难将所有的情况分清楚

御坂10017 发表于 2022-1-24 16:06:46

一直if无法穷举所有状态

YSW9527 发表于 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("第一个数和第二个数一样大!")

wadmdmaw 发表于 2022-1-25 17:58:47

阿萨德按时 发表于 2022-1-24 15:21
试一下这个就明白了

你好,输出的是i和b,可以请问一下那个elif的用法是什么么,还有所以多个if在一起的时候每个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")。

wadmdmaw 发表于 2022-2-25 13:59:00

阿萨德按时 发表于 2022-1-26 09:03
个人理解是elif可以理解为else if的组合,就是后面可以跟判断条件的else,elif也是可以无限嵌套的。不是 ...

不好意思回复晚了,谢谢!
页: [1]
查看完整版本: 005讲课后作业