2013-11-15 48 views
1

我試過編寫一個Python 2程序,它使用兩個類來創建包含數字0的十個元素的列表,並用1之間的隨機數替換列表中的第三個元素-10。但是,當我調用並打印add_number_to_list()函數時,它將返回一個未更改的列表。這裏是我的代碼:無法使用函數更改列表中的元素

#coding: iso-8859-1 

import random 

class Slumpa: 
    def __init__(self): 
    pass 

    def add_number_to_list(self, list): 
    a = random.randint(1, 10) 
    list[2] == a 
    return list 

class Lista: 
    def __init__(self): 
    self.b = Slumpa() 
    self.c = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 


    def add_number_to_list(self): 
     return self.b.add_number_to_list(self.c) 


P = Lista() 
print P.add_number_to_list() 

另外,如果你已經有了一個for循環,像這樣的:

for i in range(0, len(lista)): 
    if lista[i] == 0: 
     lista[i] = a 
     break 

你必須使用break語句,以讓開循環,或者你可以做我= len(lista)+ 1?

+2

有趣的是,通常,人們作出了相反的錯誤)。 –

回答

1

要爲變量賦值,必須使用=而不是==

比較

>>>l = [1, 2, 3] 
>>> 
>>>l[0] == 'foo' # performs a comparison 
False 
>>>l[0] = 'foo' # assigns value 
>>>l 
['foo', 2, 3] 
+0

我覺得很蠢。謝謝。 :) –

4

您正在使用比較運算符

list[2] == a 

你需要的是一個賦值運算符

list[2] = a 

幾點建議

  1. 絕對不要使用內置類型或函數名稱命名變量。在這種情況下list。有一個同名的內建函數。

  2. 而不是

    self.c = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 
    

    你可以做

    self.c = [0] * 10 
    
  3. 當你指定你可以使用

    # coding=<encoding name> 
    

    編碼

    #coding: iso-8859-1 
    

    檢查這個PEP的格式支持http://www.python.org/dev/peps/pep-0263/

相關問題