Python不能在本地工作

时间:2014-01-21 19:46:57

标签: python

我正在尝试让python在本地运行程序。我有一个在线运行良好的程序:

import random

def playgame():
    s = random.randint(15,99)
    POSS = range(1,7)
    if not s % 7:
        print("I only play when I'm certain of winning, try again!")
        return
    while s > 0:
        choice = 0
        while choice not in POSS:
            choice = int(input("Select a number between 1 and 6: "))
        s -= choice
        print("You subtracted {}, leaving {}".format(choice,s))
        if not s % 7:
            comp_choice = 1
        else:
            comp_choice = s % 7
        s -= comp_choice
        print("I subtracted {}, leaving {}".format(comp_choice,s))
    print("I win!")

playgame()

但这不会在我的机器上运行。我安装了python 3.3.3并且我在Python GUI中,我只是粘贴它并且我得到了Syntaxerror:编译语句时发现了多个语句......

完整错误:

>>> import random

def playgame():
    s = random.randint(15,99)
    POSS = range(1,7)
    if not s % 7:
        print("I only play when I'm certain of winning, try again!")
        return
    while s > 0:
        choice = 0
        while choice not in POSS:
            choice = int(input("Select a number between 1 and 6: "))
        s -= choice
        print("You subtracted {}, leaving {}".format(choice,s))
        if not s % 7:
            comp_choice = 1
        else:
            comp_choice = s % 7
        s -= comp_choice
        print("I subtracted {}, leaving {}".format(comp_choice,s))
    print("I win!")

playgame()
SyntaxError: multiple statements found while compiling a single statement
>>> 

1 个答案:

答案 0 :(得分:4)

无论是使用命令行解释器,IDLE GUI还是某些第三方IDE,都无法始终将多行语句粘贴到交互式解释器中。

部分原因是交互式解释器试图帮助您进行缩进 - 这在您键入时效果很好,但是当您粘贴已缩进的代码时,它只会中断缩进。这不会始终导致问题,但有时候会出现问题,并且学习和不做的时候真的不值得努力。

IDLE增加了一个额外的问题:它首先试图弄清楚你输入的是哪些东西是单独的语句,所以它可以将它们传递给编译器,如果它猜错了......你会得到你看到的错误信息。< / p>

另外,在这种模式下很难注意到(或调试)缩进问题。您可能在第一行之前意外地选择了一个额外的空间并打破了整个事情,或者......谁知道?

IPython有一个特殊的%cpaste命令,可以让你粘贴一段源代码,让它弄清楚如何编译它,它几乎总能做到你想要的。 bpython具有类似(但更具图形化)的功能。所以,如果你愿意使用另一种shell,你可以这样做。

或者,您可以在非交互模式下运行Python。但在那时,你最好只是将输入管道/重定向到它。最好只将源保存为文件并将文件作为脚本运行。

实际上,这是最好的答案:将其保存为文件,运行文件。如果要运行该文件然后进入交互式提示,只需使用-i标志。

或者,如果您正在使用IDLE,则更容易:创建一个新窗口,粘贴源,保存,点击F5,它会自动运行该文件,然后让您进入交互模式。