使用;或;或;或类似于;使用Python 3.6的语句
在进行修补时,我发现了上一期/当前期的问题: 使用时:使用;或;或;或类似于;使用Python 3.6的语句,python,python-3.x,Python,Python 3.x,在进行修补时,我发现了上一期/当前期的问题: 使用时: saveKey = gwdzd10q saveKeyp = False while [saveKeyp == True,str(saveKey(2)) == 'k']: 我得到: while [saveKeyp == True,str(saveKey(2)) == 'k']: TypeError: 'str' object is not callable` 为什么会这样?我该如何修复它?这是因为我试图做一个或陈述的方式吗?还是什么 不
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”我想
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
,否则将有一个无限循环。首先,需要使用数组语法获取saveKey的字符:
while [saveKeyp == True,str(saveKey[2]) == 'k']:
其次,非空列表的计算结果为布尔值True。所以你在这里建立了一个无限循环
>>> bool([False, False])
True
>>> bool([False])
True
>>> bool([])
False
>>>
请不要链接到代码。相反,发布相关的代码,但不要过多地隐藏核心问题。问一个与你发布的代码相关的有重点的问题。我们是程序员,所以(1)我们想要代码(2)它应该就在问题的这里,所以我们不必做整个点击的事情,(3)它应该是问题的一个简短例子,而不是一个巨大的代码转储,因为我们的注意力跨度很短。发布一个简短、可运行的问题示例!我改变了问题,你现在可以看一下吗?
saveKey(2)
,其中saveKey
是一个字符串,没有意义-也许你想要方括号而不是括号?无论如何,整个事情都是毫无意义的——你有一个while
循环,循环的条件是2元素列表。这两个元素的值是什么并不重要——非空列表是真实值。您可能已经编写了,而True:
,这是一个无限循环。不,我正在尝试获取“while saveKeyp或saveKey[2]='k'”,是的,我的意思是“gwdzd10q”@RobM,然后我将修改答案。不清楚你用逗号的意图是什么。小家伙,我真蠢!我试过直接使用or,但它不起作用,所以我尝试了其他的方法。我真的在不知情的情况下绕着答案跳舞!谢谢你@JohnColeman