Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-新的初学者问题,示例文件中的无效语法_Python_Syntax - Fatal编程技术网

Python-新的初学者问题,示例文件中的无效语法

Python-新的初学者问题,示例文件中的无效语法,python,syntax,Python,Syntax,我正在努力学习python,但我在基础方面已经失败了 我正在阅读一本书中的一组示例,第一个示例是: import sys Zero = [' *** ',' * * ','* *','* *','* *',' * * ',' *** '] One = [' * ',' ** ',' * ',' * ',' * ',' * ',' *** '] Two = [' *** ',' * * ',' *

我正在努力学习python,但我在基础方面已经失败了

我正在阅读一本书中的一组示例,第一个示例是:

import sys

Zero = ['  ***  ',' *   * ','*     *','*     *','*     *',' *   * ','  ***  ']
One = ['   *   ','  **   ','   *   ','   *   ','   *   ','   *   ','  ***  ']
Two = ['  ***  ',' *   * ',' *  *  ','   *   ','  *    ',' *     ',' ***** ']
Three = [' ***** ','     * ','   **  ','     * ','     * ',' *  *  ','  **   ']
Four = ['    *  ','   *   ','  *    ',' *     ',' ******','    *  ','    *  ']
Five = [' ***** ',' *     ',' ****  ','     * ','     * ',' *   * ','  ***  ']
Six = ['  *    ',' *     ',' *     ',' ****  ',' *   * ',' *   * ',' ****  ']
Seven = [' ***** ','     * ','    *  ','   *   ','  *    ',' *     ',' *     ']
Eight = ['  ***  ',' *   * ',' *   * ','  ***  ',' *   * ',' *   * ','  ***  ']
Nine = ['  **** ',' *   * ',' *   * ','  **** ','     * ','     * ','     * '] 

Digits = [Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine]

try:
    digits = sys.argv[1]
    row = 0
    while row < 7:
        line = ''
        column = 0
        while column < len(digits):
            number = int(digits[column])
            digit = Digits[number]
            line += digit[row] + ' '
            column += 1
        print(line)
        row += 1
except IndexError:
    print('usage: bigdigits.py <number>')
except ValueError as err:
    print(err, 'in', digits)
导入系统 零=['***'、'***'、'***'、'***'、'***'、'***'、'***'、'***'] 一=['*'、'**'、'*'、'*'、'*'、'*'、'*'、'*'、'***'] 两个=['***'、'***'、'***'、'*'、'*'、'*'、'*'、'***'] 三=['******'、'***'、'***'、'***'、'***'、'***'、'***'、'***'、'***'] 四=['*'、'*'、'*'、'*'、'****'、'*'、'*'、'*'] 五个=['****'、'*'、'****'、'*'、'*'、'*'、'***'、'***'] 六个=['*'、'*'、'*'、'**'、'**'、'**'、'**'、'**'] 七=['****'、'*'、'*'、'*'、'*'、'*'、'*'、'*'、'*'] 八个=['***'、'***'、'***'、'***'、'***'、'***'、'***'、'***'] 九=['***'、'***'、'***'、'***'、'***'、'*'、'*'、'*'、'*'] 数字=[零,一,二,三,四,五,六,七,八,九] 尝试: 数字=系统argv[1] 行=0 当行<7时: 行=“” 列=0 列 当我运行bigdights.py1355时,我得到一个错误,说SyntaxError:Invalid Syntax。我认为这与错误的路径有关,我正在使用C:\py3eg作为程序的路径。当我将它复制到C:\Python32路径时,同样的事情发生了。我甚至从图书网站上下载了代码,但仍然得到了错误,所以代码显然很好

这本书是关于Python3编程的,我已经安装了Python3.2.1版


如果有人能指出我犯这个错误的原因,我将非常感激

您的代码是2.6+和3+中的有效Python代码。但是,在Python 2.5下会产生以下错误消息:

File "syntax-error.py", line 31
  except ValueError as err:
                     ^
SyntaxError: invalid syntax
这是因为Python2.5不知道
作为
关键字。在2.5中,您将使用逗号:

  except ValueError, err:
请注意,这将破坏Python3.x的兼容性


与其应用这些修补程序使代码在旧的2.5版本中运行,不如切换到更新的Python版本。

为了更好的可读性,请尝试使用这种语法来定义零到九(尽管它们最好命名为“零”到“九”,甚至是“0”到“9”-保存类的大写名称,而不是变量):

编辑:这里有一些split/zip/*魔术来定义你的数字:

digitparts = """\
  ***  |   *   |  ***  | ***** |    *  | ***** |  *    | ***** |  ***  |  **** 
 *   * |  **   | *   * |     * |   *   | *     | *     |     * | *   * | *   * 
*     *|   *   | *  *  |   **  |  *    | ****  | *     |    *  | *   * | *   * 
*     *|   *   |   *   |     * | *     |     * | ****  |   *   |  ***  |  **** 
*     *|   *   |  *    |     * | ******|     * | *   * |  *    | *   * |     * 
 *   * |   *   | *     | *  *  |    *  | *   * | *   * | *     | *   * |     * 
  ***  |  ***  | ***** |  **   |    *  |  ***  | ****  | *     |  ***  |     * """.splitlines()

Digits = zip(*(s.split('|') for s in digitparts))

我使用的是Eclipse+Pydev,python v.3.2.3,您的代码在Eclipse和IDLE中都工作得很好。重点是“除了ValueError as err:”这句话中的“as”一词:“在您的IDE中不是关键字,所以我认为您应该将python切换到更高版本。

请提供更多信息:特别是完整的错误消息,包括投诉的线路和位置。(因为你放在那里的东西是有效的。)也许你并行安装了Python2.*并且意外地使用它来执行脚本?Python2.*会将
ValueError抱怨为err
部分。如果在命令行中键入
python
,会发生什么情况?它会显示哪个版本?您的代码运行正常-刚刚检查过。再次检查您是否正在使用python 2.*对我来说也适用于python 2.6.1。@Kjell Everson:旁注:我不确定您正在使用哪本书,但这段代码可以说不是一个好的python编程模型。它看起来太像C代码了。这个程序的一个更传统的Python版本会更清晰,而且可能更短。例如,我建议您查看中列出的一些资源。感谢您的回复,我再次检查了,我相当确定我有v.3.2.1,当我空闲时,它会这样说,然后按“关于”。关于错误消息Chris,它只是说SyntaxError:IDLE Python shell中的语法无效,我在bigdights.py后面输入的数字被标记为红色。
digitparts = """\
  ***  |   *   |  ***  | ***** |    *  | ***** |  *    | ***** |  ***  |  **** 
 *   * |  **   | *   * |     * |   *   | *     | *     |     * | *   * | *   * 
*     *|   *   | *  *  |   **  |  *    | ****  | *     |    *  | *   * | *   * 
*     *|   *   |   *   |     * | *     |     * | ****  |   *   |  ***  |  **** 
*     *|   *   |  *    |     * | ******|     * | *   * |  *    | *   * |     * 
 *   * |   *   | *     | *  *  |    *  | *   * | *   * | *     | *   * |     * 
  ***  |  ***  | ***** |  **   |    *  |  ***  | ****  | *     |  ***  |     * """.splitlines()

Digits = zip(*(s.split('|') for s in digitparts))