我是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编码器来说错误是显而易见的,但这实际上是我第一次使用它:-)真棒,顺便说一下!
非常感谢任何帮助。一旦它运行,我将添加处理非标准输入等的东西。
答案 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