web-dev-qa-db-ja.com

Pythonインタプリタで1行以上のコードを書くにはどうすればいいですか?

私は端末でPythonをコーディングするのに問題があります。基本を学んでいるだけなので、.pyファイルを作成する必要はありません。

端末ではPythonインタプリタで1行のコードを実行できますが、どうすれば複数行を書くことができますか?

明らかに私がエンターキーを打った場合、それはコマンドを入力し、一行下って行きません。

私はただターミナルで以下をテストしたいです。

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

末尾の円記号を追加する(\

トリックは - 例えばbashで行うことと同じように - 末尾のバックスラッシュを追加することです。たとえば、1を印刷したい場合は、次のようにします。

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

\を書くと、Pythonは...(継続行)を使って次の行にコードを入力するように促します。

サイドノート:これは関数やクラス定義を作成するとき、つまり実際に新しい行が必要になるときに自動的に起こることです。それには本当に便利です。少なくとも私が知っていることはありません。言い換えれば、Pythonは新しい関数定義や他の似たような構造(例えばif:)を入力するときに継続行が必要であることを知っているほど賢いです。このような自動の場合は、\を使用して空の行を入力し、完了したことをPythonに知らせる必要があることに注意してください。

それ以外のすべてについては、次々に行を書く必要があります。インタプリタのしくみは、あなたがフィードしたすべての行をうまく解釈することです。それ以上でもそれ以下でもない。それは改行を見たときにだけ "振る舞う"ことになるので、インタプリタにあなたが与えたものを実行するように言います。単一のバックスラッシュは、インタプリタが改行文字を受け取らないようにします(つまり、実際に押されたことを知りません)。 Enter)、しかしそれは最終的に1つを受け取ります。

Emacsやviスタイルのキーバインドなど、行内を移動するときにGNU readlineを使用すると、Pythonのインタプリタは 高度な機能 を持ちます。 Ctrl-A)しかしそれらは1つの現在行でだけはたらきます。歴史もあります、試してみてください 

複雑な線を何度も繰り返して実行したい場合はどうすればよいですか。

一度に複数行のコードを実行したい場合は、おそらく適切なソースファイルを使用したいでしょう。

あるいは、 Jupyter notebooks を使用すると、組み込みのインタプリタを使用してPythonコードを作成するための優れた対話式の方法が提供されます。ソースコードエディタと同じようにコードを書くことができますが、どの行を一緒に解釈するかを選択できます。そうすれば、コードの一部だけを選択的に実行できます。最善の方法は、それが自分のワークフローに適しているかどうかを試してみることです。

30
slhck

;\を使ってはどうですか?セミコロンはコマンドの終わりを示し、バックスラッシュは次の行に進んでいることを示します。たとえば、Pythonインタプリタに入るには、コマンドラインでpythonと入力します。

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

の出力を与えるべきです

0
4
6
Garrett

簡単に言えば、あなたが学びたいと思っていて複数の行を走らせたいのであれば、それを.pyファイルに書いてください。

末尾の円記号方法は、一連のコマンドをすぐに実行したい場合には適していますが、学習している場合は役に立ちません。

コードをよりよく開発し、スペルミスを気にすることなく個々のコマンドを編集し、小さなファイルに書き込むと便利なコードスニペットを再利用できます。

2
Rory Alsop

シェルプロンプトで次のように入力したところ、問題なく動作しました。

$ 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インタプリタで複数行のコードを入力することです。あなたの目的にはそれで十分だと思います。

各行の後に新しいプロンプトが表示されることは間違いありません。つまり、2行のコードで出力が生成された場合、その出力はプロンプトで区切られます。私はそれがあなたが心配していることだと思いますが、あなたの質問の例はそれを示唆していません:

$ 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
>>> 

(あなたの質問に答えないとしても、これが問題になるほど複雑なコードを書いているのであれば、スクリプトを書くべきだと私はお勧めします。おそらく1年半でそうし始めたのでしょう。あなたが質問を投稿したので。)

1
Keith Thompson

私はちょうどあなたが持っている答えを通り抜けていました。私は異なったシンボルを置くことによって実験を続けました。私はそれを書くための正しい構文をついに得ました。

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

これはあなたに結果を与えるでしょう

more string

3

エラーなしで

';'を使いました別の行に書き込むようにする

私の答えがあなたに役立つことを願っています

0
Curious Blade

シェルを終了して新しいエディタファイルを開くだけです。すなわちファイルに移動して新しいファイルを開きます。あなたが望むだけのコード行を書いてください。

0
Hemant Gautam