我的教科书要求我编写一个函数,将单个字典作为输入并返回最不可能被观察到的粒子,其中键是粒子名称,值是该粒子被观察到的概率。这是字典:
parts_to_probs = {'proton': 0.21, 'meson': 0.03, 'muon': 0.07, 'neutron': 0.55}
Run Code Online (Sandbox Code Playgroud)
这是我的文档字符串函数:
def least_likely(parts_to_probs: dict) -> str:
"""Return the particle from parts_to_probs that is least probable to be
observed.
>>> least_likely({'proton': 0.21, 'meson': 0.03, 'muon': 0.07, 'neutron': 0.55})
('meson', 0.03)
"""
smallest = 1
name = ''
for particle in parts_to_probs:
probability = parts_to_probs[particle]
if probability < smallest:
smallest = probability
name = particle
return (particle, probability)
print(least_likely(parts_to_probs))
Run Code Online (Sandbox Code Playgroud)
现在当我运行这个程序时,它总是从字典中打印出最后一个键/值对,不管它是否具有最小的概率。我真的不确定我必须改变什么,因为 for 循环应该在第二个循环之后停止。
由于 'muon' 的概率为 0.07,所以概率不会 < 最小(第二次循环后为 0.03)。