我尝试编写一个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语句才能离开循环,或者你能做i = len(lista)+ 1吗?
答案 0 :(得分:4)
您正在
中使用比较运算符list[2] == a
您需要的是赋值运算符
list[2] = a
很少有建议
永远不要使用内置类型或函数名称命名变量。在这种情况下list
。有一个同名的内置函数。
而不是
self.c = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
你可以做到
self.c = [0] * 10
指定编码时,可以使用
# coding=<encoding name>
或
# -*- coding: <encoding name> -*-
但不
#coding: iso-8859-1
查看此PEP以了解支持的格式http://www.python.org/dev/peps/pep-0263/
答案 1 :(得分:1)
要为变量分配值,您必须使用=
,而不是==
。
比较
>>>l = [1, 2, 3]
>>>
>>>l[0] == 'foo' # performs a comparison
False
>>>l[0] = 'foo' # assigns value
>>>l
['foo', 2, 3]