鱼C论坛

 找回密码
 立即注册
查看: 2068|回复: 2

[已解决]python求助

[复制链接]
发表于 2023-3-17 08:38:42 | 显示全部楼层 |阅读模式

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

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

x
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跳出的原因吗?
最佳答案
2023-3-17 08:45:27
在第一个例子中,判断 num==1 的语句是在 if 和 elif 之外的,所以当 num 等于 1 时,不论前面的条件是否成立,都会执行 break 语句跳出循环。

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

因此,在第一个例子中,只要 num 等于 1,程序就会 break跳出循环;而在第二个例子中,则永远不会跳出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-17 08:45:27 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +1 鱼币

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

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

因此,在第一个例子中,只要 num 等于 1,程序就会 break跳出循环;而在第二个例子中,则永远不会跳出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-17 08:58:34 | 显示全部楼层
1的if...elif是一个判断语句,if 是一个语句。每次执行完上面那个if...elif语句之后,还会去执行下面那个if
2if..elif...elif是一个判断语句,同一循环执行其中一个条件其他两个就不会执行

两个的区别就是:第一个有两个判断语句if...elif和if,第二个只有一个判断语句if..elif...elif
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 07:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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