Найти - Пользователи
Полная версия: Случайное слово из списка, без повторений
Начало » Python для новичков » Случайное слово из списка, без повторений
1 2
Monkey_Dank
Всем привет, есть такая вот задача: "Создайте программу, котороая будет выводить список слов в случайном порядке. На экране должны печататься все слова без повторений.

import random
list = ['стул', 'окно', 'кровать', 'диван', 'батарея', 'лампа', 'дверь']
count = len(list)
while count != 0:
    print(random.choice(list))
    count -=1
input("\nenter")

Так работает, но естественно с повторением слов, поэтому попробовал вот так:
while count != 0:
    print(random.randint(0,(list) -1)
    count -=1
Выдает ошибку, как я понимаю что randint работает только с числами, поэтому мысль такова: запилить выборочный выбор по индексу из списка, а потом вывести на экран слова по индексу( уже заранее random выбранных), но я не пойму как это сделать или есть более простое решение?
FishHook
l = ['стул', 'окно', 'кровать', 'диван', 'батарея', 'лампа', 'дверь']
l2 = random.shuffle(l)
Monkey_Dank
FishHook
хм,я получаю значение None, что не правильно?
list = ['стул', 'окно', 'кровать', 'диван', 'батарея', 'лампа', 'дверь']
list2 = random.shuffle(list)
for i in list:
    print(list2)
JOHN_16
Monkey_Dank
форумчанин FishHook подзабыл такой момент что shuffle() метод не возвращает новый список, а перемешивает существующий:
>>> l = ['стул', 'окно', 'кровать', 'диван', 'батарея', 'лампа', 'дверь'] # исходный список
>>> l2 = l[:] # копия исходного списка на случай если не нужно менять исходный
>>> random.shuffle(l2)
>>> l2 # перемешанный список
['батарея', 'лампа', 'диван', 'дверь', 'стул', 'кровать', 'окно']
FishHook
А ну да, виноват, я честно говоря код не проверял.
Monkey_Dank
JOHN_16
Monkey_Dankфорумчанин FishHook подзабыл такой момент что shuffle() метод не возвращает новый список, а перемешивает существующий:
В интерактвном режиме все работает, вот пишу в файле:
list = ['стул', 'окно', 'кровать', 'диван', 'батарея', 'лампа', 'дверь']
list2 = list[:] #скопировали список
print(random.shuffle(list2)) #пытаюсь вывести скопированный список, в интерактивном выводится, почему здесь я не могу вывести его
input("\nenter")

FishHook
Что значит “не могу?” Рука не поднимается, как коня пристрелить?
Вы на техническом форуме или где?
Monkey_Dank
FishHook
Что значит “не могу?” Рука не поднимается, как коня пристрелить? Вы на техническом форуме или где?
Мне выдает None, вы знаете почему так, а я нет, если не хотите помочь, лучше вообще не отвечайте на сообщения, спасибо за участие.
FishHook
Monkey_Dank
Мне выдает None
Monkey_Dank
форумчанин FishHook подзабыл такой момент что shuffle() метод не возвращает новый список, а перемешивает существующий:

PS: не надо возмущаться не по делу, если бы я не хотел вам помочь, я бы не помогал.
Вы должны отдавать себе отчет в том, что вы находитесь на техническом форуме, а не на поэтическом, поэтому свои вопросы вы обязаны формулировать корректно, четко и использовать соответствующие профилю форума термины.
Если бы вы сразу сказали нормально “код возвращает неожиданное для меня значение, вместо ожидаемого …. я получаю …..” то никто бы вас не тыкал носом.
FishHook
Если функция в питоне не возвращает ничего, это значит, что она возвращает None.
random.shuffle(list2) возвращает None, что вы и видите на экране.
Вам уже дали правильное решение
l = ['стул', 'окно', 'кровать', 'диван', 'батарея', 'лампа', 'дверь'] # исходный список
l2 = l[:]
random.shuffle(l2)
print(l2)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB