对于模糊的问题,我们深表歉意。我正在重写它,所以我希望这会有所帮助。 我正在尝试编辑两个属性(字典):a和b。 b与(.8)直接相关。
class Fun:
def __init__(self, name):
self.name = name
self.a = {1: ["a", 10]}
self.b = {2: ["b", 8]}
def change(self):
for i in self.a:
self.a[i][1] = math.floor(random.gauss(self.a[i][1]), 5)
self.b = copy.deepcopy(self.a)
for i in self.b:
self.b[i][1] = math.floor(self.a[i][1] * 0.8)
当我通过一个改变a和b的循环时,它会运行一次,然后用
崩溃"str" object has no attribute "a"
如果它是调用它的函数(它可能是),请告诉我。 这是否应该根据当前值改变a和b每次迭代?
我希望这更清楚我所要求的是什么。
答案 0 :(得分:2)
您正在创建本地变量sell_price
,这不会影响cahnge_price
函数之外的sell_price。
在sell_price
中返回change_price
。明确地将change_price
的返回值分配给sell_price
以外。
def change_prices():
for i in price:
price[i][1] = math.floor(random.gauss(price[i][1], 5))
sell_price = copy.deepcopy(price)
for i in sell_price:
sell_price[i][1] = math.floor(price[i][1] * .8)
return sell_price
price = {1: ["Spices", 43], 2: ["Something else",50]}
sell_price = change_prices()
或者将sell_price声明为全局变量
def change_prices():
global sell_price
for i in price:
price[i][1] = math.floor(random.gauss(price[i][1], 5))
sell_price = copy.deepcopy(price)
for i in sell_price:
sell_price[i][1] = math.floor(price[i][1] * .8)
price = {1: ["Spices", 43], 2: ["Something else",50]}
sell_price = change_prices()