Python 如何使用带有输入函数的for循环

Python 如何使用带有输入函数的for循环,python,python-3.x,for-loop,user-input,Python,Python 3.x,For Loop,User Input,我只需要把三个数字相加,然后计算平均数 import sys sums=0.0 k=3 for w in range(k): sums = sums + input("Pleas input number " + str(w+1) + " ") print("the media is " + str(sums/k) + " and the Sum is " + str(sums)) 错误是: Pleas input number 1 1 Traceback (most recent c

我只需要把三个数字相加,然后计算平均数

import sys
sums=0.0
k=3
for w in range(k):
    sums = sums + input("Pleas input number " + str(w+1) + " ")
print("the media is " + str(sums/k) + " and the Sum is " + str(sums))
错误是:

Pleas input number 1 1
Traceback (most recent call last):
  File "/home/user/Python/sec001.py", line 5, in <module>
    sums = sums + input("Pleas input number " + str(w+1) + " ");
TypeError: unsupported operand type(s) for +: 'float' and 'str'
请输入数字1
回溯(最近一次呼叫最后一次):
文件“/home/user/Python/sec001.py”,第5行,在
总和=总和+输入(“请输入数字”+str(w+1)+”);
TypeError:不支持+:“float”和“str”的操作数类型

input
返回一个字符串,您需要根据该字符串创建一个
int
float
。您还必须处理用户无法遵循简单说明的事实。最后,您需要去掉这些分号——它们是危险的,并且会创建一个敌对的工作环境(至少当您遇到其他python程序员时…!)


为什么不做简单的版本,然后优化它

def sum_list(l):
    sum = 0
    for x in l:
        sum += x
    return sum

l = list(map(int, input("Enter numbers separated by spaces:  ").split())) 
sum_list(l)
您的问题是您没有将输入从'str'转换为'int'。记住,Python自动初始化数据类型。因此,需要显式转换。如果我错了,请纠正我,但我就是这么看的

希望我有所帮助:)

函数返回字符串(str),Python不会自动将其转换为float/integer。你所需要做的就是转换它

import sys;
sums=0.0;
k=3;
for w in range(k):
    sums = sums + float(input("Pleas input number " + str(w+1) + " "));
print("the media is " + str(sums/k) + " and the Sum is " + str(sums));
如果您想让它变得更好,可以使用try/except来处理无效输入。另外,
import sys
是不需要的,您应该避免使用分号

sums=0.0
k=3
for w in range(k):
    try:
        sums = sums + float(input("Pleas input number " + str(w+1) + " "))
    except ValueError:
        print("Invalid Input")
print("the media is " + str(sums/k) + " and the Sum is " + str(sums))

通过在控制台中尝试
type(input(“>”)
,思考
input(…)
返回的值的类型;您将看到它的类型为
str
。一个
str
可以不经过转换就添加到浮点(
sums
)吗?是的,只需要抛出一个INT
分号溢出错误
为什么不优化你的代码以使用Python内置的sum函数呢?你是对的!对不起,为什么要将参数列表编辑为“l”而不是“n”。如果要使用“l”,则必须进行所有更改。很遗憾,我犯了一个错误:)您的循环在l中对x进行了
。我修好了谢谢你。愚蠢的错误要了我的命:\
sums=0.0
k=3
for w in range(k):
    try:
        sums = sums + float(input("Pleas input number " + str(w+1) + " "))
    except ValueError:
        print("Invalid Input")
print("the media is " + str(sums/k) + " and the Sum is " + str(sums))