SMILET
您的代码现在有两个问题。首先,您需要替换[]为()因为append是一个函数。其次,在您目前的实现中,您将有一段TypeError: 'bool' object is not iterable时间检查all(). 您可以简单地all(remainder)按照@ShadowRanger 的建议进行操作。i = 3primes = [2]remainder = []while i <= 20: for x in primes: remainder.append(i%x) if all(remainder) == True: primes.append(i) i += 1 remainder.clear()print(primes)# [2, 3, 5, 7, 11, 13, 17, 19]评论中再次建议的另一种选择是使用all(rem != 0 for rem in remainder) 在那里您对remainder列表中的每个元素使用 for 循环检查。rem != 0根据条件是否满足,会给你真/假。all将简单地检查所有条目是否为 True,在这种情况下,即使单个条目为 False ,它也会返回Trueelse False。如果您想了解all()这里的工作方式,请使用以下输出添加打印语句。如您所见,输出仅False适用于存在单个 0True且不存在 0 的情况。print (remainder, all(remainder))[1] True[0, 1] False[1, 2] True[0, 0, 1] False[1, 1, 2] True[0, 2, 3, 1] False[1, 0, 4, 2] False[0, 1, 0, 3] False[1, 2, 1, 4] True[0, 0, 2, 5, 1] False[1, 1, 3, 6, 2] True[0, 2, 4, 0, 3, 1] False[1, 0, 0, 1, 4, 2] False[0, 1, 1, 2, 5, 3] False[1, 2, 2, 3, 6, 4] True[0, 0, 3, 4, 7, 5, 1] False[1, 1, 4, 5, 8, 6, 2] True[0, 2, 0, 6, 9, 7, 3, 1] False