python-3.x - python3中的标准输出为空
问题描述
这是一个查找字符串是否为回文的程序。但是当我运行这段代码时,我得到了错误“标准输出错误”。
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));
解决方案
代码有一些错误,
首先,您正在尝试迭代一个int
like for i in lengths
,这会引发错误。您必须像使用它一样for i in range(lengths)
。
count = count+1
此外,您甚至在初始化之前就尝试这样做count
,这将引发错误。count
要解决这个问题,您可以在循环之前将变量初始化为0
.
代码的另一个问题是,您要比较word[i]
和word[j]
where j
islength
这是不可能的,因为对于 length 字符串n
,索引从0
to运行n-1
。因此,您必须使用length-1
as j
。
此外,Python 中不需要分号。
纠正我上面提到的所有事情,您可以像这样重写代码
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)
如果您想了解~
操作员的工作原理,请查看这篇文章。
如果您可以使用索引来反转字符串,则可以进一步改进它。如果您可以反转字符串,然后检查原始字符串。
class Palindrome:
@staticmethod
def is_palindrome(word):
if word == word[::-1]:
return "yes"
else:
return "no"
word = input()
print(Palindrome.is_palindrome(word)
推荐阅读
- python - 什么是多项式/线性核特征图?
- c# - 如何通过 API 在 Gitlab 中编辑问题?
- reactjs - Nexted 样式的组件节点及其子节点未出现在反应测试库 DOM 中
- spring-boot - 如何排除 Spring Boot 组件在 JUnit 单元测试中运行?
- javascript - Chrome不允许保持登录iframe - Angular
- airflow - 气流任务卡住:任务处于“运行”状态,这不是执行的有效状态。必须清除任务才能运行
- lua - 循环直到按键释放或按键按下
- python-3.x - 在 python 中使用 factor_analyzer 和 Scree Plots 理解特征值
- r - rvest::read_html() 几乎不提取此网页的任何 html 代码
- css - 无法将聊天输入与 CSS 中的 div 底部对齐