正则表达式中未转义的左括号被弃用,在正则表达式中传递;

时间:2017-01-15 17:35:48

标签: python list recursion

我正在尝试编写一个程序,在python中使用递归查找列表的总和,我的代码就是这个

value = 0

def sum_list(alist):
    global value
    if len(alist) == 0:
        return value
    value += alist.pop()
    return sum_list(alist)

print sum_list(range(10))

但是当我执行这个脚本时,我收到了一个错误的错误。

Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /usr/bin/print line 528.
Error: no "print" mailcap rules found for type "text/x-python"

我搜索了它,但无法理解为什么会出现此错误。 帮助将不胜感激

3 个答案:

答案 0 :(得分:4)

您的代码是有效的Python 2.(它不是有效的Python 3,因为print语句必须不同。)

你不会说你实际上是如何运行这段代码的,但看起来它实际上并没有被解释为Python程序。错误消息来自/ usr / bin / print,所以我认为你已经设法将这个解释为shell脚本,以及&#34; print&#34;在你的最后一行正在运行/ usr / bin / print。这显然不是你想要的。

如果您在源文件中执行此操作,请尝试在其顶部放置以下行,以告诉shell将其作为Python程序运行:

#!/usr/bin/env python

或者,使用

运行它
python myfile.py

答案 1 :(得分:1)

我遇到了这个问题,这是终端提示的疏忽。我输入的是 print 而不是 python

$ print sum.py
$ Error: no "print" mailcap rules found for type "text/x-python"

正确方法:

$ python sum.py
$ program runs successfully...

答案 2 :(得分:0)

错误消息来自Perl。不知道你是如何使用这个Python代码调用它的。

另见http://www.perlmonks.org/?node_id=113525