这是一个查找字符串是否为回文符的程序。但是,当我运行此代码时,出现错误“标准输出为错误”。
class Palindrome:
@staticmethod
def is_palindrome(word):
flag = word;
lengths = len(word);
j=lengths;
lengths = lengths/2;
lengths = int(lengths);
for i in lengths:
if (word[i] == word[j]):
count = count+1;
j = j-1;
if (count == lengths):
r = "yes";
else:
r = "no";
return r
word = input();
print(Palindrome.is_palindrome(word));
答案 0 :(得分:1)
代码中有一些错误,
首先,您正在尝试像int
这样的for i in lengths
进行迭代,这将引发错误。您必须像for i in range(lengths)
一样使用它。
此外,即使在初始化count = count+1
之前,您仍在尝试count
,这将引发错误。为了解决这个问题,您可以在循环到count
之前初始化变量0
。
该代码的另一个问题是,您想比较word[i]
和word[j]
,其中j
是length
,因为长度为{ {1}},索引从n
到0
。因此,您必须将n-1
用作length-1
。
此外,Python中不需要分号。
更正了我上面提到的所有内容,您可以像这样重新编写代码
j
如果可以使用class Palindrome:
@staticmethod
def is_palindrome(word):
flag = word
lengths = len(word)
j=lengths-1
lengths = lengths/2
lengths = int(lengths)
count = 0
for i in range(lengths):
if (word[i] == word[j]):
count = count+1
j = j-1
if (count == lengths):
r = "yes"
else:
r = "no"
return r
word = input()
print(Palindrome.is_palindrome(word))
运算符,则可以对代码进行大量整理。可以这样做。
~
如果您想了解class Palindrome:
@staticmethod
def is_palindrome(word):
if all(word[i] == word[~i] for i in range(len(word) // 2)):
return "yes"
else:
return "no"
word = input()
print(Palindrome.is_palindrome(word)
运算符的工作原理,请查看this帖子。
如果可以使用索引来反转字符串,则可以进一步改进它。如果可以反转字符串,然后检查原始字符串。
~