如何在Python解释器中编写多于1行的代码?


35

我在终端中编码Python时遇到问题。我只是在学习基础知识,因此无需创建.py文件。

在终端中,我可以在Python解释器中运行一行代码,但是如何编写多行代码呢?

显然,如果我按下Enter键,它将输入命令并且不会向下一行。

我只想在终端中测试以下内容:

my_age = 35
my_eyes = 'Blue'
print "my age is %d and my eye color is %s" % (my_age, my_eyes)

1
我怀疑您在使用“缩进”时遇到问题。A.输入“ python”。B. >>>出现。C.要运行脚本,脚本需要正确地以'tabs'缩进。
r4。

3
我没有问我学习的方式是否正确……我问了一个具体问题,请问答案是否正确……

Answers:


32

添加结尾的反斜杠(\

诀窍是- bash例如,您将在-中添加一个反斜杠。例如,如果我想打印一个1

charon:~ werner$ python
>>> print 1
1
>>> print \
... 1
1
>>> 

如果您编写\,Python会提示您...(续行)在下一行输入代码,可以这么说。

旁注:这是在创建函数或类定义时自动发生的情况,即您确实需要换行的时间,因此,从来没有真正好的用处,或者至少我所不知道的用处。换句话说,Python足够聪明,可以知道在输入新函数定义或其他类似构造(例如if:)时需要换行。在这些自动情况下,请注意,您需要输入一个空行\以告知Python您已完成操作。

对于其他所有内容,您需要写一行一行。解释器的工作方式是,它会解释您提供给它的每一行。不多不少。它只会在看到换行符时“起作用”,因此告诉解释器执行您给它的内容。单个反斜杠将阻止解释器接收换行符(即,它不会知道您实际上按了Enter),但最终将收到一个换行符。

当您使用GNU readline时,Python的解释器具有高级功能,例如Emacs或vi样式的键绑定在一行中导航(例如Ctrl-A)。但是,这些仅在当前行中起作用。历史也在那里,只需按

如果我想一遍又一遍地运行复杂的行怎么办?

如果您想一次执行多行代码,则可能要使用适当的源文件。

或者,使用Jupyter笔记本,该笔记本提供了一种出色的交互式方式,可以使用内置解释器创建Python代码。您可以像在源代码编辑器中一样编写代码,但是可以选择一起解释哪些行。然后,您可以选择性地仅运行部分代码。最好的方法是尝试看看是否适合您的工作流程。


:)第一行效果很好,但是如果我想要更多行怎么办?第二个反斜杠给出语法错误。

那么究竟是不是工作?只需选择并复制这些行,然后将其粘贴到终端中即可。因为换行是由解释器解析的,所以它们将像脚本中一样从上到下执行。有什么问题
slhck 2012年

1
我想直接在终端中输入这些内容,而不是在编辑器中输入并将其粘贴到那里...似乎浪费时间:)

然后,您只需要逐行键入一行即可。没有别的办法了。这是翻译。仅当您确实需要延续行时,它才会提示您输入延续行。
slhck 2012年

7

使用;\怎么样?分号表示命令结束,反斜杠表示我们在下一行继续。例如,python在命令行中键入以进入Python解释器,然后

>>> x=0 ;\
... print(x) ;\
... x=4 ;\
... print(x)

应该输出

0
4

2

简而言之,如果您想学习并想运行多行,可以将其写入.py文件。

当您快速想运行一系列命令时,尾部反斜杠方法很好,但是学习时却无济于事。

您将能够更好地开发代码,编辑单个命令而不必担心拼写错误,并且如果您将代码段写入一个小文件,则可以重用您认为有用的代码段。


1
是的我同意。但我处于基本水平。我没有写任何有用的东西,只是愚蠢的变量测试和数学等等。即使创建一个文件也不值得。谢谢你的建议。

即使是简单的数学运算也值得放入文件-如果3行或更多行,我自己会在vi中完成。即使如此,如果我不知道以后要做什么,也就在那里。
罗里·阿尔索普

1

我只是在shell提示符下输入了以下内容,效果很好:

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> my_age = 35
>>> my_eyes = 'Blue'
>>> print "my age is %d and my eye color is %s" % (my_age, my_eyes)
my age is 35 and my eye color is Blue
>>> 

在交互式Python解释器中键入多行代码的方法是在交互式Python解释器中键入多行代码。我认为这足以满足您的目的。

的确,每行之后都会出现一个新的提示,这意味着如果您的两行代码产生输出,则该输出将由提示分隔。我想这就是您所关心的,尽管您的问题中的示例并没有建议:

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "first line"
first line
>>> print "second line"
second line
>>> 

如果这是一个问题,则可以将多个语句括在(适当缩进!)if语句中:

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> if 1:
...     print "first line"
...     print "second line"
... 
first line
second line
>>> 

(我建议,即使它不能回答您的问题,如果您编写的代码足够复杂,那么您应该编写脚本。也许您已经在一年半的时间里开始这样做了。自从您发布了问题。)


0

我只是在回答您得到的答案,我一直在尝试通过放置不同的符号来进行实验,最后终于有了正确的语法来编写它,请尝试以下操作

print("more string") ; print(3)

这会给你结果

more string

3

没有任何错误

我刚刚用过';' 使它写在另一行

希望我的回答对您有所帮助



-2

在输入下一个命令之前,请确保在三个点处按下“ Tab”键。您可以继续以这种方式编写尽可能多的命令。因此,在编写第二行代码后按回车键时,解释器允许您输入第三行代码...就像下面的Fibonacci示例(来自教程):

a,b = 0,1,而b <10:... print(b)#如果您在点后立即输入打印命令,然后按回车键,则u会出现缩进错误。而是点击三个点后的标签,然后编写代码并按Enter键,这将使您输入第三行代码,依此类推。看下面的例子(来自教程):

a,b = 0,1#在b <10时按Enter键,然后按Enter键... print(b)#在按Enter键后。请注意三个点后面的选项卡... a,b = b,a + b#之后按Enter键... Enter键#没有更多命令可输入

您将看到上述程序的结果

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.