无恙JJ 发表于 2023-3-17 08:38:42

python求助

1111,
num=int(input("输入一个整数:"))
while True:
    if num%2==0:
      num1=int(num/2)
      print(num,"/2","=",num1)
      num=num1
    elif num%2==1:
      num1=num*3+1
      print(num, "*3+1=", num1)
      num = num1
    if num==1:
      break

2222,
num=int(input("输入一个整数:"))
while True:
    if num%2==0:
      num1=int(num/2)
      print(num,"/2","=",num1)
      num=num1
    elif num%2==1:
      num1=num*3+1
      print(num, "*3+1=", num1)
      num = num1
   elif num==1:
      break

为什么1和2例子中,搞成elif就结果不同?是break跳出的原因吗?

isdkz 发表于 2023-3-17 08:45:27

在第一个例子中,判断 num==1 的语句是在 if 和 elif 之外的,所以当 num 等于 1 时,不论前面的条件是否成立,都会执行 break 语句跳出循环。

而在第二个例子中,elif 条件语句中的 num==1 判断语句是前面的 if 的最后一个分支,但是前面的分支已经囊括了所有的情况,所以最后一个分支永远不会得到执行

因此,在第一个例子中,只要 num 等于 1,程序就会 break跳出循环;而在第二个例子中,则永远不会跳出循环

未泯 发表于 2023-3-17 08:58:34

1的if...elif是一个判断语句,if 是一个语句。每次执行完上面那个if...elif语句之后,还会去执行下面那个if
2if..elif...elif是一个判断语句,同一循环执行其中一个条件其他两个就不会执行

两个的区别就是:第一个有两个判断语句if...elif和if,第二个只有一个判断语句if..elif...elif
页: [1]
查看完整版本: python求助