【问题标题】:why doesn't my string support the item Assignment为什么我的字符串不支持项目分配
【发布时间】:2017-12-09 16:22:32
【问题描述】:

这里的想法是能够接受用户输入,女巫是Main 并将其值洗牌并重新将其输入到Second 条目中,错误消息:x[i],x[j] = x [j], x[i] TypeError: 'str' 对象不支持项目分配

from tkinter import *
import random


def randomize(a):
    Second.delete(0 , 'end')
    b = Main.get()
    c = random.shuffle(b)
    Second.insert(0 , c)








root = Tk()



Main = Entry(root)
Main.grid(row = 1,column = 0 , sticky = 'we')

Second = Entry(root)
Second.grid(row = 2 , column = 0 , sticky = 'we')


randombutton = Button(root , text = 'Randomize')
randombutton.grid(row = 3 , column = 0 , sticky = 'we')
randombutton.bind('<Button-1>' , randomize)

【问题讨论】:

  • 能否修改您的问题以提供完整的追溯?

标签: string python-3.6


【解决方案1】:

问题是你试图在一个字符串上调用random.shuffle,这是不可能的(另外,你试图将它的输出分配给c,它只会返回None)。相反,您可能希望将其转换为列表,然后再转换回字符串以在 Second 中输出。

见以下代码:

def randomize(a):
    Second.delete(0 , 'end')
    b = Main.get()
    c = list(b)
    random.shuffle(c) # Converted to a list, so it can be shuffled, see note for extra info
    Second.insert(0 , ''.join(c)) # Converted back into a string so it can be displayed

注意:random.shuffle 不返回任何值,它只是随机播放(并因此更改)您放入其中的变量。例如,在代码c = random.shuffle(b) 中,b 现在等于对输入框中的任何内容进行随机洗牌,而c 现在等于None,因为random.shuffle 不返回任何内容。

希望这会有所帮助!

【讨论】:

  • 插入的值由于某种原因没有被改组
  • 我们去 :)n
  • @CodingRonald,我的回答有误,这对你有用吗?
  • @CodingRonald 如果问题是正确的,请将其标记为答案,以便有类似问题的人找到它
猜你喜欢
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
  • 2016-04-06
  • 1970-01-01
  • 2015-03-09
  • 2019-01-03
相关资源
最近更新 更多