我试图将return语句添加到我的代码中,以便我可以使用pytest然后检查输出是否符合预期(至少我认为这是如何工作的,我第一次使用pytest )。
这是我的代码:
import itertools
def lists(*usrin):
# STRINGS IN MULTIPLE LISTS
temp = set(usrin[0])
for sub in usrin[1:]:
res = temp.intersection(sub)
print("Strings that appear in more than one list: ", ', ' .join(res))
return res
# UNIQUE STRING COUNT
nlst = [set(sum(usrin, []))]
alist = list(itertools.chain.from_iterable(nlst))
print("Number of unique strings: ", len(alist))
return alist
# TOTAL STRINGS PROCESSED
count = 0
for arg in usrin:
count += (len(arg))
print("Total number of strings processed: ", count)
return count
# CALL WITH INPUT
def main():
lists(['g', 'gh', 'ghj', 'g'], ['j', 'ju', 'gh', 'gk', 'gn'])
if __name__ == '__main__':
main()
我的预期输出如下(如果我删除"返回"语句,我会得到):
Strings that appear in more than one list: gh
Number of unique strings: 7
Total number of strings processed: 9
然而,对于return语句,我最终只得到:
Strings that appear in more than one list: gh
我做错了什么?这是处理输出的正确方法,以便在程序运行时它为用户输出一些东西,但也可以进行测试以确保输出符合预期吗?
感谢您的阅读。
答案 0 :(得分:0)
在您的第一个for
循环中,您将res
返回res = temp.intersection(sub)
。这会导致函数暂停执行并将控制权返回给调用者 - 在这种情况下,lists()
返回并放弃对调用它的main()
函数的控制。
如果您只想在终端中显示内容,请使用print
(或print()
)而不是return
。
return
。
答案 1 :(得分:0)
你在一个功能里面。第一次返回使得以下所有语句都无法访问。
您应该将字符串存储在临时变量中,然后在列表函数的末尾返回整个字符串。