假设您想循环遍历两个边界a和b(包括)之间的所有整数,但事先不知道如何与b进行比较.预期行为:
def run(a, b):
if a < b:
for i in range(a, b + 1):
print i,
elif a > b:
for i in range(a, b - 1, -1):
print i,
else:
print a
run(3, 6)
run(6, 3)
run(5, 5)
结果:
3 4 5 6
6 5 4 3
5
有更优雅的解决方案吗?以下更简洁,但在== b时失败:
def run(a, b):
for i in range(a, b + cmp(b, a), cmp(b, a)):
print i,
run(3, 6)
run(6, 3)
run(5, 5)
结果:
3 4 5 6
6 5 4 3
(...)
ValueError: range() step argument must not be zero
解决方法:
这适用于所有情况:
def run(a, b):
"""Iterate from a to b (inclusive)."""
step = -1 if b < a else 1
for x in