我会将评论中的大部分信息收集到一个答案中。
首先,在您发布的代码中,该行
if string == "(" or ")":
将始终评估为,True
因为非空字符串始终为True
. 你写的相当于:
if ( string == "(" ) or ")":
因此相当于
if ( string == "(" ) or True:
这总是 True
。
接下来,由于您似乎只是想检查您的字符串是否仅包含 '()' 集,因此您可以使用 Jon Clements 的以下建议not string.replace('()','')
:
if not string.replace('()', ''):
让我们看看这是做什么的:
>>> not '()'.replace('()', '')
True
>>> not '()()'.replace('()', '')
True
>>> not '(()'.replace('()', '')
False
>>> not '(pie)'.replace('()', '')
False
最后,您不应该调用变量字符串,因为它会影响标准库中的模块。类似的东西user_given_string
可能会起作用。
总结一下:
def recursion():
user_given_string = input("Enter your string: ")
if not user_given_string.replace('()', ''):
print("The string is even.")
else:
print("The string is not even.")