0

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

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

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

3 回答 3

4

您使用了 double "=" 返回 True 或 False 进行比较。你应该使用“=”。

我强烈建议您阅读有关运算符的信息,因为它会在编码时为您节省大量时间:

http://www.tutorialspoint.com/python/python_basic_operators.htm

于 2013-08-01T07:15:17.603 回答
1

首先,根据您最近的评论,我推断您的 python 程序是作为 bash 脚本执行的。要让它正确执行,请将此行添加到顶部:

#!/usr/bin/env python

然后是反向功能。其他人都指出您需要使用赋值运算符(=)而不是相等运算符(==)。但这并不能解决问题,因为z未定义。但是我们应该如何定义呢?它不能是字符串,因为字符串是不可变的,因此您不能像尝试那样更改字符串中的单个字符。

如果您确定要使用完全这样的算法,pythonic 的解决方案是 letz是一个列表,并使用join方法string将列表中的字符连接z到最后的单个字符串。但我们也还没有走出困境。这range(y - 1)是一个从 0 到 的列表y - 2,但您也希望y - 1在该列表中拥有。所以我们需要range(y)改用。

总之,这为我们提供了以下代码:

def reverse(x):
    y = len(x)
    z = list(x) # Using the characters of x will give it the correct length
    for i in range(y):
        z[i] = x[y - 1 - i]
    return "".join(z)
于 2013-08-01T07:49:23.710 回答
0

我看到的一个错误是您在第 5 行使用了比较运算符 (==),您可能想在其中使用分配运算符 (=)

于 2013-08-01T07:16:35.537 回答