python - 没有进入 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
解决方案
休息很重要!
在您的代码中,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 : "))
推荐阅读
- ruby - 两者都实时获取 STDOUT 并提供 STDIN
- flutter - 如何使用颤振从 GoogleApi 获取附件 ID
- c - MISRA-C:2012 违反 for 循环中的增量 (++)
- c++ - C++ VS2017 使用命令替换定义宏
- python - 设置循环时出错!虽然/如果/否则/elif?
- discord.js - 如何在 discord.js 中发出静音命令?
- c++ - std::string 的转换运算符无法使用赋值
- c++ - 如何在 Qt 中最好地存储动态创建的小部件的数据
- javascript - Node.js:读取正在被覆盖的图片,仅引用初始图片
- php - 从 PHP 中的父类访问扩展类