Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 21, 2015 14:47:44

droft1312
Зарегистрирован: 2015-01-17
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Рандом, циклы, списки.

Здравствуйте.У меня появился вопрос, в общем, наткнулся на одну задачу, и смысл ее в том, чтобы вывести список слов в рандомном порядке, и без повторений.Такой код я сделал:

def main():
	import random
	words = ['Слово0', "Слово1",  "Слово2", "Слово3", "Слово4", "Слово5"]
	tries = 0
	x = 6
	while True:
		random_choice = random.randrange(x)
		print(words[random_choice])
		del words[random_choice]
		x -= 1
		random_choice = random.randrange(x)
		tries += 1
		if tries > 5:
			break 
Все 6 слов выводятся, вот только после того как они вывелись, интерпретатор выдает такую ошибку:
Traceback (most recent call last):
File “C:\Python31\test.py”, line 11, in <module>
random_choice = random.randrange(x)
File “C:\Python31\lib\random.py”, line 174, in randrange
raise ValueError(“empty range for randrange()”)
ValueError: empty range for randrange()

Как сделать так, чтобы он не выводил ошибки?

Отредактировано droft1312 (Фев. 21, 2015 14:48:49)

Офлайн

#2 Фев. 21, 2015 14:58:50

Alex_HH
Зарегистрирован: 2014-03-03
Сообщения: 91
Репутация: +  13  -
Профиль   Отправить e-mail  

Рандом, циклы, списки.

Использовать модуль random на полную катушку.

    import random
    worrds = ['Слово0', "Слово1",  "Слово2", "Слово3", "Слово4", "Слово5", "Слово5"]
    worrds = list(set(worrds))
    random.shuffle(worrds)
    print(worrds)

['Слово4', 'Слово0', 'Слово1', 'Слово5', 'Слово3', 'Слово2']
[Finished in 0.2s]

Ваш код. Кгода все слова вывелесь в переменной х становиться 0, вот и ошибка возникает, при выборе случайного числа из нулевой последовательности.

def main():
	import random
	words = ['Слово0', "Слово1",  "Слово2", "Слово3", "Слово4", "Слово5"]
	tries = 0
	x = 6
	while True:
		random_choice = random.randrange(x)
		print(words[random_choice])
		del words[random_choice]
		x -= 1
 
	        # random_choice = random.randrange(x)
 
		tries += 1
		if tries > 5:
			break 

Слово0
Слово2
Слово1
Слово4
Слово3
Слово5
[Finished in 0.1s]



————–
Зимой и летом heavy metall.
Технический прогресс - это падение вверх. Alex_HH (с)
Эстетизация жестокости есть квинтэссенция смысла человеческого существования. Alex_HH (с)
После бога идет не пустота, там метаданные. Alex_HH (с)

Отредактировано Alex_HH (Фев. 21, 2015 15:35:51)

Офлайн

#3 Фев. 21, 2015 15:29:50

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Рандом, циклы, списки.

itertools

Отредактировано sander (Фев. 21, 2015 15:30:10)

Офлайн

#4 Фев. 22, 2015 03:06:16

droft1312
Зарегистрирован: 2015-01-17
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Рандом, циклы, списки.

Alex_HH
Использовать модуль random на полную катушку.
Спасибо!

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version