python函数不起作用

时间:2017-05-01 21:51:49

标签: python list

有人能帮助我吗?我试图让每个字符都应该是' x'。它不工作! 我已经创建了一个函数(可以)应该返回xxx ..例如,如果我把'你好'在列表中,我希望此功能返回' xxxxx'。

def encriptar(lletra):
    lletra = 'x'
    return lletra

letra = [input("Introduce la cadena: ")]
x=0

for x in range(0,len(letra)):
    letra[x]=encriptar(letra[x])
    print(letra[x])
    x+=1

print(letra)

2 个答案:

答案 0 :(得分:1)

问题在于letra = [input("Introduce la cadena: ")]没有回复你的期望。您将获得一个单个元素的列表,该元素是一个字符串。无论如何,Python中的字符串是不可变的。

快速简单的修复方法是将字符串转换为字符列表:

letra = list(input("Introduce la cadena: "))

因为现在你有一个可变列表并可以替换其中的每个字符:

for x in range(0,len(letra)):
    letra[x]=encriptar(letra[x])
    print(letra[x])

你必须在打印之前加入它:

print(''.join(letra))

答案 1 :(得分:0)

不是将用户输入作为字符串,而是迭代它,而是将用户输入的字符串放入列表并迭代它。

letra = [input("Introduce la cadena: ")]

如果用户输入hello,则表示您最终将letra设置为["hello"]。也就是说,一个项目的列表,其中该项目是一个字符串。因此,您将整个字符串传递给encriptar,而不是一次传递给单个字符。

相反,请执行:

letra = input("Introduce la cadena: ")

然后您将遇到字符串不可变的问题,因此您需要构建一个新字符串,而不是更新现有字符串。

您可以使用列表解析轻松构建字符列表:

new_chars = [
    encriptar(c)
    for c in letra
]

然后从该列表中创建一个新字符串:

letra = "".join(new_chars)
相关问题