2017-04-20 31 views
0

我应该写一个程序来改变一个字符串,如果这个位置编号不是素数,但我似乎无法弄清楚如何使第一个位置,例如位置2 ,prime,并使剩下的可以被2整除的位置变成N.下面是我现在拥有的,我是一个int错误。如果有人能帮助我,我会很感激。谢谢寻找一个范围内的素数python

while True: 
    number = int(input("Enter a number greater than 10: ")) 
    if number < 10: 
     print("Invalid input. Try again") 
    else: 
     break 

n_list = ["P"] * (number + 1) 
n_list[0] = "N" 
n_list[1] = "N" 

for i in range(n_list): 
    if int(n_list[i]) % 2 == 0: 
     n_list[i] = "N" 

print(n_list) 
+0

我想如果你没有逐字地粘贴你的作业,你会吸引更少的优惠。在那之后,OP实际上提供了自己的代码和一些关于它卡住的地方的描述。 – timgeb

+0

(但是,“我收到错误”不是可接受的错误说明) – timgeb

回答

1

首先,由于范围内取整数,而不是一台发电机,你可能会得到一个错误,请尝试而不是for i in n_listfor i in range(len(n_list))。至于问题的解决方法,你不需要从2到n循环,有一个更聪明的方法。但是我们不是为了解决这个问题,而是为了引导您找到您可能向我们展示的最终错误。就这样说,祝你好运!

PS: 多一点指导 Sieve of Eratosthenes

编辑: ,我指的错误是

TypeError: 'list' object cannot be interpreted as an integer 
0

我不想给你答案,你的功课,但我确实想帮忙,所以我会引导你一点。

我看到2个问题与您提供的内容。首先,您正在为您的范围使用不正确的变量。你想要一个数字,而不是一个列表。

其次,如果“P”是可以被整除的,则不能进行比较。2.只能检查一个数是否。

希望这会有所帮助,祝你好运。

编辑:澄清,还有更多的问题,但这两个会给出错误。