下面的Python脚本有什么问题?
有人能解释一下下面的脚本有什么问题吗 我最近开始学习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]
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用于什么?这背后的原因是什么?正如其他人指出的,上述脚本中的一个错误(即使是逻辑错误)是运算符的错误使用。