gpt4 book ai didi

Python错误TypeError : string indices must be integers

转载 作者:行者123 更新时间:2023-11-28 18:40:36 31 4
gpt4 key购买 nike

我是 Python 的新手,所以如果这是一个愚蠢的错误,请原谅我!

我一直在研究密码生成器以在技术俱乐部展示。它的工作原理是它要求您输入一个词。您输入的单词会变成一个列表。然后它将列表中的每个字母更改为其他字母以创建一个唯一的密码(我知道这是有缺陷的)。当我运行代码时,它显示 TypeError: string indices must be integers。我的代码有什么问题?

print ("Leo's Password Generator")
print ('Please enter a word')
word = input()


print ('Enter another word:')
word2 = input()
word = word2 + word
word.split()

def print_list(toon):
for i in toon:
if toon[i] == 'e':
toon[i] = '0'


print_list(word)
print (word)

最佳答案

问题是您将一个字符串传递给 print_list。当您遍历一个字符串时,它会将其拆分为单字符字符串。所以,本质上你正在做的是调用 toon['a'],这是行不通的,因为你必须使用整数来按索引访问 iterable。

另请注意,您和 Batuhan 在处理字符串的方式上都犯了错误。即使你修复了上面的错误,之后你仍然会立即得到另一个错误。在 python 中,string 不允许项目分配,因此您将不得不创建一个全新的字符串,而不是重新分配其中的单个字符。

如果您愿意,您可以使用列表推导式在显着减少的空间内完成相同的任务。这是一个例子:

def print_list(toon):
return ''.join([ch if ch != 'e' else '0' for ch in toon])

这会从 toon 创建一个新字符串,其中所有出现的“e”都已替换为“0”,并且所有非“e”字符都像以前一样保留。

编辑:我可能误解了你的目的。 word.split() 因为整个语句不执行任何操作 - split 不会重新分配,您必须执行 word = word .split() 如果你想在该语句之后的单词等于一个字符串列表。但是 - 是否有您首先尝试拆分字符串的原因?为什么要将两个单独的词分配给一个名为 word 的变量?这没有任何意义,并且让我们很难判断您想要完成什么。

关于Python错误TypeError : string indices must be integers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26725150/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com