繁体   English   中英

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

[英]Scrambling string letters in a list?

我试图弄清楚如何在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

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

str_var = list["sa", word1]

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

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

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

并且确实有效(它不会给出错误)。 但原str_var值没有变化......仔细一看后,我意识到, list这里返回一个新的列表,这被打乱,然后兴高采烈地扔掉。 因此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

您的结果可能会有所不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM