2014-07-04 73 views
1

我試圖編寫一個程序,它使用Python 3.3.2中的列表查找素數。我想要做的是從ns中取出一個元素,並將它除以b中的所有元素。在Python中使用列表查找素數3.3.2

這是我有什麼(不工作):

b = [1] 
ns = [1] 

while 1 == 1: 
    if ns[-1]/b[:] == 1 or ns[-1]: 
     print (ns[-1]) 
     ns.append(ns[-1]+1) 
     b.append(b[-1]+1) 
    else: 
     print ("No prime found.") 

這是錯誤我收到:

if ns[-1]/b[:] == 1 or ns[-1]: 
TypeError: unsupported operand type(s) for /: 'int' and 'list' 

我明白爲什麼這個操作是不可能的(分割一來自另一個完整列表的列表中的整數元素不起作用),並想知道是否有任何方法來實現我的目標。

感謝您的任何幫助。

+0

你有沒有更進一步,我的回答有幫助嗎? – timgeb

+0

不完全。我在Python(或任何類型的編碼語言)方面經驗不是很豐富。不過謝謝你的幫忙。 – user3806712

+0

什麼不清楚? – timgeb

回答

0

您不能劃分整數和列表。你可以做的是使用列表理解。演示:

>>> ns = [1,2,3] 
>>> b= [7,9,12,13] 
>>> # divide last element of ns by all elements of b 
... 
>>> [float(ns[-1])/item for item in b if item] 
[0.42857142857142855, 0.3333333333333333, 0.25, 0.23076923076923078] 

新列表的第一個元素是3/7,第二個元素是3/9,依此類推。 if item檢查是爲了確保您不會被零除。

編輯:你實際上可能意味着一些不同的東西,那就是將ns中的一個元素連續分配給b中的每個元素。演示了ns[-1]

>>> ns = [1,2,3] 
>>> b = [1,2,3] 
>>> sol = ns[-1] 
>>> for item in b: 
...  sol = float(sol)/item 
... 
>>> sol 
0.5 

溶膠((3/3)/ 2)/ 1

此外,您while循環永遠不會結束。你確定你想要嗎?

相關問題