在python中读取数组的顺序用户输入

时间:2016-10-07 08:36:10

标签: python arrays variables input

我是python的新手,如果这个问题很简单,请提前道歉。

我在python中编写一个脚本,需要按顺序询问用户输入(输入都是浮点数),然后需要将该输入写入列表。然后其余代码将对列表进行处理。

这是我的第一次尝试:

num_array = list()

a1  = raw_input('Enter percentage of A (in decimal form): ')
a2 = raw_input('Enter percentage of B (in decimal form): ')
a3 = raw_input('Enter percentage of C (in decimal form): ')


li = ['a1', 'a2', 'a3']
for s in li:
num_array.append(float(s))

除非我们开始将数值读入数组,否则一切正常。然后我收到错误:

 num_array.append(float(s))
 ValueError: invalid literal for float(): a1

我怀疑对于普通的Python编码器来说错误是显而易见的,但这实际上是我第一次使用它:-)真棒,顺便说一下!

非常感谢任何帮助。一旦它运行,我将添加处理非标准输入等的东西。

3 个答案:

答案 0 :(得分:0)

应该是:

li = [a1, a2, a3]
for s in li:
    num_array.append(float(s))

您想要引用a1变量,而不是"a1"字符串

请注意,您可以将所有内容组合到循环中:

num_list = []
for c in ("A","B","C"):
    num_list.append(float(raw_input('Enter percentage of {} (in decimal form): '.format(c))))

如果ValueError不是有效raw_input,则会引发float

答案 1 :(得分:0)

不使用str列表中的li类型,而是使用变量:

 li = [a1, a2, a3]

如果您使用ValueError传递的值无法转换为raw_input(),则您的循环可能会引发float。将list中的每个项目转换为float的更好方法是:

通过。 列表理解为:

 num_list = [float(item) for item in [a1, a2, a3]]

或,通过map() as:

 num_list = map(float, [a1, a2, a3])

答案 2 :(得分:-1)

a = input ("enter the value of a")

b = input ("enter the value of b")

c = input {"enter the value of c")

l = [a,b,c]

num_array = []

for i in l:

    if type(i)==int
        i=float(i)
        num_array.append(i)
print l,num_array