2016-04-06 6 views
0

私はいくつかの平均を実行できるように、文字列と3つの浮動小数点数を含む1行の入力を格納するためにpython 2.7を取得しようとしています。python 2.7同じraw_input行から浮動小数点と文字列を格納する

ex。入力:

name, score1, score2, score3 = raw_input().split() 
score1, score2, score3 = [float(score1),float(score2),float(score3)] 

をしかしそれは、文字列による "無効なリテラル" エラーがスローされます:トム・25 30 20

私が試してみました。さらに、私のコードはかさばりますが、これについてもっと簡単な方法がありますか?

ありがとうございました!

+3

あなたのコードが書かれたとおりに細かい機能、それはすべてのエラーをスローしません。 – kindall

答えて

2

あなたはこれを少しリファクタリングすることができますが、あなたが仕事しているものはそれほど大きくないか悪いものではありません。

>>> user_input = raw_input('Enter your name and three numbers: ').strip().split() 
Enter your name and three numbers: Tom 25 30 20 
>>> name = user_input[0] 
>>> scores = map(float, user_input[1:]) 
>>> name 
'Tom' 
>>> scores 
[25.0, 30.0, 20.0] 

このようにそれを行うと、n1のような名前の代わりに、変数、n2(いつも私に示唆しているリストを使用する必要があります)(scores[0]scores[1]のように添え字)のリストを使用することを意味します。

mapfloatとすると、float(var)を3回書く必要はありません。

strip()と入力することもできます。暗黙的に空白で分割しているので、通常は良いアイデアです。

input = raw_input("Give me the input [name number number number]: ").split(" ") 
name = input[0] 
floats = map(float, input[1:]) 
print "I'm your name ", name 
print "I'm your floats ", floats 
print "I'm a sample average ", sum(floats)/len(floats) 

あなたが持つ任意のフロートを得ることができます:あなたはこのようなあなたの問題を解決することができ

+0

また、無効なリテラルエラーに関するコメント。何らかの理由で文字列に浮動小数点に変換する前に文字列に文字が含まれていないかどうかを調べることができます: 'print repr(user_input)' – fips

+0

これは別のものです。この質問に投稿されたものはAFAIKを引き起こすものではありません。 –

+1

ありがとうございました。私はこの前にintを期待していた文字列を入力していましたが、私はちょうどそれをキャッチしませんでした。 Pythonは私のプログラミングの最初の試みですが、今のところ数ヶ月間続いています! – cslewis

関連する問題