我很难结束循环。我试过休息,继续和通过。程序需要能够读取非整数并重复代码行,直到满足为止。我不能打破循环。
prime_num = input('Please enter an integer >= 2: ')
while not(prime_num.isdigit() and int(prime_num)<1):
input('Please enter an integer >= 2: ')
for i in range(2,int(prime_num)+1):
for x in range(2,i):
if i%x == 0:
break
else:
print (i)
答案 0 :(得分:1)
第二次向最终用户询问整数时,未定义Prime Number。 试试
def prime_number():
prime_num = input('Please enter an integer >= 2: ')
while not(prime_num.isdigit() and int(prime_num)<1):
prime_num = input('Please enter an integer >= 2: ')
for i in range(2,int(prime_num)+1):
for x in range(2,i):
if i%x == 0:
break
else:
print (i)
这是你想要的吗?
答案 1 :(得分:0)
当你第二次要求输入时......
while not(prime_num.isdigit() and int(prime_num)<1):
input('Please enter an integer >= 2: ')
...您没有将结果分配回prime_num
,因此永远不会满足条件。
不是重复input()
行,而是采用不同的方法更有意义:
while True:
prime_num = input('Please enter an integer >= 2: ')
if prime_num.isdigit() and int(prime_num)>1:
break
# etc.
答案 2 :(得分:0)
Break在Python中运行良好。它打破了你的两个循环的内部。但是,打破一个以上的循环没有中断。
您的代码的主要问题是您的算法存在问题。您的代码会将一个数字打印为每个数字&gt; = 2的素数,因为它不能被分割。例如,您可以打印一次&#34; 15&#34; (或任何其他非偶数),因为它不能被&#34; 2&#34;分开。
如果全部您测试的部门失败,您的算法必须确保只打印一个数字作为素数。