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题目:检查序列是否为空
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。
核心就几种写法:
bool(data)- 最直接,利用Python的隐式转换if data:- 显式判断,可读性好len(data) > 0- 通过长度判断,但效率稍低
注意这个函数要处理各种序列类型:列表、字符串、元组、字典等。Python的bool()函数会自动处理这些情况。
建议直接用bool()最省事。
None 是 None, 空值是空值
为空,不是[]

