以下Python脚本有什么问题?

时间:2013-08-01 07:13:22

标签: python

有人可以解释一下以下脚本有什么问题吗?

我最近开始用Python学习编程,所以对于这里经验丰富的人来说这可能是非常微不足道的,但请仔细研究并让我知道它有什么问题。我们的想法是编写一个反转给定字符串的脚本。我知道使用s[::-1]有一种更简单的方法可以做到这一点,但我想以自己的方式做到这一点。错误是否与z没有以正确的方式定义有关?如果是这样,请告诉我如何解决它。谢谢!

def reverse(x):
    y = len(x)
    for i in range(y-1):
        z[i] == x[y - 1 - i]    
    return z

3 个答案:

答案 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运算符(=)