Python: иногда печать всего массива вместо одного слова

Все еще довольно новичок в Python, и в настоящее время я просто делаю случайные вещи в свободное время, чтобы помочь мне учиться. В настоящее время я работаю над этим:

import sys
import random
import time
import pyperclip

print ('shit talk generator')
names = str(raw_input('Usernames: '))

splitNames = names.split(',')
splitNames.append(splitNames)


while True:   
    for x in range(1):
        iqValue = random.randint(-100,10000)
    randomName = random.choice(splitNames)
    print ('Wow %s, That was a %s IQ Play!' % (randomName, iqValue))
    clipboardCopy = 'Wow %s, That was a %s IQ Play!' % (randomName, iqValue)
    pyperclip.copy(clipboardCopy)
    print('waiting 2')
    time.sleep(2)

В основном, как вы уже поняли, просто генерирует говно и сохраняет его в моем буфере обмена. Теперь, иногда при печати вывода он печатает весь массив вместо одного слова. Вот фрагмент вывода:

shit talk generator
Usernames: lewis, daniel, james, john, jack, roger, fred, jones
Wow  john, That was a 1073 IQ Play!
waiting 2
Wow  roger, That was a 6182 IQ Play!
waiting 2
Wow  jack, That was a 3330 IQ Play!
waiting 2
Wow ['lewis', ' daniel', ' james', ' john', ' jack', ' roger', ' fred', ' jones', [...]], That was a 5734 IQ Play!
waiting 2
Wow ['lewis', ' daniel', ' james', ' john', ' jack', ' roger', ' fred', ' jones', [...]], That was a 4963 IQ Play!
waiting 2
Wow  fred, That was a 223 IQ Play!
waiting 2
Wow  james, That was a 7995 IQ Play!
waiting 2
Wow lewis, That was a 7620 IQ Play!
waiting 2

Теперь, поскольку это прерывисто, это заставляет меня поверить, что он сохраняет всю себя как элемент в списке, ошибаюсь ли я, предполагая это? Как мне исправить это и убедиться, что из входных данных выбирается только действительное имя пользователя? Любая помощь / руководство приветствуется.

splitNames.append(splitNames) Что вы ожидаете от этого?
Patrick Haugh 12.06.2018 16:06

У меня сложилось впечатление, что добавлю все, что есть в splitNames, в массив / список.

Trap 12.06.2018 16:08
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема именно в том, как вы говорите, и виноват этот код прямо здесь:

splitNames = names.split(',')
splitNames.append(splitNames)

После инициализации splitNames вы добавляете его к самому себе. Следовательно, к моменту выполнения вашей функции

splitNames = ['lewis', ' daniel', ' james', ' john', ' jack', ' roger', ' fred', ' jones', ['lewis', ' daniel', ' james', ' john', ' jack', ' roger', ' fred', ' jones']]

Поскольку ваша функция выбирает случайный элемент из вашего списка, она иногда выбирает последний элемент, которым является сам список. Просто удалите строку .append(), и ваш код должен работать так, как вы намереваетесь.

Удалил эту строку и работает как задумано, спасибо. Было впечатление, что что-то нужно вызвать, чтобы добавить его в список (например, .append ()), не понимал, что разделение уже было сделано.

Trap 12.06.2018 16:11

Интересный факт: splitNames на самом деле больше похож на ['a', 'b', ['a', 'b', ['a', 'b', [...]]]]. Это бесконечно глубоко. Вот почему в их исходном выпуске присутствует [..]. Вот как python печатает рекурсивно определенные списки.

Patrick Haugh 12.06.2018 16:14

Другие вопросы по теме