Python 这段代码似乎不起作用为什么我';我很困惑

Python 这段代码似乎不起作用为什么我';我很困惑,python,shuffle,Python,Shuffle,我正在尝试制作一个程序,计算机从列表中随机选取一个单词,然后将该单词中的字母混洗,但它不起作用。为什么它不起作用 import random mysports= ["swimming" , "basketball" , "soccer" , "cross country" , "football" , "cross-country skiing"] letters = mysports[0] letters1 = mysports[1] letters2 = mysports[2] lette

我正在尝试制作一个程序,计算机从列表中随机选取一个单词,然后将该单词中的字母混洗,但它不起作用。为什么它不起作用

import random
mysports= ["swimming" , "basketball" , "soccer" , "cross country" , 
"football" , "cross-country skiing"]
letters = mysports[0]
letters1 = mysports[1]
letters2 = mysports[2]
letters3 = mysports[3]
letters4 = mysports[4]
letters5 = mysports [5]
a = (random.choice(mysports)) 
if a == mysports[0]:
   b = random.shuffle(letters)
   print (b)
elif a == mysports[1]:
   c = random.shuffle(letters1)
   print (c)
elif a == mysports[2]:
   d = random.shuffle(letters2)
   print (d)
elif a == mysports[3]:
   e = random.shuffle(letters3)
   print (e)
elif a == mysports[4]:
   f = random.shuffle(letters4)
   print (f)
elif a == mysports[5]:
   g = random.shuffle(letters5)
   print (g)
当我尝试运行它时,它给了我以下信息:

回溯(最近一次调用last):文件“python”,第23行,在 TypeError:“str”对象不支持项分配

random.shuffle()只能洗牌列表。要做你想做的事,你必须把单词的字母变成一个列表

我建议这样做

import random
mysports= ["swimming" , "basketball" , "soccer" , "cross country" , 
"football" , "cross-country skiing"]
letters = mysports[0]
letters1 = mysports[1]
letters2 = mysports[2]
letters3 = mysports[3]
letters4 = mysports[4]
letters5 = mysports [5]
a = random.choice(mysports)
aList = []
for char in a:
    aList.extend(char)
random.shuffle(aList)
aString = ""
for char in aList:
    aString += char
print(aString)

它可以更高效地执行您想要的操作。

请参阅:将序列x洗牌到位。它修改了现有的顺序;不返回新的。非常感谢您的帮助!!!我花了这么多时间,但我没能得到它。。。无论如何,谢谢你,我从来没有想到会这么做@代码360不客气,请确保将其标记为已接受的答案。我做了,但我还有一个问题。那么,我如何让用户猜出实际单词是什么呢。我把它打印出来了,但按照你的方式,我对如何告诉用户如何猜测它有点困惑,因为我必须为每个人都这么做one@TheCoder360给我20分钟,我会给你回复的。好的,非常感谢,你喜欢专业的编码员吗?我处于中级水平,但我以前从未尝试过列表,我只是开始尝试它们。