首页 > 解决方案 > 没有进入 if 语句中的所有 for 循环

问题描述

我是python的新手,我试图制作一个小程序来检查数字是否同时是素数/非素数和奇数/偶数,我写的事实是for i in range(2,num):在那个条件下if (num % i) == 0:检查它是否是素数或不是,但它只是i=2在第一次检查并且在我输入第一个数字并且它增加之后,我要问的是为什么它不检查它是否是i=3..4..5..素数

因为当我第一次测试它并输入数字21时,它说它是质数,如果我21第二次测试它i=3并说它不是质数。

还有一个问题,我写了while (num != 0):这样程序应该在输入一个值后停止,0但它仍在运行,直到我多次输入它才能停止。

num = int(input("Inserez un nombre pour s'avoir s'il est pair/impair, premier/non premier. (0 pour finir) \n"))
while(num != 0):
    if (num > 1):
        for i in range(2,num):
           if (num % i) == 0:
               #print(num,"is not a prime number")
                if(num % 2 ==0):
                   print(num, "est non premier et pair")
                   num = int(input("Un autre numero : "))
                else:
                    print(num, "est non premier et impair")
                    num = int(input("Un autre numero : "))
           else:
               #print(num,"is a prime number")
                if(num % 2 == 0):
                   print(num, "est premier et pair")
                   num = int(input("Un autre numero : "))
                else:
                    print(num, "est premier et impair")
                    num = int(input("Un autre numero : "))
       
    elif (num <0):
       print("On voudrais un numero positif!")
       num = int(input("Un autre numero : "))
       
    elif (num == 1):
        print(num, "est premier et impair")
        num = int(input("Un autre numero : "))

我使用了programiz的源代码并对其进行了修改以检查它是奇数还是偶数,

原始代码:

num = 407

# To take input from the user
#num = int(input("Enter a number: "))

# prime numbers are greater than 1
if (num > 1):
   # check for factors
   for i in range(2,num):
       if (num % i) == 0:
           print(num,"is not a prime number")
           print(i,"times",num//i,"is",num)
           break
   else:
       print(num,"is a prime number")
       
# if input number is less than
# or equal to 1, it is not prime
else:
   print(num,"is not a prime number")

例子 :

测试:onlinegdb

标签: python

解决方案


休息很重要!

在您的代码中,for 循环正在循环,但在达到您的原始数字之前从未中断。一旦找到素数,您就需要跳出 for 循环。如果循环在没有中断的情况下完成,则将运行 else 语句。用户输入应该在循环之外并且在 else 语句之后。

附带说明一下,在 Python 中,if 和 while 语句不需要括号,尽管我没有编辑它们。

num = int(input("Inserez un nombre pour s'avoir s'il est pair/impair, premier/non premier. (0 pour finir) \n"))
while (num != 0):
    if (num > 1):
        for i in range(2, num):
            if (num % i) == 0:
                # print(num,"is not a prime number")
                if (num % 2 == 0):
                    print(num, "est non premier et pair")
                else:
                    print(num, "est non premier et impair")
                break
        else:
            if (num % 2 == 0):
                print(num, "est premier et pair")
            else:
                print(num, "est premier et impair")
        num = int(input("Un autre numero : "))

    elif (num < 0):
        print("On voudrais un numero positif!")
        num = int(input("Un autre numero : "))

    elif (num == 1):
        print(num, "est premier et impair")
        num = int(input("Un autre numero : "))

推荐阅读