Все еще довольно новичок в 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, в массив / список.






Проблема именно в том, как вы говорите, и виноват этот код прямо здесь:
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 ()), не понимал, что разделение уже было сделано.
Интересный факт: splitNames на самом деле больше похож на ['a', 'b', ['a', 'b', ['a', 'b', [...]]]]. Это бесконечно глубоко. Вот почему в их исходном выпуске присутствует [..]. Вот как python печатает рекурсивно определенные списки.
splitNames.append(splitNames)Что вы ожидаете от этого?