首页 > 解决方案 > 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

现在由于这是断断续续的,它让我相信它将整个自身作为一个项目存储在列表中,我假设这个是错误的吗?我将如何解决这个问题并确保它只从输入中选择有效的用户名?非常感谢任何帮助/指导。

标签: pythonarrayslistappend

解决方案


问题正是您所说的,罪魁祸首是这里的代码:

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()行,您的代码就会按您的意愿工作。


推荐阅读