You will find problematic examples no matter which option you choose (which is why I personally favor being able to set the lower bound freely).<p>With half-open ranges, for example, you will need different code to address a segment and the last element of a segment. E.g. if you have some structure with start_of(i) and end_of(i) expressions, then you can do a[start_of(i):end_of(i)] with closed indexing <i>and</i> a[end_of(i)] to access the last element, while with open intervals, you have to break the abstraction and use a[end_of(i)-1].<p>You can also iterate over start_of(i) .. end_of(i) in a for loop naturally if ranges are closed. (See how Python&#x27;s iteration is defined in terms of half-open ranges and how iterating over closed ranges – which happens often enough when the values aren&#x27;t indices – is a bit of a pain in Python.)