2016-11-11 28 views
0

私はスプリット()関数は、あなたがこのようにそれを実装する場合どのように機能するかを熟知しています:Pythonの入力()関数

def sayHello(): 
    name = input("whats you´re name?:") 
    print("hello", name) 

この場合、入力機能のみを利用者からの一つの入力を望んでいます。 しかし、この場合実際に何が起こりますか?

def test(): 
    str1, str2 = input().split() 
    print(str1, str2) 

構文:

a, b = input() 

これはあなたがこれを使用する際に、同時に2つの入力をユーザーに尋ねるかする方法ですか?これが唯一の

長さ2の文字列で働いている

+0

ターゲットリストをカンマで区切った場合、これは「([基準](https://docs.python.org/3/reference/simple_stmts.html#assignment-statements)に記載の割り当ての特別な場合でありますターゲットのリスト... ')と一般(https://en.wikibooks.org/wiki/Python_Programming/Tuples#Packing_and_Unpacking)[開梱]と呼ばれます。 – bereal

答えて

1

だけipythonでそのような事をしてみてください。

In [9]: a, b = input() 
"hallo" 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-9-3765097c12c0> in <module>() 
----> 1 a, b = input() 

ValueError: too many values to unpack 

In [10]: a, b = input() 
"ha" 

In [11]: a 
Out[11]: 'h' 

In [12]: b 
Out[12]: 'a' 

In [13]: a, b = input() 
"a" 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-13-3765097c12c0> in <module>() 
----> 1 a, b = input() 

ValueError: need more than 1 value to unpack 

はありませんので、これではない正しい方法は、2つの入力をお願いします。

2

このない別のPython 2とPythonで物事3.

のPython 3のinput()は、Python 2のraw_input()で、常に文字列を返します。あなたはa, b, = (1, 2)のように開梱タプルを行うと

は、右の元素の量は、左側に名前の金額と一致する必要があります。そうでない場合はValueErrorになります。文字列が繰り返し可能なので、ユーザーが2文字の長い文字列を入力するとa, b = input()が機能します。他の文字列はプログラムをクラッシュさせます。 first_name, last_name = inp.split(','):一度に複数の入力のためのユーザーに聞いて

は、明確にそして後で入力を解析し、例えば、プロンプトでinp = input('Please input your first and last name, separated by a comma: ')をフォーマットを定義します。彼らは間違った文字列を入力した場合、これはまだ1つのコンマよりも多かれ少なかれで、あなたのプログラムがクラッシュしますが、それは、をチェックし、ユーザーに通知し、再試行して合理的に簡単だということ

は注意してください。

Python 2では、input()は値を自然なPython値に強制しようとします。したがって、ユーザが[1, 2]を入力すると、input()はPythonリストを返します。これは悪いことですが、自分でユーザーデータの検証とサニタイズを行う必要があり、代わりに"[1, 2]"が必要な場合があります。

+0

お世話になりました!私はこのcを試してみると、コンソールでd = input()を実行して2 3または2を入力すると、3はValuerrorで解凍する値が多すぎます。どうしてこれなの ? '2を入力すると、3''長さの文字列、反復可能であり、これは、 ' "2、3"'を返すように入力() '発生するため – Fanny

+0

あなたは、Python 3にしていると仮定すると、それはだ4.'のC、D = "2、3" 'は' c = "2" '、' d = "3" 'を設定し、変数を使い果たしますが、消費する文字列は残っています。それが可能ならば何をしたいと思うことは、 '()'そして 'C、D = inp.split( ' ')'や 'INP =入力' C、D =入力()。スプリット('、')でありますあなたにもっと感謝します。 –

関連する問題