web-dev-qa-db-ja.com

Pythonで入力を使用して整数をどのように入力しますか

私はPython=でのコーディング方法を自分で習得しようとしています。これが初めてスタックオーバーフローに投稿するので、この投稿の不正行為を許してください。しかし、それを正しく理解しましょう。

入力コマンドを使用して整数を返そうとしています。私も私の研究を行ったので、以下はPython 3.4での複数回の試行とそれに続く結果です。

試み#1

guess_row = int(input("Guess Row: "))

私は以下を返します:

Traceback (most recent call last):
File "<input>", line 1, in <module> 
ValueError: invalid literal for int() with base 10: 'Guess Row: 2`

試行#2

guess_row = float(input("Guess Row: "))

私は以下を返します:

Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: could not convert string to float: "Guess Row: 2""

試行#3

try:
    guess_row=int(input("Guess Row: "))
except ValueError:
    print("Not an integer")

ここで、私は以下を返します:

Guess Row: 2
Not an integer

これは何かを返しますが、これは間違っていることを知っています。1つは、入力が文字列として返され、printコマンドも返されるためです。

つまり、int、float、tryを試しましたが、これまでのところ何も機能していません。助言がありますか?整数を入力して1として返すことができるようにしたいだけです。

5

3回目の試みは正解ですが、guess_rowこのコードの前/後?たとえば、次のことを考慮してください。

a = "Hello"
try:
    a = int(input("Enter a number: "))
except ValueError:
    print("Not an integer value...")
print(str(a))

有効な数値を入力すると、最後の行に入力した値が出力されます。そうでない場合は、例外が発生し(exceptブロックにエラーメッセージが表示されます)、aは変更されないままなので、最終行に「Hello」と出力されます。

これを調整して、無効な数値がユーザーに値の再入力を求めるようにすることができます。

a = None
while a is None:
    try:
        a = int(input("Enter a number: "))
    except ValueError:
        print("Not an integer value...")
print(str(a))
4
GoBusto

コメントを説明するために、Windowsの3.4.2 Idle Shellから、python.org(PSF)インストーラー

>>> n = int(input('Guess1: '))
Guess1: 2
>>> n2 = float(input('Guess2: '))
Guess2: 3.1
>>> n, n2
(2, 3.1)

使用しているシステムとPythonのインストール方法を教えてください。

2
Terry Jan Reedy

しかし、何か変なことに気づきました。 F2キーを押してコードの個々の行を実行するのではなく、コード全体を実行する従来の実行(つまり、緑色のボタン)を使用してコードを実行すると、コードは機能します。なぜこれが当てはまるのか誰か知っていますか?

これはEclipseの問題のようです PyDev FAQ

PyDevでraw_input()/ input()が正しく機能しないのはなぜですか?

Eclipseコンソールはシェルの正確なコピーではありません...変更の1つは、シェルを押したときに、\ r、\ n、または\ r\nがエンドライン文字として表示される場合があることですあなたのプラットフォームで。 Pythonはこれを期待していません-ドキュメントから、最後の\ n(バージョン2.4でチェックされています)が削除されると書かれていますが、プラットフォームによっては\ rが残されます。これはraw_input()は通常raw_input()。replace( '\ r'、 '')として使用する必要があり、input()は次のように変更する必要があることを意味します:eval(raw_input()。replace( '\ r'、 '' ))。

以下も参照してください。 Eclipse 4のPyDev 3.7.1 — input()はプロンプト変数を入力変数に付加しますか?EclipseのPyDevコンソールでJythonを使用してユーザー入力を提供できません

1
Martin Tournoij