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