【问题标题】:SyntaxError: mismatched input 'print' expecting INDENTSyntaxError:不匹配的输入“打印”期望 INDENT
【发布时间】:2017-01-16 18:20:44
【问题描述】:

将 Jython 安装到 Linux 后,如何导入 sys 并打印详细信息?

thufir@doge:~$ 
thufir@doge:~$ jython --version
"my" variable $jythonHome masks earlier declaration in same scope at /usr/bin/jython line 15.
Jython 2.5.3
thufir@doge:~$ 
thufir@doge:~$ jython -i
"my" variable $jythonHome masks earlier declaration in same scope at /usr/bin/jython line 15.
Jython 2.5.3 (, Dec 21 2015, 23:18:42) 
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_111
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import sys
>>> r=sys.registry
>>> for k in r:
... print k, r[k]
  File "<stdin>", line 2
    print k, r[k]
    ^
SyntaxError: mismatched input 'print' expecting INDENT
>>> exit()
thufir@doge:~$ 

据推测,此代码适用于 Windows,但仍应执行。它们是什么类型的缩进?我完全按照example 输入。是否有我看不到的空格或制表符?

我试着缩进一点:

thufir@doge:~$ 
thufir@doge:~$ jython -i
"my" variable $jythonHome masks earlier declaration in same scope at /usr/bin/jython line 15.
Jython 2.5.3 (, Dec 21 2015, 23:18:42) 
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_111
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> r=sys.registry
>>> for k in r:
...  print k, r[k]
...  ;
  File "<stdin>", line 3
    ;
    ^
SyntaxError: mismatched input ';' expecting DEDENT
>>> exit()
thufir@doge:~$ 

【问题讨论】:

  • 您需要在输入print k, r[k] 之前添加至少一个空格。 Python 不使用关键字来标记循环/函数/的结束...它使用缩进来知道这些结束的位置。
  • 这意味着在循环内部print 需要被使用
  • 您链接到的页面中的代码存在缩进问题。 for ... 之后的块应该缩进至少一个空格(或制表符,在这里并不重要)。
  • @WillemVanOnsem 它如何结束打印语句?直接回车?
  • @Thufir:您可能需要两次输入(一个空行)。

标签: python linux command-line-interface jython indentation


【解决方案1】:

如果你们中的任何一个想要积分,我当然会接受你的回答。以下是我的工作方式:

thufir@doge:~$ 
thufir@doge:~$ jython -i
"my" variable $jythonHome masks earlier declaration in same scope at /usr/bin/jython line 15.
Jython 2.5.3 (, Dec 21 2015, 23:18:42) 
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_111
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> r=sys.registry
>>> for k in r:
...  print k, r[k]
... 
java.runtime.name Java(TM) SE Runtime Environment
python.cachedir /home/thufir/.jython-cache
sun.boot.library.path /usr/lib/jvm/java-8-oracle/jre/lib/amd64
java.vm.version 25.111-b14
java.vm.vendor Oracle Corporation
java.vendor.url http://java.oracle.com/
path.separator :
java.vm.name Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg sun.io
user.country CA
sun.java.launcher SUN_STANDARD
sun.os.patch.level unknown
python.console.readlinelib Editline
java.vm.specification.name Java Virtual Machine Specification
user.dir /home/thufir
java.runtime.version 1.8.0_111-b14
java.awt.graphicsenv sun.awt.X11GraphicsEnvironment
java.endorsed.dirs /usr/lib/jvm/java-8-oracle/jre/lib/endorsed
os.arch amd64
python.home /usr
java.io.tmpdir /tmp
line.separator 

java.vm.specification.vendor Oracle Corporation
os.name Linux
sun.jnu.encoding UTF-8
python.console org.python.util.ReadlineConsole
java.library.path /usr/lib/jni
java.specification.name Java Platform API Specification
java.class.version 52.0
sun.management.compiler HotSpot 64-Bit Tiered Compilers
os.version 4.4.0-21-generic
python.executable /usr/bin/jython
user.home /home/thufir
user.timezone 
java.awt.printerjob sun.print.PSPrinterJob
file.encoding UTF-8
java.specification.version 1.8
java.class.path /usr/share/java/jython.jar:/usr/share/java/antlr3-runtime-3.2.jar:/usr/share/java/stringtemplate.jar:/usr/share/java/antlr3-3.2.jar:/usr/share/java/asm3.jar:/usr/share/java/asm3-commons.jar:/usr/share/java/asm3-tree.jar:/usr/share/java/jnr-constants.jar:/usr/share/java/guava.jar:/usr/share/java/jsr305.jar:/usr/share/java/jnr-posix.jar:/usr/share/java/jffi.jar:/usr/share/java/jnr-ffi.jar:/usr/share/java/jnr-x86asm.jar:/usr/share/java/jnr-netdb.jar:/usr/share/java/livetribe-jsr223.jar:/usr/share/java/jline.jar:/usr/share/java/servlet-api-3.1.jar:/usr/share/java/libreadline-java.jar
user.name thufir
python.console.encoding UTF-8
java.vm.specification.version 1.8
sun.java.command org.python.util.jython -i
java.home /usr/lib/jvm/java-8-oracle/jre
sun.arch.data.model 64
user.language en
java.specification.vendor Oracle Corporation
awt.toolkit sun.awt.X11.XToolkit
java.vm.info mixed mode
java.version 1.8.0_111
java.ext.dirs /usr/lib/jvm/java-8-oracle/jre/lib/ext:/usr/java/packages/lib/ext
sun.boot.class.path /usr/lib/jvm/java-8-oracle/jre/lib/resources.jar:/usr/lib/jvm/java-8-oracle/jre/lib/rt.jar:/usr/lib/jvm/java-8-oracle/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jsse.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jce.jar:/usr/lib/jvm/java-8-oracle/jre/lib/charsets.jar:/usr/lib/jvm/java-8-oracle/jre/lib/jfr.jar:/usr/lib/jvm/java-8-oracle/jre/classes
java.vendor Oracle Corporation
python.path /usr/lib/site-python:/usr/share/jython/Lib
file.separator /
java.vendor.url.bug http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding UnicodeLittle
sun.cpu.endian little
sun.desktop gnome
sun.cpu.isalist 
>>> 
>>> exit()
thufir@doge:~$ 

我知道 python 使用空格,但是,据我所知,我正在遵循示例教程。不是为了防守,但他们可以提到按两次回车。无论如何,伟大的 cmets,谢谢,明白了。

【讨论】:

    猜你喜欢
    • 2022-06-21
    • 1970-01-01
    • 2014-02-03
    • 2022-01-05
    • 1970-01-01
    • 2013-10-04
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多