不带字符串函数的Python回文程序

2024-04-19 12:23:37 发布

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

我是Python初学者。我写的回文程序没有使用字符串函数。

问题1:为什么第一个逻辑没有给出所需的输出?如果我错了就纠正我。

问题2:在第二个程序中,如果我跳过if语句中的i += 1,它应该给出正确的结果,因为for循环会自动增加i的值。相反,只有当我包含或不包含该语句时,它才给我正确的输出。这可能是什么原因?

逻辑1:

n = input("eNTER  STRING\n")
length = int(len(n))
n = str(n)

for i in range(0, int(length/2+1)):
   if n[i] != n[-i - 1]:
      break

if i < int(length/2 + 1):
   print("not")
else:
   print("yes")

逻辑2:

n = input("ENTER  STRING\n")
length = int(len(n))

for i in range(0, int(length/2 + 1)):
   if n[i] == n[-i - 1]:
      i += 1
   else:
      break

if i < (length / 2):
   print("not")
else:
   print("yes")

提前谢谢。。


Tags: in程序forinputstringlenifrange
3条回答

在逻辑1中,尝试if i<int(length/2):,而不是if i<int((length/2+1)):

在逻辑2中,即使删除i+=1也会得到正确的结果:

if n[i] == n[-i-1]:
    pass
else:
    break

您也可以使用以下代码:

def reverse(text):
    if len(text) <= 1:
        return text
    return reverse(text[1:]) + text[0]

n = input("ENTER  STRING\n")
if n==reverse(n):
    print ("It's a palindrome")
else:
    print ("It's not a palindrome")

第一种逻辑的解决方案是:

n = raw_input("eNTER  STRING\n")           
length = len(n)           
for i in range(0, (length/2)+1):
    if n[i] != n[-i - 1]:           
        break           

if i < int(length/2):  #Not length/2 + 1, as index starts at 0 and not 1. 
   print("not")
else:
   print("yes")

在第二个逻辑中,您只需要查看是否有来自左侧和右侧的字符不相同。所以你可以这样修改代码:

n = raw_input("ENTER  STRING\n")
length = len(n)

for i in range(0, int(length/2 + 1)):
    if n[i] is not n[-i - 1]:      #change logic here.
        break

if i < (length / 2):
   print("not")
else:
   print("yes")
while True:
    x=input("Enter a string: ")
    if x==x[::-1]:
        print ("It's a palindrom")
    else:
        print ("It's not a palindrom")

这里有一个快速测试一个单词是否是回文。你看很简单。你可以只通过字母来检查它的输入。这只是对你的一个想法。

And a little 'security' for program:

while True:
    x=input("Enter a string: ")
    if x.isalpha():#checking input has only strings
        if x==x[::-1]:
            print ("It's a palindrom")
        else:
            print ("It's not a palindrom")
    else:
        print ("We allow only strings.")

所以只处理字母字符,不处理数字、符号等

相关问题 更多 >