首页 > 解决方案 > 有没有办法在 python 的单行中使用 for 打印范围

问题描述

所以,这是我计算一个数字是否为素数的代码。如果一个数字是否为素数,它也会打印出该数字的除数。当我尝试在单行的列表中打印非素数的除数时,我的问题就出现了。

x=int(input())
if x<0:
    print("you did not enter a natural nubmer")
else:
    if x > 1:
        for i in range(2, x//2):
            if (x % i) == 0:
                print(x, "is not a prime number")
                for n in range (2, x-1):
                    if x%n==0:
                        print[n]
                break
        else:
            print(x, "is a prime nubmer")
            print([1,x])
    else:
        print(x, "is not a prime number")
        for n in range (2, x-1):
                    if x%n==0:
                        print[n]

例如 8,它会打印它不是素数,然后它会打印 [2] 和 [4],但我希望它打印 [2,4]。请帮忙,谢谢。

标签: pythonfor-loopprimesdivision

解决方案


list comprehension是关于:

divs = [n for n in range(2, x - 1) if x % n == 0]
print(divs) # [2, 4]

推荐阅读