python3.0中的Forloops

2024-09-28 22:35:04 发布

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

我目前正在研究回文检测器(anna,lol,hahah等),我被要求用于循环。在

我想让程序在两个字符串之间循环(在比较值的同时有规律地向后读)。如果值相同,则回文为真;否则为假。在

我的问题是:如何让两个for循环同时运行并比较字符串的值?在

目前正在执行类似以下操作:(Python 3.0),如果需要,可以发布整个代码:

   palindrom = True
text2 = ("")
for i in nytext:
    for i in nytext[::-1]:
        text2 = (nytext[::-1] + i)
        if text2 == nytext:
            palindrom = True
        else:
            palindrom = False
return palindrom

谢谢你的帮助!在

编辑:我在描述问题时可能不够清楚。该程序执行以下操作: 它允许用户输入一个文本字符串(例如hello my name is lol),程序设计成查看这是否是回文。 它分为三个功能(和一个主要功能)。在

函数1修复了文本,使其仅被简化为字符和数字(因此LOL,,,,,,变为LOL,以便于阅读)。 2号函数用于测试(使用for循环(!)如果输入是回文。 第3个函数只是将post它是否是回文。在

用于循环,我不能简单地进行比较,例如: 背面文本=反转.text() 如果backwardtext==文本: print(“它是回文”)

我希望这能把事情弄清楚。在


Tags: 函数字符串in文本功能truefor检测器
3条回答

您可以使用zip()。在

def is_palindrome(string):
    return all(x == y for x, y in zip(string, reversed(string)))

zip()函数并行迭代两个iterable,在最短的末尾停止:

^{pr2}$

您使用zip

s = 'hannah'

for c_forward,c_backward in zip(s,s[::-1]):
    ...

也许一个稍微低一点的方法是循环索引(前提是你的项目不灵活):

^{pr2}$

对于将来的访问者来说,这些方法并不能解决问题中的所有约束,但是在python中检查字符串是否为回文的最简单方法是:

def ispal(s):
    return s == s[::-1]
def is_palindrome(txt):  
    for i, a in enumerate(txt):  
        if a!=txt[-(i+1)]:  
            return False  
    return True   

txt = 'hannah'
print txt, is_palindrome(txt)

相关问题 更多 >