如何在循环中为每个新的字符串添加一个新的字符串?Python3

2024-05-03 12:26:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图忽略字符串中的每个非字母字符,并将字母字符串添加到新字符串中,这样就可以检查它是否是回文而不管大小写。在

到目前为止

new_str = ''
for ch in s:
    ch = ch.lower
    if s.isalpha():
        s = s + new_str

return s == is_palindrome

我调用is_回文prom一个以前的函数,它检查一个小写单词是否是回文。 任何帮助都将不胜感激


Tags: 字符串innewforreturnifis字母
2条回答

以下是一种从字符串中删除所有非字母的方法:

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

还有一个:

^{pr2}$

您的代码有多个问题。让我们一个接一个地介绍一下:

  1. ch = ch.lower

    为了调用函数或方法,您需要在函数名后使用括号(),告诉Python实际调用该函数/方法。在这里,您只需将引用分配给函数ch。所以ch以后就不是字符了。您要做的是使用ch = ch.lower()

  2. if s.isalpha():

    这个检查通常是可以的,但是s可能不是你的意思。s是完整的字符串,而{}是迭代中当前的字符。你可能是说if ch.isalpha()

  3. s = s + new_str

    同样,s是您要迭代的完整字符串。您可能不是有意在s上附加一些内容。您可能需要在另一个变量中收集一些结果。在

    说到结果,new_str被初始化为空字符串'',并且永远不会被修改,因此您将向字符串s追加一个空字符串(这不会做任何事情)。在

    您的可能的意思是修改new_str,如果前面的条件为真,则附加字符new_str = new_str + ch

  4. return s == is_palindrome

    和前面一样,为了调用函数,您需要使用括号。否则,您将比较字符串s与此处的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)

相关问题 更多 >