在列表中加扰字符串字母吗?

时间:2018-11-24 13:26:20

标签: python arrays string

我试图弄清楚如何在python IDLE的数组/列表的1个区域中加扰。在这个站点上寻找答案之后,我遇到了一个代码(现在找不到),所以我对其进行了一些编辑,因为它仅适用于数组中的一个字符串。这就是我得到的

import random
word1 = input("Enter a phrase / word: ")
str_var = ["sa",word1]
r=list(str_var[1])
random.shuffle(r)
print (''.join (r))

如您所见,我需要将变量“ r”用作中间人。它有效,但是我觉得它很长。

import random
word1 = input("Enter a phrase / word: ")
str_var = list["sa", word1]
random.shuffle(str_var[1])
print (''.join (str_var[1]))

如何裁切中间人? 如果有任何用途,这是我得到的错误:

Traceback (most recent call last):
  File "C:/Users/HP/Downloads/Delete Me.py", line 3, in <module>
    str_var = list["sa", word1]
TypeError: 'type' object is not subscriptable

1 个答案:

答案 0 :(得分:1)

首先,您会收到错误消息,因为您使用了错误的语法来创建列表:

str_var = list["sa", word1]

list函数,因此其参数应介于(..)之间,而不是[..]之间。但是,无论如何在这一行构造列表时,都不需要显式调用list

然后您的代码仍然不起作用。 random.shuffle需要一个自己的列表,而不是字符串,这就是word1当时的含义。这就是我所做的:

random.shuffle(list(str_var[1]))

确实有效(它不会给出错误)。但是原始的str_var的值并没有改变……仔细观察后,我意识到list在这里返回了一个 new 列表,该列表被混洗,然后高兴地扔掉了。 random.shuffle的参数因此应该是一个现有变量。首先明确地将str_var[1]创建为列表,最后解决了这个问题:

import random
word1 = 'hello'
str_var = ["sa", list(word1)]
random.shuffle(str_var[1])
print (''.join (str_var[1]))

结果:

lhloe

您的结果可能有所不同。