请实现range和xrange。
我的解答如下:
def range(start, stop = 0, step = 1):
val = []
# when stop and step are not provided
if stop == 0:
i = 0
while(i < start):
val.append(i )
i += 1
# when stop is provided , step is
elif step > 0 and stop > start:
while(start < stop):
val.append(start)
start += step
elif step < 0 and stop < start:
while(start > stop):
val.append(start)
start += step
return val
print 'test 1 :', range(4)
print 'test 2', range(3,10,2)
print 'test 3', range(-3,-20, -2)
print 'test 4',range(0)
print 'test 4',range(1,11)
print 'test 4',range(0,30,5)
print range(0, -10, -1)
# def xrange(start, stop = 0, step = 1):
# # val = []
# # when stop and step are not provided
# if stop == 0:
# i = 0
# while(i < start):
# # val.append(i )
# yield i
# i += 1
# # when stop is provided , step is
# elif step > 0 and stop > start:
# while(start < stop):
# yield start
# start += step
# elif step < 0 and stop < start:
# while(start > stop):
# yield start
# start += step
# print 'test 1-1:', xrange(4)
# print 'test 1-2:', [i for i in xrange(10)]
# print 'test 2:', [i for i in xrange(3,10,2)]
# print 'test 3:', [i for i in xrange(-3,-20, -2)]