2011-08-09 8 views
2

intまたはfloatの2つの数字をカンマで区切って入力することはできますか?入力2つの変数を1行にカンマで区切って

プログラムの実行後、ユーザーにEnter a range:と尋ねると、ユーザーは2,3と入力します。可変範囲は[2,3]です。私が知る限り、range_choice.split()は唯一の方法です。あなたの代わりにsplitpartitionを使用し、第二の値にカンマを許可したい場合は

+1

うん、分割はそれを行う方法です。 –

+0

'split'は_only_ではありませんが、最も簡単で簡単です。あなたが覚えておかなければならないことの1つは、ユーザーが何も入力しなかった場合に起こるような悪いケース、カンマの有無にかかわらず1つの値を入力することなどです。 –

+0

変数 'input'を呼び出さないでください。組み込み関数。 – agf

答えて

2
num1,num2 = map(float, raw_input('Enter a range: ').split(',')) 

また、この場合には

s1,_,s2 = raw_input('Enter a range: ').partition(',') 

を、自分で数字に2つの文字列を変換する必要があります。

+0

.splitはこれより優れていますが、これは良い選択肢ではありません。 – utdemir

+0

@utdemir whichをいつ使用するかについての詳細が更新されました。 – phihag

+0

入力を消毒できるようにする必要がありますので、値をすぐに割り当てると、不正な入力に対して例外が発生します。 –

0

NUM1、NUM2 = raw_input( '範囲を入力します: ').split('、')

0
 x,y = input("Enter range: ") 

あなたが数字としてそれらをしたい場合には、raw_input使用しないことをお勧めします。

+0

いいえ!無条件で任意の入力を評価しないでください。 'input'は悪いので、' raw_input'がPython2の 'input'に置き換えられてしまったのです。 – agf

+0

@Josh' input'は、ユーザが実行することを許可するので、不要なセキュリティホールです(したがってPython 3では消える)任意のプログラム。また、これは 'x'と' y'が数字であることを保証しません(例えば、 '' ab "')。 – phihag

0

それはast.literal_evalが安全であることを私の理解です:

>>> x, y = ast.literal_eval(raw_input('Enter a range: ')) 
Enter a range: 5, 6 
>>> x, y 
(5, 6) 
+0

または['input'](http://docs.python.org/py3k/library/functions.html#input)をPython 3の 'raw_input'の代わりに使用します。 – senderle

関連する問題