下面的Python脚本有什么问题?

下面的Python脚本有什么问题?,python,Python,有人能解释一下下面的脚本有什么问题吗 我最近开始学习Python编程,所以对于这里有经验的人来说,这可能是非常琐碎的,但是请研究一下,让我知道它有什么问题。其思想是编写一个脚本来反转给定的字符串。我知道使用s[:-1]有一种更简单的方法,但我想用我自己的方式来做。错误是否与未正确定义z有关?如果是这样,请告诉我如何修复它。谢谢 def reverse(x): y = len(x) for i in range(y-1): z[i] == x[y - 1 - i]

有人能解释一下下面的脚本有什么问题吗

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

def reverse(x):
    y = len(x)
    for i in range(y-1):
        z[i] == x[y - 1 - i]    
    return z
您使用了双“=”来进行比较,双“=”返回True或False。您应该使用“=”

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

您使用了双“=”进行比较,双“=”返回True或False。您应该使用“=”

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


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

我看到的一个错误是,您在第5行使用比较运算符(=),您可能想首先使用赋值运算符(=)

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

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

如果您决定使用与此完全相同的算法,pythonic解决方案是让
z
成为一个列表,并使用
string
join
方法将列表
z
中的字符连接到末尾的单个字符串。但我们也还没有走出困境。
范围(y-1)
是一个从0到
y-2
的列表,但您也希望在该列表中包含
y-1
。因此,我们需要使用
范围(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)

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

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

如果您决定使用与此完全相同的算法,pythonic解决方案是让
z
成为一个列表,并使用
string
join
方法将列表
z
中的字符连接到末尾的单个字符串。但我们也还没有走出困境。
范围(y-1)
是一个从0到
y-2
的列表,但您也希望在该列表中包含
y-1
。因此,我们需要使用
范围(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)

在for循环之前定义z?
=
表示比较,
=
表示分配。您需要首先在循环外部定义
z
。但你到底为什么要这样做?@RohitJain和bozdoz:如果我没有要求太多,你能详细说明一下吗?i、 e.我想知道如何在循环之前定义“z”。干杯罗希特:我这样做只是为了锻炼。仅在几天前开始学习Python。在for循环之前定义z?
=
表示比较,而
=
表示分配。您需要首先在循环外部定义
z
。但你到底为什么要这样做?@RohitJain和bozdoz:如果我没有要求太多,你能详细说明一下吗?i、 e.我想知道如何在循环之前定义“z”。干杯罗希特:我这样做只是为了锻炼。我只在几天前开始学习Python。尝试了几次,但没有效果。下面是我在执行建议的修改-回溯(最近一次调用上次)后收到的错误消息:文件“palindrome.py”,第9行,在打印反向('abcde')文件“palindrome.py”,第6行,在反向z[I]=x[y-1-I]名称错误:全局名称“z”未定义,因此无效。下面是我在执行建议的修改后得到的错误消息-回溯(上次调用):文件“palindrome.py”,第9行,反向打印('abcde'),文件“palindrome.py”,第6行,反向z[I]=x[y-1-I]name错误:全局名称“z”未定义-1用于什么?这背后的原因是什么?正如其他人所指出的,上述脚本中的一个错误(即使是逻辑错误)是运算符的错误使用。-1用于什么?这背后的原因是什么?正如其他人指出的,上述脚本中的一个错误(即使是逻辑错误)是运算符的错误使用。