在修修补补的同时,我发现了我的上一个/当前问题的问题: 使用时:
saveKey = gwdzd10q
saveKeyp = False
while [saveKeyp == True,str(saveKey(2)) == 'k']:
我明白了:
while [saveKeyp == True,str(saveKey(2)) == 'k']:
TypeError: 'str' object is not callable`
为什么会这样,我该如何解决?是因为我试图做一个或声明的方式?或者是什么?
不要介意该部分str(saveKey(2)) == 'k']
,因为我稍后会检查其他几个键,包括" d"
答案 0 :(得分:2)
我认为是
saveKey = gwdzd10q
你的意思是
saveKey = "gwdzd10q"
如果是这样,该字符串的第三个字符将是saveKey[2]
而不是saveKey(2)
。这已经是一个字符串,因此通过str()
运行它是毫无意义的。
您似乎试图表达的条件是
saveKeyp or saveKey[2] == 'k'
由于saveKeyp
是布尔值,因此使用saveKeyp == True
是多余的。
如果你想要一个由此控制的while
循环,它将是:
while saveKeyp or saveKey[2] == 'k':
但是在这种情况下,循环的主体需要修改saveKeyp
或saveKey
,否则你将有一个无限循环。
答案 1 :(得分:1)
首先,您需要使用数组语法来获取saveKey的字符:
while [saveKeyp == True,str(saveKey[2]) == 'k']:
其次,非空列表的计算结果为布尔值True。所以你在这里建立了一个无限循环。
>>> bool([False, False])
True
>>> bool([False])
True
>>> bool([])
False
>>>