2012-01-24 08:58:00 +0000 2012-01-24 08:58:00 +0000
36
36

Pythonインタプリタで1行以上のコードを書くには?

ターミナルでPythonをコーディングするのに困っています。基礎を学んでいるだけなので、.pyファイルを作る必要はありません。

ターミナルではPythonインタプリタで1行のコードを実行できるのですが、2行以上書くにはどうすればいいのでしょうか?

明らかにEnterキーを押すとコマンドを入力しても1行も下がらないのですが、どうすればいいのでしょうか?

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

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

回答 (7)

33
33
33
2012-01-24 09:37:07 +0000

このトリックは - `##

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

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

1と書くと、Pythonは次の行にコードを入力するために`##

このトリックは - `##

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

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

1と書くと、Pythonは次の行にコードを入力するために(継続行)を要求してきます。

余談: これは関数やクラス定義を作成した時に自動的に発生するもので、つまり本当に改行が必要な時に発生します。言い換えれば、Pythonは新しい関数定義や他の類似の構文(例: ...)を入力する際に、継続行が必要であることを十分に認識しています。このような自動のケースでは、Pythonに完了を伝えるためにif:を使って空行を入力する必要があることに注意してください。

それ以外の場合は、次から次へと1行書く必要があります。インタプリタの動作は、まあ、あなたが与えた全ての行を解釈します。それ以上でもそれ以下でもありません。それは改行を見たときだけ「行動」するので、あなたが与えたものを実行するようにインタープリタに指示します。1つのバックスラッシュは、インタープリタが改行文字を受け取ることを防ぎます(つまり、実際にEnterキーを押したことを知らない)が、最終的には改行文字を受け取ることになります。

Python のインタプリタは 高度な機能 Emacs や vi スタイルのキーバインドなどの GNU readline を使用して行内を移動する場合 (例: Ctrl-A) には 高度な機能 を持っています。しかし、これらは現在の一行の中でしか動作しません。履歴もそこにあります。

複雑な行を何度も実行したい場合は?

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

あるいは、[ Jupyter notebooks ]0x3& を使うと、ビルトインインタプリタを使って Python のコードを作成することができます。ソースコードエディタと同じようにコードを書くことができますが、どの行を一緒に解釈するかを選択することができます。そして、コードの一部だけを選択的に実行することができます。最良の方法は、自分のワークフローに合うかどうかを試してみることです。

8
8
8
2013-07-01 22:22:29 +0000

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

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

と入力すると、

0
4
``` という出力が得られます。
2
2
2
2012-01-24 09:54:25 +0000

簡単に言えば、学習していて複数行を実行したい場合は.pyファイルに書き込んでいます。

トレイリングバックスラッシュ方式は、素早く一連のコマンドを実行したい時には良いのですが、学習中の時には役に立ちません。

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

1
1
1
2018-05-01 18:28:49 +0000
print("more string") ; print(3)

これで結果が得られます

more string

3

エラーなしで

私は別の行に書き込むために’;‘を使っています

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

1
1
1
2013-07-01 22:44:47 +0000

シェルプロンプトで以下のように入力しただけですが、問題なく動作しました:

$ 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インタプリタで2行以上のコードを入力する方法は、まあ、対話型Pythonインタプリタで2行以上のコードを入力することです。これで十分だと思いますよ。

確かに、各行の後に新しいプロンプトが表示されるので、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年半の間にスクリプトを書き始めたのでしょう)

0
0
0
2018-08-28 19:51:18 +0000

シェルを離れて新しいエディタファイルを開くだけです。つまり、ファイルに移動して新しいファイルを開きます。好きなだけコードを書いてください。

-2
-2
-2
2016-05-25 12:12:58 +0000

3つの点のところで、次のコマンドを入力する前に必ず “tab "キーを押してください。あなたはそのように多くのコマンドを書き続けることができます。2行目のコードを書いた後にエンターキーを押すと、インタプリタは3行目のコードを入力することができます… 下記のフィボナッチの例のように(チュートリアルより):

a,b=0,1 while b<10: … print(b) # 点の直後にprintコマンドを入力して、最後にエンターキーを押すと、インデントエラーが発生します。その代わり、3つの点の後にタブを押して、コードを書いてエンターキーを押すと、3行目のコードなどを入力することができます。以下の例を見てください(チュートリアルより):

a,b=0,1 # Followed by enter key while b<10: # Followed by enter key … print(b) # Followed by enter key. note the tab after the three dots … a,b=b,a+b # Followed by enter key …enter key # これ以上、

を入力するコマンドはないので、上記のプログの結果が表示されます。

関連する質問

13
19
7
3
3