zd0*_*zd0 0 python int list min typeerror
我正在编写我的第一个程序之一,并在针对另一个程序进行测试时收到错误.下面是我的程序开头的代码片段,它首先抛出了这个问题:
def stats(list_doc):
#Minimum
min_val = min(list_doc)
int(min_val)
#Maximum
max_val = max(list_doc)
int(max_val)
#Mean
total = sum(list_doc)
length = len(list_doc)
for nums in [list_doc]:
mean_val = total / length
float(mean_val)
#Median
sorted(list_doc)
med_val = sorted(lst)
lstLen = len(lst)
index = (lstLen - 1) // 2
if (lstLen % 2):
return med_val[index]
else:
return (med_val[index] + med_val[index + 1])/2.0
return min_val, max_val, mean_val, med_val
Run Code Online (Sandbox Code Playgroud)
这就是我正在运行的代码,以实际对数字列表执行该功能.
list_doc = list(range(51)) # from 0 to 50. an odd number of elements.
min_val, max_val, mean_val, med_val = stats(list_doc)
print("Minimum = {0} is of type {1}.".format(min_val, type(min_val)))
print("Maximum = {0} is of type {1}.".format(max_val, type(max_val)))
print("Mean = {0:.1f} is of type {1}.".format(mean_val, type(mean_val)))
print("Median = {0:.1f} is of type {1}.".format(med_val, type(med_val)))
Run Code Online (Sandbox Code Playgroud)
我收到一个TypeError:'int'对象不可迭代.错误文本如下:
TypeError Traceback (most recent call last)
<ipython-input-25-6a4f116bc5b5> in <module>()
1 list_doc = list(range(51)) # from 0 to 50. an odd number of elements.
----> 2 min_val, max_val, mean_val, med_val = stats(list_doc)
3 print("Minimum = {0} is of type {1}.".format(min_val, type(min_val)))
4 print("Maximum = {0} is of type {1}.".format(max_val, type(max_val)))
5 print("Mean = {0:.1f} is of type {1}.".format(mean_val, type(mean_val)))
TypeError: 'int' object is not iterable
Run Code Online (Sandbox Code Playgroud)
我认为列表已经可以迭代了,但是我不太确定从这里开始的方向.
观察返回值stats:
In [7]: stats(list_doc)
Out[7]: 0
Run Code Online (Sandbox Code Playgroud)
现在,看下一个声明:
min_val, max_val, mean_val, med_val = stats(list_doc)
Run Code Online (Sandbox Code Playgroud)
这会产生错误,因为您要求四个值并仅提供一个值.
如果您打算stats返回四个值,则需要修改它.
stats功能代码考虑:
def stats(x):
return min(x), max(x), sum(x)/len(x), sorted(x)[len(x)//2]
Run Code Online (Sandbox Code Playgroud)
考虑:
def stats(list_doc):
#Minimum
min_val = min(list_doc)
int(min_val)
return min_val
#Maximum
max_val = max(list_doc)
int(max_val)
return max_val
#Mean
total = sum(list_doc)
length = len(list_doc)
for nums in [list_doc]:
mean_val = total / length
float(mean_val)
return mean_val
#Median
sorted(list_doc)
med_val = sorted(lst)
lstLen = len(lst)
index = (lstLen - 1) // 2
if (lstLen % 2):
return med_val[index]
else:
return (med_val[index] + med_val[index + 1])/2.0
return min_val, max_val, mean_val, med_val
Run Code Online (Sandbox Code Playgroud)
当python函数遇到一个return语句时,它返回.因此,在计算最小值后,执行以下语句:
return min_val
Run Code Online (Sandbox Code Playgroud)
使用该语句,函数执行停止.其后的所有语句都不会被执行.
另外,请考虑以下声明:
int(min_val)
Run Code Online (Sandbox Code Playgroud)
此函数获取值min_val并将其作为整数返回.函数的返回值未分配给任何内容.因此,它被忽略了.值min_val不变.也许,意图是:
min_val = int(min_val)
Run Code Online (Sandbox Code Playgroud)
另外,考虑一下:
sorted(list_doc)
Run Code Online (Sandbox Code Playgroud)
此行返回已排序的列表,但忽略返回值. list_doc保持不变.如果您想要更改list_doc,请使用:
list_doc.sort()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2588 次 |
| 最近记录: |