以下是检查列表是否为回文的代码。它为983提供了正确的输出。我哪里出错?
def palindrome(num):
flag=0
r=num[::-1]
for i in range (0, len(num)-1):
if(r[i]==num[i]):
flag=1
else:
flag=0
return flag
答案 0 :(得分:23)
如果不匹配,您应该立即返回。而且,你只需要迭代一半的长度:
def function(...):
...
for i in range (0, (len(num) + 1) / 2):
if r[i] != num[i]:
return False
return True
def palindrome(num):
return num == num[::-1]
答案 1 :(得分:4)
这会更容易:
def palindrome(num):
if num[::-1] == num:
return True
else:
return False
答案 2 :(得分:1)
您的for
循环会检查所有字符对,无论它是否发现不匹配。因此,在字符串'38113'的情况下,它将返回True
,因为在检查'38113'中最后一位数字的相等性后,flag
变量将被设置为True
版本'31183'(均等于3,而字符串不是回文)
因此,您需要在找到不匹配后立即返回False
;如果您检查了所有字符但未找到它 - 则返回True
,如下所示:
def palindrome(num):
r = num[::-1]
for i in range (0, len(num)-1):
if(r[i] != num[i]):
return False
return True
此外,正如有人指出使用python的切片会更好 - 请查看documentation。
答案 3 :(得分:0)
仅仅是为了记录,对于那些寻找更多算法来验证给定字符串是否为回文的人,有两种方法可以实现相同的目标(使用while
和for
循环):< / p>
def is_palindrome(word):
letters = list(word)
is_palindrome = True
i = 0
while len(letters) > 0 and is_palindrome:
if letters[0] != letters[-1]:
is_palindrome = False
else:
letters.pop(0)
if len(letters) > 0:
letters.pop(-1)
return is_palindrome
......第二个:
def is_palindrome(word):
letters = list(word)
is_palindrome = True
for letter in letters:
if letter == letters[-1]:
letters.pop(-1)
else:
is_palindrome = False
break
return is_palindrome
答案 4 :(得分:0)
str1=str(input('enter string:'))
save=str1
revstr=str1[::-1]
if save==revstr:
print("string is pailandrom")
else:
print("not pailadrom")
答案 5 :(得分:0)
# We are taking input from the user.
# Then in the function we are reversing the input i.e a using
# slice [::-1] and
# storing in b
# It is palindrome if both a and b are same.
a = raw_input("Enter to check palindrome:")
def palin():
#Extended Slices to reverse order.
b = a[::-1]
if a == b:
print "%s is palindrome" %a
else:
print "%s is not palindrome" %a
palin()
答案 6 :(得分:0)
这会容易得多:
def palindrome(num):
a=num[::-1]
if num==a:
print (num,"is palindrome")
else:
print (num,"is not palindrome")
x=input("Enter to check palindrome:")
palindrome(x)
答案 7 :(得分:0)
在我看来,这是最优雅的:
def is_palindrome(s):
if s != '':
if s[0] != s[-1]:
return False
return is_palindrome(s[1:-1])
return True
is_palindrome()函数中的代码也相同:
pip install is-palindrome
>>> from is_palindrome import is_palindrome
>>> x = "sitonapanotis"
>>> y = is_palindrome(x)
>>> y
True
在安装与导入时要注意连字符与下划线
答案 8 :(得分:-1)
var input = "Sun, 11 Jun 2017 14:14:37 GMT";
console.log(new Date(input).toJSON().replace(/^.*(\d\d)-(\d\d)-(\d\d).*$/, '$3-$2-$1'));
答案 9 :(得分:-2)
def palindrome(a):
a=raw_input('Enter :')
b=a[::-1]
return a==b