如何让Python质数判断程序仅输出单一结果?
解决质数判断代码多次输出的问题
原代码的问题在于,else分支是和if n%i==0配对的,而非和for循环配对。所以每次循环中只要n不能被i整除,就会执行一次print("Prime number"),导致重复输出。
下面提供两种修改思路,避免多次打印:
方法一:使用标记变量
先初始化一个标记变量表示是否为质数,循环中若找到因数则修改标记并终止循环,循环结束后根据标记输出结果:
n = int(input("Enter any integer")) is_prime = True for i in range(2, n): if n % i == 0: print(n, " is not a prime number") is_prime = False break if is_prime: print("Prime number")
方法二:利用for-else结构
for-else的逻辑是:当for循环**正常执行完毕(没有被break中断)**时,才会执行else块。这样就能确保质数情况只输出一次:
n = int(input("Enter any integer")) for i in range(2, n): if n % i == 0: print(n, " is not a prime number") break else: print("Prime number")
另外,你尝试的continue版本没有输出是因为:当n是质数时,循环会正常走完所有i,但循环结束后没有任何代码触发打印操作,所以无输出。
内容的提问来源于stack exchange,提问作者Soumyadeep Chakraborty
相关产品推荐
相关产品推荐

