【问题标题】:Why doesnt any output show up when I use assert?为什么我使用断言时没有任何输出显示?
【发布时间】:2021-11-04 10:41:12
【问题描述】:

所以我写了这段代码,一切正常......

def lol(n: int):
  a, s = [1], [1]
  output = []
  for i in range(0, n - 1):
    s = a[i:]
    for k in range(0, len(a)):
      s.append(a[k] + s[k])
    a = s
    output.append(s)
  l = [1]

  return l,output

当我执行print(lol(n=10)) 时,我的输出会正确打印出来

([1], [[1, 2], [2, 3, 5], [5, 7, 10, 15], [15, 20, 27, 37, 52], [52, 67, 87, 114, 151, 203], [203, 255, 322, 409, 523, 674, 877], [877, 1080, 1335, 1657, 2066, 2589, 3263, 4140], [4140, 5017, 6097, 7432, 9089, 11155, 13744, 17007, 21147], [21147, 25287, 30304, 36401, 43833, 52922, 64077, 77821, 94828, 115975]])

但是,当我在做assert(lol(n)) 时,什么也没有发生。如果这是一个愚蠢的问题,我深表歉意,但我是新手,所以是的,谁能帮我弄清楚如何使“断言”返回输出??

【问题讨论】:

  • 你认为它应该做什么?了解如何创建minimal reproducible example
  • assert(True)什么都不做assert(False) -> 错误。您的函数输出是两个元素的元组,这是真的。
  • @Reti43 哦,好吧好吧.. 是的,我很困惑对不起。我认为断言与打印相同。我的坏..谢谢你的解释和澄清
  • "我认为 assert 和 print 一样。"为什么?您是怎么听说有 assert 这样的东西的?那个消息来源告诉了您什么

标签: python list tuples


【解决方案1】:

要正确使用断言,您需要检查条件:

assert 1 == 2 # raise AssertionError
assert 5 > 3 # do not raise

在您的情况下,lol(n=10) 的计算结果为 True,因此不会引发任何问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 2011-07-22
    • 2021-04-04
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多