Alexino
А проверку условия start и end не больше длины строки text делать?
Можешь сделать, хотя обычно, если ошибка приводит к исключению, то можно не делать проверку. Нельзя допускать такие ошибки, которые тихо срабатывают и о них не узнают вообще.
>>> import random
>>>
>>> def choice_from_range(text, start, end):
... if start < 0:
... raise ValueError('incorrect start')
... elif end >= len(text):
... raise ValueError('incorrect end')
... elif start > end:
... raise ValueError('incorrect both start and end')
... return text[random.randint(start, end)]
...
>>> choice_from_range('abc', 0, 2)
'c'
>>> choice_from_range('abc', -1, 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in choice_from_range
ValueError: incorrect start
>>> choice_from_range('abc', 0, 3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in choice_from_range
ValueError: incorrect end
>>> choice_from_range('abc', 2, 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 7, in choice_from_range
ValueError: incorrect both start and end
>>>