有人可以解释一下以下脚本有什么问题吗?
我最近开始用Python学习编程,所以对于这里经验丰富的人来说这可能是非常微不足道的,但请仔细研究并让我知道它有什么问题。我们的想法是编写一个反转给定字符串的脚本。我知道使用s[::-1]
有一种更简单的方法可以做到这一点,但我想以自己的方式做到这一点。错误是否与z
没有以正确的方式定义有关?如果是这样,请告诉我如何解决它。谢谢!
def reverse(x):
y = len(x)
for i in range(y-1):
z[i] == x[y - 1 - i]
return z
答案 0 :(得分:4)
你使用了双“=”,它返回True或False进行比较。你应该使用“=”。
我强烈建议您阅读有关操作符的信息,因为它会在编码时节省大量时间:
http://www.tutorialspoint.com/python/python_basic_operators.htm
答案 1 :(得分:1)
首先,从您最近的评论中我推断出您的python程序是作为bash脚本执行的。要使其正确执行,请将此行添加到顶部:
#!/usr/bin/env python
然后是反向功能。其他人都指出你需要使用赋值运算符(=
)而不是相等运算符(==
)。但这并不能解决问题,因为z
未定义。但是我们应该如何定义呢?它不能是字符串,因为字符串是不可变的,所以你不能像你想要的那样更改字符串中的单个字符。
如果您决定使用与此类似的算法,pythonic解决方案是让z
成为列表,并使用join
的{{1}}方法来连接列表string
中的字符到末尾的单个字符串。但我们也没有走出困境。 z
是从0到range(y - 1)
的列表,但您也希望在该列表中包含y - 2
。所以我们需要使用y - 1
代替。
这一切为我们提供了以下代码:
range(y)
答案 2 :(得分:0)
我看到的一个错误是您在第5行使用比较运算符(==),您可能希望使用assign运算符(=)