堆叠和嵌套的if-else语句不移动到下一个i

2024-04-27 09:52:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在搜索堆叠/嵌套的if-else语句,elif的语句似乎不能满足我的需要。 其目的是打印所有偶数、平方数和立方体数,并突出显示哪些是平方数和立方体数。 这是我的代码:

import math
rn = 0
for n in range(1,100,1):
    if rn is 0:
        if n%2 is 0:
            print(n, " is an even number")           
        else:
            rn = 1         
        if math.sqrt(n) is int:
            print(n, " is a square number")
            if n**(1/3) is int:
                print(n, " is a Cube number too")
                continue
            else:
                print(n, "is only a square number")
                continue

        else:
            rn = 1
    if rn is 1:
        if n**(1/3) is int:
            print(n, " is a Cube only number")
        else:
            rn = 0
            continue

在递增n之前,代码不会移到下一个if语句

输出:

   2  is an even number
   4  is an even number
   6  is an even number

有没有其他方法可以继续或中断,但保持在同一个循环中? 提前谢谢


Tags: 代码annumberifismathrn语句
1条回答
网友
1楼 · 发布于 2024-04-27 09:52:42
import math
rn = 0
d=0.
for n in range(1,100,1):
    if rn is 0:
        if n%2 is 0:
            print(n, " is an even number")
        else:
            rn = 1
        if math.sqrt(d).is_integer():
            print(n, " is a square number")
            if float(n**(1-3)).is_integer():
                print(n, " is a Cube number too")
                continue
            else:
                print(n, "is only a square number")
                continue

        else:
            rn = 1
    if rn is 1:
        if n**(1-3) is int:
            print(n, " is a Cube only number")
        else:
            rn = 0
            continue

这将起作用,使用float.is_integer(),以前的问题是is int为任何输入返回False。还要注意,这将给出从1到100的所有数字>> {} is a square number,因为你在做math.sqrt(d),而d0,所以平方根总是整数0

相关问题 更多 >