Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 30, 2022 16:13:35

Alexino
Зарегистрирован: 2022-06-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

А что не так? Мое решение задачки...

Всем привет!
Требуется решить задачку:
Реализуйте функцию choice_from_range(), которая принимает строку-набор и выбирает случайный символ по индексу из ограниченного диапазона.
Аргументы функции:
строка-набор
начальный индекс диапазона
конечный индекс диапазона
Пример:

   
text = "abcdef"
choice_from_range(text, 3, 5)  # d
choice_from_range(text, 3, 5)  # f
choice_from_range(text, 3, 5)  # e
  
————————————————-

Отредактировано FishHook (Июнь 30, 2022 16:22:16)

Офлайн

#2 Июнь 30, 2022 16:22:01

Alexino
Зарегистрирован: 2022-06-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

А что не так? Мое решение задачки...

Мое решение:

Прикреплённый файлы:
attachment Решение.jpg (51,8 KБ)

Офлайн

#3 Июнь 30, 2022 16:23:31

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

А что не так? Мое решение задачки...

Alexino
а преподавателю ты тоже скриншоты своих программ показываешь?



Офлайн

#4 Июнь 30, 2022 16:25:15

Alexino
Зарегистрирован: 2022-06-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

А что не так? Мое решение задачки...

FishHook
Alexinoа преподавателю ты тоже скриншоты своих программ показываешь?
Мое решение:



   
from random import randint
def choice_from_range(text, a, b):
    if a < len(text) and a < b < len(text):
        random_index = randint(a, b)
        print(random_index)
        char = text[random_index]
        print(char)
    else:
        print('Длина строки = ', len(text))
        print('Измените значения индексов a и b ')
  

Отредактировано FishHook (Июнь 30, 2022 16:40:47)

Офлайн

#5 Июнь 30, 2022 16:43:00

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

А что не так? Мое решение задачки...

Alexino
функция должна возвращать результат, а не печатать его в stdout



Офлайн

#6 Июнь 30, 2022 19:43:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  842  -
Профиль   Отправить e-mail  

А что не так? Мое решение задачки...

  
>>> import random
>>> 
>>> def choice_from_range(text, start, end):
...     return text[random.randint(start, end)]
... 
>>> text = 'abcdef'
>>> choice_from_range(text, 3, 5)
'f'
>>> choice_from_range(text, 3, 5)
'e'
>>> choice_from_range(text, 3, 5)
'e'
>>> choice_from_range(text, 3, 5)
'e'
>>> choice_from_range(text, 3, 5)
'e'
>>> choice_from_range(text, 3, 5)
'f'
>>> choice_from_range(text, 3, 5)
'e'
>>> choice_from_range(text, 3, 5)
'd'
>>>



Офлайн

#7 Июль 1, 2022 08:54:13

Alexino
Зарегистрирован: 2022-06-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

А что не так? Мое решение задачки...

py.user.next
Спасибо, работает).
А проверку условия start и end не больше длины строки text делать?

Офлайн

#8 Июль 1, 2022 10:28:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  842  -
Профиль   Отправить e-mail  

А что не так? Мое решение задачки...

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
>>>



Офлайн

#9 Июль 1, 2022 13:30:35

Alexino
Зарегистрирован: 2022-06-30
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

А что не так? Мое решение задачки...

py.user.next
def choice_from_range(text, start, end):
… if start < 0:
… raise ValueError('incorrect start')
… elif end >= len(text):
… raise ValueError('incorrect end')

——————-

Super!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version