Loops/Wrong ranges
Some languages have syntax or function(s) to generate a range of numeric values from a start value, a stop value, and an increment.
The purpose of this task is to select the range syntax/function that would generate at least two increasing numbers when given a stop value more than the start value and a positive increment of less than half the difference. You are than to use that same syntax/function but with different parameters; and show, here, what would happen.
Use these values if possible:
start stop increment Comment -2 2 1 Normal -2 2 0 Zero increment -2 2 -1 Increments away from stop value -2 2 10 First increment is beyond stop value 2 -2 1 Start more than stop: positive increment 2 2 1 Start equal stop: positive increment 2 2 -1 Start equal stop: negative increment 2 2 0 Start equal stop: zero increment 0 0 0 Start equal stop equal zero: zero increment
Python
Python has the range function. <lang python>import re from itertools import islice # To limit execution if it would generate huge values
- list(islice('ABCDEFG', 2)) --> ['A', 'B']
- list(islice('ABCDEFG', 4)) --> ['A', 'B', 'C', 'D']
data =
start stop increment Comment
-2 2 1 Normal
-2 2 0 Zero increment
-2 2 -1 Increments away from stop value
-2 2 10 First increment is beyond stop value
2 -2 1 Start more than stop: positive increment
2 2 1 Start equal stop: positive increment
2 2 -1 Start equal stop: negative increment
2 2 0 Start equal stop: zero increment
0 0 0 Start equal stop equal zero: zero increment
table = [re.split(r'\s\s+', line.strip()) for line in data.strip().split('\n')]
- %%
for _start, _stop, _increment, comment in table[1:]:
start, stop, increment = [int(x) for x in (_start, _stop, _increment)] print(f'{comment.upper()}:\n range({start}, {stop}, {increment})') error, values = None, None try: values = list(islice(range(start, stop, increment), 999)) except ValueError as e: error = e print(' !!ERROR!!', e) if values is not None: if len(values) < 22: print(' =', values) else: print(' =', str(values[:22])[:-1], '...')
</lang>
- Output:
NORMAL: range(-2, 2, 1) = [-2, -1, 0, 1] ZERO INCREMENT: range(-2, 2, 0) !!ERROR!! range() arg 3 must not be zero INCREMENTS AWAY FROM STOP VALUE: range(-2, 2, -1) = [] FIRST INCREMENT IS BEYOND STOP VALUE: range(-2, 2, 10) = [-2] START MORE THAN STOP: POSITIVE INCREMENT: range(2, -2, 1) = [] START EQUAL STOP: POSITIVE INCREMENT: range(2, 2, 1) = [] START EQUAL STOP: NEGATIVE INCREMENT: range(2, 2, -1) = [] START EQUAL STOP: ZERO INCREMENT: range(2, 2, 0) !!ERROR!! range() arg 3 must not be zero START EQUAL STOP EQUAL ZERO: ZERO INCREMENT: range(0, 0, 0) !!ERROR!! range() arg 3 must not be zero