尝试创建断言错误不起作用?

时间:2019-02-08 18:58:19

标签: python list dictionary assert

我正在编写一个非常基本的代码,它将检查字典长度中的列表是否大于字典另一个键中的整数。

例如,如果我有:

for (let key of Object.keys(items)) {
  if (items[key].owned==0) {
    var el = document.createElement('div');
    var domString = '<div id="' + items[key] + '"><div class="w3 h3 bg-center contain" style="background-image:url(' + items[key].img + ')"></div><span>'+ items[key].name +'</span><span>Price: '+ items[key].cost +'</span><span>'+ items[key].desc +'</span></div>';
    el.innerHTML =  domString;
    el.addEventListener('click', function() {
       items[key].owned = 1
    });
    document.getElementById('shop').appendChild(el);
  }
}

可以,因为列表的最大值(或长度)可以为5(小于或等于)是可以的。

另一方面,这应该引发断言错误:

d = {'lst': [1,2,3,4,5] , 'compare': 5}

因为键“ lst”>“比较”中列表的长度。

这是我尝试过的:

d = {'lst': [1,2,3,4,5,6] , 'compare': 5}

我是刚开始使用“断言”的人,因此我可能会使用这个错误。如果有人可以帮我,将不胜感激!

1 个答案:

答案 0 :(得分:1)

assert语句将条件作为第一个“参数”。不需要if语句。

assert len(d['lst'] <= d['compare']), "Queue is larger than max capacity"

如果条件为 false ,则会引发AssertionError(包括可选的第二个参数)。否则,什么都不会发生。

assert foo, bar视为快捷方式

# assert foo, bar
if foo:
    raise AssertionError(bar)