python3中的标准输出为空

时间:2018-11-09 04:36:12

标签: python-3.x

这是一个查找字符串是否为回文符的程序。但是,当我运行此代码时,出现错误“标准输出为错误”。

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));

1 个答案:

答案 0 :(得分:1)

代码中有一些错误,

首先,您正在尝试像int这样的for i in lengths进行迭代,这将引发错误。您必须像for i in range(lengths)一样使用它。

此外,即使在初始化count = count+1之前,您仍在尝试count,这将引发错误。为了解决这个问题,您可以在循环到count之前初始化变量0

该代码的另一个问题是,您想比较word[i]word[j],其中jlength,因为长度为{ {1}},索引从n0。因此,您必须将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帖子。

如果可以使用索引来反转字符串,则可以进一步改进它。如果可以反转字符串,然后检查原始字符串。

~