这是我的代码
k = []
dot = input('length:')
a, b = input('Enter:')
for i in range(0,dot):
k.append('.')
for i in range(a, b+1):
k[i].append('x')
print k
当我尝试运行它时,输出将是,
length:9
Enter:3, 4
Traceback (most recent call last):
File "light_switch.py", line 8, in <module>
k[i].append('x')
AttributeError: 'str' object has no attribute 'append'
我想在'。'的位置插入'x'。所以我该怎么做。
答案 0 :(得分:1)
如果您想用dropdown-menu
替换第二个范围内的'.'
,请执行以下操作:
'x'
错误是因为当您索引for i in range(a, b+1):
k[i] = 'x'
时,您获得了k[i]
,str
只有k
,但值为list
}。 str
,是不可变的,缺少str
方法(因为你说你想要替换,而不是连接,你不会想要一个append
- 类似的操作)。如果您希望append
- 与每个append
的行为相似,则会将'.'
更改为k[i].append('x')
(这在逻辑上构建新的连续k[i] += 'x'
并指定它返回,而不是在适当的位置发生变异),或者在str
的末尾添加一大堆x
,你只需list
。
注意:如果k.append('x')
或a < 0
,则会引发b+1 > dot
;前者是不可修复的,后者可以通过简单地使第一个IndexError
循环运行for
而不是range(max(dot, b+1))
来以一种愚蠢的方式处理。
答案 1 :(得分:0)
要用x替换点,您可以尝试以下代码:
k = []
dot = input('length:')
a, b = input('Enter:')
for i in range(0,dot):
k.append('.')
for i in range(a, b+1):
k[i] = 'x'
print k
你已经有'。'在您尝试添加x的位置,因此您只需要指定x而不是'。'。您尝试使用[j] .append('x')访问的位置不是列表,您正在尝试将x附加到它。所以它给出了错误。