python 2.7 存储来自同一行的浮点数和字符串 raw_input

python 2.7 storing a float and a string from the same raw_input line

我正在尝试让 python 2.7 存储包含一个字符串和三个浮点数的单行输入,以便我可以执行一些平均值等操作。

例如。输入:汤姆 25 30 20

我试过了:

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

但它会因字符串而引发 "invalid literal" 错误。另外,我的代码感觉很笨重,有没有更简单的方法来解决这个问题?

感谢您的帮助!

您可以稍微重构一下,但您所拥有的功能并没有那么笨重或糟糕。

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

这样做意味着使用列表(下标如 scores[0]scores[1])而不是名称如 n1n2 的变量(这总是暗示对我来说你应该使用一个列表)。

使用 mapfloat 意味着您不必写三遍 float(var)

您还可以考虑 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)

您可以获得任何浮点数:

floats[i]