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


24

私は端末で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)

1
私はあなたが「インデント」に問題があるのではないかと思います。 A. 'python'と入力してください。 B.>>>やってくる。 C.スクリプトを実行するには、スクリプトを 'タブ'で正しくインデントする必要があります。
r4.

3
私は自分のやり方で学習が正しいかどうかを尋ねませんでした。

回答:


24

末尾の円記号を追加( \

トリックは - あなたがするものと同じ bashたとえば、 - 末尾の円記号を追加します。たとえば、私が印刷したい場合 1

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

あなたが書くなら \、Pythonはあなたにプロンプ​​トを出します ... (継続行)次の行にコードを入力する、と言うこと

サイドノート:これはあなたが関数やクラス定義を作成したとき、すなわち実際にあなたが作成したときに自動的に起こることです。 必要 新しい行なので、それを実際に使用することは決してありませんし、少なくとも私が知っていることもありません。言い換えれば、Pythonは新しい関数定義や他の似たような構造を入力するときに継続行が必要であることに気づくほど賢いです。 if: )このような自動の場合は、次のようにして空行を入力する必要があります。 \ Pythonにあなたがやったことを伝えるために。

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

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

複雑な線を何度も走らせたい場合はどうしたらいいですか。

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

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


:)最初の行にはうまくいきますが、もっと行を追加したい場合はどうすればいいですか。 2番目の末尾の円記号は構文エラーです。

だから正確には何ですか ではない ワーキング?それらの行を選択してコピーしてから端末に貼り付けるだけです。改行はインタプリタによって解析されるので、それらはスクリプトのように上から下へ実行されます。問題は何ですか?
slhck

1
これらをエディタで書いてそこに貼り付けるのではなく、直接端末で入力したいのですが...時間の無駄のようです:)

それからあなたはただ次々に行をタイプしなければならない。他に方法はありません。通訳です。本当に必要なときだけ継続行の入力を促します。
slhck

6

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

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

の出力を与えるべきです

0
4

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

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

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

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


1
はい私は同意する。しかし、私は基本的なレベルです。私は愚かな変数テストや数学など、何も有用なものは書きません。アドバイスをありがとう。

単純な数学でさえファイルに入れる価値があります - それが3行以上であれば私は自分でviでそれをするでしょう。たとえ私が後で何をしたのだろうと思っていたとしてもそうです。
Rory Alsop

1

caseステートメントとインデントの重要性を説明するこのYouTubeビデオを試してみてください。 https://www.youtube.com/watch?v=JkXPxMOSJTY


3
スーパーユーザーへようこそ。外部リンクが切断されたり使用できなくなったりする可能性があります。その場合、回答は役に立ちません。あなたの答えの中に重要な情報を含めて、帰属とさらなる読書のためにリンクを使ってください。ありがとう。
fixer1234

0

私はちょうどあなたが持っている答えを通り抜けていました。私は別のシンボルを入れて実験を続けました。

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

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

more string

3

エラーなしで

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

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


0

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


-1

あなたが次のコマンドを入力する前に3つの点で「タブ」キーを押してください。そのように多くのコマンドを書き続けることができます。そのため、2行目のコードを書いた後にenterキーを押すと、インタプリタは3行目のコードを入力することを可能にします。

a、b = 0、1       b< 10の間:       ... print(b)#ドットの直後にprintコマンドを入力し、最後にenterキーを押すと、uはインデントエラーになります。       その代わりに、3つのドットの後にタブを押してください、そして、あなたのコードを書いて、エンターキーを押してください、それはuをコードの3行目に入るようにするでしょう。以下の例を見てください(チュートリアルから):

a、b = 0,1#続けてenterキー       while b< 10:#続けてenterキー       ...印刷(b)#続けてEnterキーを押します。 3つの点の後のタブに注意してください       ... a、b = b、a + b#続けてenterキー       ... enter key#入力するコマンドはこれ以上ありません

あなたは上記のPROGの結果が表示されます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.