Уведомления

Группа в Telegram: @pythonsu

#1 Март 5, 2016 12:03:08

Rasmus
Зарегистрирован: 2016-03-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

randrange()

Всем привет. Я тут новенький) Подскажите пожалуйста новичку одну мелочь, с которой я столкнулся в книге M.Dawson Программируем на Python.
Ситуация такая. В данный момент изучаю раздел про индексацию строк. Там есть пример простой программки:
#Случайные буквы
#Демонстрирует индексацию строк
import random
word = “индекс”
print(“В переменной word хранится слово: ”, word, “\n”)
high = len(word)
low = -len(word)
for i in range(10):
position = random.randrange(low, high)
print("word\t", word)
input(“\nPress Enter to exit.”)


Подскажите, почему в переменную position может попасть любой индекс элемента от -6 до 5, ведь random.range() подразумевает “непопадание” большего числа?

P.S. Надеюсь, я понятно объяснил)

Результат работы программы:
В переменной word хранится слово: индекс

word е
word с
word к
word е
word с
word и
word к
word н
word е
word н

Press Enter to exit.

Отредактировано Rasmus (Март 5, 2016 12:06:50)

Офлайн

#2 Март 5, 2016 12:23:02

Rasmus
Зарегистрирован: 2016-03-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

randrange()

Если я что-то не понятно объяснил, Вы скажите. Я просто совсем новичок…прям совсем совсем

Офлайн

#3 Март 5, 2016 13:37:42

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

randrange()

Подскажите, почему в переменную position может попасть любой индекс элемента от -6 до 5, ведь random.range() подразумевает “непопадание” большего числа?

Перефразируй, что должна делать программа?



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#4 Март 5, 2016 13:38:30

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

randrange()

Rasmus
P.S. Надеюсь, я понятно объяснил)
Rasmus
ведь random.range()
Непонятно объяснили. У вас в коде нет нигде random.range.



Офлайн

#5 Март 6, 2016 16:43:30

Rasmus
Зарегистрирован: 2016-03-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

randrange()

Программа разбивает введенное слово по элементам и выводит 10 раз случайный номер позиции и соответствующую ей букву

Офлайн

#6 Март 6, 2016 16:44:19

Rasmus
Зарегистрирован: 2016-03-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

randrange()

doza_and
Непонятно объяснили. У вас в коде нет нигде random.range.
Rasmus
for i in range(10):
position = random.randrange(low, high)
print(“word\t”, word)

Офлайн

#7 Март 7, 2016 02:15:13

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

randrange()

Rasmus
вы не правильно написали в одном из сообщений, функции random.range не существует. Но дело не в этом. Это просто описка. Вы получаете позицию, но при этом не выводите ее. И код в тегах надо правильно оформлять - смотрите на то что вы написали выше - там явно квадратные скобки пропущены. Вот собственно что вам нужно как я понял (помните что индексация начинается с 0)

Python 3.4.1 (default, May 23 2014, 17:48:28) [GCC] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> word = 'индекс'
>>> high = len(word)
>>> low = -high
>>> import random
>>> for i in range(10):
...     position = random.randrange(low, high)
...     print("Элемент номер {} в слове {} равен {}".format(position, word, word[position]))
... 
Элемент номер 2 в слове индекс равен д
Элемент номер 2 в слове индекс равен д
Элемент номер 5 в слове индекс равен с
Элемент номер 1 в слове индекс равен н
Элемент номер 5 в слове индекс равен с
Элемент номер -3 в слове индекс равен е
Элемент номер -4 в слове индекс равен д
Элемент номер 2 в слове индекс равен д
Элемент номер 5 в слове индекс равен с
Элемент номер 5 в слове индекс равен с



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Март 7, 2016 07:34:59

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

randrange()

JOHN_16
функции random.range не существует. Но дело не в этом.
Нет. Это принципиально. Человек неправильно пишет имя функции, когда его тыкают в первую ошибку, он не видит разницы. Если так будет продолжаться он вообще не сможет писать программ.
Rasmus В первую очередь надо внимательно смотреть что пишете. Любая точка, скобочка полностью меняют смысл программы. Не говоря уже о изменении имени функции. Надо читать документацию. Там написано что делает randrange, это вовсе нет необходимости спрашивать на форуме. https://docs.python.org/2/library/random.html
Вы приводите вывод программы. Он явно не от той программы которую вы привели в сообщении. Я думаю это опять невнимательность. Вы меняете программу, а в голове у вас перепутались результаты от разных вариантов программы. Или возможно вы имели ввиду желаемые результаты работы? Тогда вы думаете одно а пишете другое.
Это не страшно, но надо преодолеть. Без этого невозможно программировать.



Отредактировано doza_and (Март 7, 2016 07:36:39)

Офлайн

#9 Март 7, 2016 19:36:53

Rasmus
Зарегистрирован: 2016-03-02
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

randrange()

спасибо Вам большое…Похоже я действительно немного запутался…Хотя вопрос на самом деле простой. В книге был пример программы, было написано про функцию randrange, что она отличается от randint тем, что минимальное значение входит в рандом, а максимальное - нет. В randint входят оба значения…и максимальное, и минимальное. так вот в этом примере почему-то в рандом попало максимальное значение randrange.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version