2024-05-03 12:26:55 发布
网友
我试图忽略字符串中的每个非字母字符,并将字母字符串添加到新字符串中,这样就可以检查它是否是回文而不管大小写。在
到目前为止
new_str = '' for ch in s: ch = ch.lower if s.isalpha(): s = s + new_str return s == is_palindrome
我调用is_回文prom一个以前的函数,它检查一个小写单词是否是回文。 任何帮助都将不胜感激
以下是一种从字符串中删除所有非字母的方法:
s = 'A man, a plan, a canal: Panama!' scrunched_s = ''.join(ch.lower() for ch in s if ch.isalpha()) reversed_s = ''.join(ch.lower() for ch in s[::-1] if ch.isalpha()) print s print scrunched_s print reversed_s print scrunched_s == reversed_s
还有一个:
您的代码有多个问题。让我们一个接一个地介绍一下:
ch = ch.lower
为了调用函数或方法,您需要在函数名后使用括号(),告诉Python实际调用该函数/方法。在这里,您只需将引用分配给函数给ch。所以ch以后就不是字符了。您要做的是使用ch = ch.lower()。
()
ch
ch = ch.lower()
if s.isalpha():
这个检查通常是可以的,但是s可能不是你的意思。s是完整的字符串,而{}是迭代中当前的字符。你可能是说if ch.isalpha()。
s
if ch.isalpha()
s = s + new_str
同样,s是您要迭代的完整字符串。您可能不是有意在s上附加一些内容。您可能需要在另一个变量中收集一些结果。在
说到结果,new_str被初始化为空字符串'',并且永远不会被修改,因此您将向字符串s追加一个空字符串(这不会做任何事情)。在
new_str
''
您的可能的意思是修改new_str,如果前面的条件为真,则附加字符:new_str = new_str + ch
new_str = new_str + ch
return s == is_palindrome
和前面一样,为了调用函数,您需要使用括号。否则,您将比较字符串s与此处的is_palindrome函数(这不太可能是真的)。在
is_palindrome
此外,s是输入字符串(您在整个循环中意外地修改了它?)。你可能是想在这里查看new_str。在
最后,is_palindrome可能将一个字符串作为输入,并返回该字符串是否为回文。所以你不想把它的结果和字符串进行比较。
修复后,完整代码可能如下所示:
new_str = '' for ch in s: ch = ch.lower() if ch.isalpha(): new_str = new_str + ch return is_palindrome(new_str)
以下是一种从字符串中删除所有非字母的方法:
还有一个:
^{pr2}$您的代码有多个问题。让我们一个接一个地介绍一下:
ch = ch.lower
为了调用函数或方法,您需要在函数名后使用括号
()
,告诉Python实际调用该函数/方法。在这里,您只需将引用分配给函数给ch
。所以ch
以后就不是字符了。您要做的是使用ch = ch.lower()
。if s.isalpha():
这个检查通常是可以的,但是}是迭代中当前的字符。你可能是说
s
可能不是你的意思。s
是完整的字符串,而{if ch.isalpha()
。s = s + new_str
同样,
s
是您要迭代的完整字符串。您可能不是有意在s
上附加一些内容。您可能需要在另一个变量中收集一些结果。在说到结果,
new_str
被初始化为空字符串''
,并且永远不会被修改,因此您将向字符串s
追加一个空字符串(这不会做任何事情)。在您的可能的意思是修改
new_str
,如果前面的条件为真,则附加字符:new_str = new_str + ch
return s == is_palindrome
和前面一样,为了调用函数,您需要使用括号。否则,您将比较字符串
s
与此处的is_palindrome
函数(这不太可能是真的)。在此外,
s
是输入字符串(您在整个循环中意外地修改了它?)。你可能是想在这里查看new_str
。在最后,
is_palindrome
可能将一个字符串作为输入,并返回该字符串是否为回文。所以你不想把它的结果和字符串进行比较。修复后,完整代码可能如下所示:
相关问题 更多 >
编程相关推荐