Python中如何解决Checkio题目:检查序列是否为空

本人在解决检查序列是否为空白的时候用了 if args is None:语句,但 IDE 却返回我的错误是 max ()函数里边的参数为空。后来我在网上找了 if not args:却解决问题了,求有深入了解大佬解释一下。源代码如下。

def checkio(*args): if args is None: #if not args: return 0 #"Empty" else: max_num = max(args) min_num = min(args) answer = max_num - min_num print ("%s-%s=%s" % (max_num, min_num, answer)) return answer

#These "asserts" using only for self-checking and not necessary for auto-testing if name == 'main': def almost_equal(checked, correct, significant_digits): precision = 0.1 ** significant_digits return correct - precision < checked < correct + precision

assert almost_equal(checkio(1, 2, 3), 2, 3), "3-1=2"
assert almost_equal(checkio(5, -5), 10, 3), "5-(-5)=10"
assert almost_equal(checkio(10.2, -2.2, 0, 1.1, 0.5), 12.4, 3), "10.2-(-2.2)=12.4"
assert almost_equal(checkio(), 0, 3), "Empty"
print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")


Python中如何解决Checkio题目:检查序列是否为空

4 回复

assert almost_equal(checkio(), 0, 3), "Empty"

None != []


def checkio(data):
    # 方法1:直接使用bool()转换
    return bool(data)
    
    # 方法2:使用if判断(更直观)
    # if data:
    #     return True
    # return False
    
    # 方法3:使用len()函数
    # return len(data) > 0

# 测试用例
print(checkio([1, 2, 3]))    # True
print(checkio([]))           # False
print(checkio(""))           # False
print(checkio("hello"))      # True
print(checkio({}))           # False
print(checkio({1: "a"}))     # True
print(checkio((1, 2)))       # True
print(checkio(()))           # False

这题其实挺简单的,就是判断序列是否为空。Python里空序列在布尔上下文中都是False,非空就是True。

核心就几种写法:

  1. bool(data) - 最直接,利用Python的隐式转换
  2. if data: - 显式判断,可读性好
  3. len(data) > 0 - 通过长度判断,但效率稍低

注意这个函数要处理各种序列类型:列表、字符串、元组、字典等。Python的bool()函数会自动处理这些情况。

建议直接用bool()最省事。

None 是 None, 空值是空值

为空,不是[]

回到顶部