我试图做一个选择字符串并更新当前字段的脚本,但是由于某种原因changerandom
,在Greeting
类中调用函数时代码不会更新最后一个值。
...[snip]...
class Greeting(Packet):
fields = OrderedDict([
("Morning", "Hi"),
("Afternoon", "Good Afternoon!"),
("Evening", "Good Evening!"),
])
def change(self):
self.fields["Morning"] = "Good morning!"
def changerandom(self, n = 1):
function=[
{self.fields["Morning"]: "Hello!"},
{self.fields["Morning"]: "Bonjorno!"},
{self.fields["Morning"]: "Hola!"},
]
result = {}
for i in range(n):
result.update(choice(function))
print "Updated string:",result
return result
text = Greeting()
print text
text.change()
print text
text.changerandom()
print text
我的代码返回以下内容:
Hi
Good morning!
Updated string: {'Good morning!': 'Hola!'}
Good morning!
虽然应该返回:
Hi
Good morning!
Hola!
我不确定我在这里缺少什么,我不明白为什么我不能更新最后一个字段。任何帮助将不胜感激!
问题在于您要查询return
结果,而没有将其分配到任何地方。
您还可以使用值的fields
,而不是重点。因此,您的代码应类似于
def changerandom(self, n = 1):
function=[
{"Morning": "Hello!"},
{"Morning": "Bonjorno!"},
{"Morning": "Hola!"},
]
for i in range(n):
result = choice(function)
self.fields.update(result)
print "Updated string:",result
return result
请注意,我们正在使用self.fields.update
,并且不再需要return
任何内容。
通常,对于您的函数和方法来说,返回某项或更改某项是一种很好的做法,但绝不能两者都做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句