我有家庭作业问题,我编写了代码,每次提交代码时,都说返回的答案和预期的答案相同,但仍然被标记为错误。 这是问题
编写一个名为“ json_average”的函数,该函数将JSON格式的字符串作为对象数组格式的参数,其中每个对象都有键“质量”,“密度”,“温度”和“速度”,并且每个对象键映射到浮点数。此函数应以JSON字符串的形式返回数组中所有对象的平均“质量”,格式为{“ mass”:}
我尝试用几种不同的方式编写代码,但仍然得到相同的结果。这是我最近的尝试。
<ListView
SelectionMode="None">
<ListView.ItemTemplate>
<DataTemplate x:DataType="data:Music">
<SwipeControl Loaded="SwipeControl_Loaded">
<SwipeControl.LeftItems>
<SwipeItems Mode="Reveal">
<SwipeItem Text="Favorite">
</SwipeItem>
</SwipeItems>
</SwipeControl.LeftItems>
<SwipeControl.RightItems>
<SwipeItems Mode="Execute">
<SwipeItem Text="Remove">
</SwipeItem>
</SwipeItems>
</SwipeControl.RightItems>
<local:PlaylistControlItem DataContext="{x:Bind}" ShowAlbumText="{Binding ElementName=PlaylistController, Path=ShowAlbumText}">
<local:PlaylistControlItem.ContextFlyout>
<MenuFlyout Opening="OpenMusicMenuFlyout" />
</local:PlaylistControlItem.ContextFlyout>
</local:PlaylistControlItem>
</SwipeControl>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这是它返回的内容
import json
def json_average (x):
data = json.loads(x)
summ = 0
n = 0
for s in data:
a = s["mass"]
summ = summ + a
n = n + 1
d = {"mass" : (summ/n)}
return(d)
答案 0 :(得分:0)
在函数中添加以下行:
d = json.dumps(d)
答案 1 :(得分:0)
json.dumps(d)
summ
,镜像sum
)不是一个好主意summ
→mass_sum
n = n + 1
→n += 1
n
来跟踪值的数量。使用enumerate
,例如for i, s in enumerate(data):
。def json_average(x):
data = json.loads(x)
mass_sum = 0
for i, s in enumerate(data, 1):
mass_sum += s['mass']
return json.dumps({'mass': mass_sum/i})
list comprehension
:for-loop
sum
上使用len
和mass_values
def json_average(x):
data = json.loads(x)
mass_values = [value['mass'] for value in data]
return json.dumps({'mass': sum(mass_values)/len(mass_values)})