我需要帮助来确定不受支持的操作数类型的位置



我正在Python 3.8中编写一个小程序,该程序从用户输入的数字列表中确定最小值、平均值、中值、下四分位数、上四分位数和最大值。但是,在使用统计模块中的median((函数时,我遇到了一个错误:该模块表示数字列表是不支持的操作数类型。我尝试过将它转换为整数、字符串、列表和数组,但这些似乎都不满足。我的代码在下面。

import statistics
#Gather input from user, and determine the minimum and maximum of said input.
k = 0
print("Welcome to Auto 5 Number SummarynLowest NumbernLower QuartilenMeannUpper QuartilenHighest Number")
a = input("nnEnter your numbersn>>").split()
m = a
mn = min(m)
mx = max(m)
print("Min: ", mn)
#Mean for the list.
x = int(m[0])
b = 1
for n in range(len(m)):
if b == len(m):
v = int(len(m))
print ("Mean: ", x / v)
break
t = int(m[b])
x = x + t
b += 1
m = sorted(m)
y = []
mid = len(m)
#Lower Quartile for list.
if len(m) % 2 == 0:
kk = int(len(m))
kk = int(kk / 2)
lowerhalf = m[:kk]
#lowerhalf = float(lowerhalf)
lq = statistics.median(lowerhalf)
print ("LQ: ", lq)
elif len(m) % 2 != 0:
kk = int(len(m))
kk = int(kk - 1)
kk = int(kk / 2)
lowerhalf = m[:kk]
lq = statistics.median(lowerhalf)
print("LQ: ", lq)
#Median of entire list.
print ("Median: ", statistics.median(m))
#Upper quartile for list.
if len(m) % 2 == 0:
kk = int(len(m))
kk = int(kk / 2)
upperhalf = m[kk:]
upperhalf = float(upperhalf)
lq = statistics.median(upperhalf)
print ("UQ: ", lq)
elif len(m) % 2 != 0:
kk = int(len(m))
kk = int(kk + 1)
kk = int(kk / 2)
upperhalf = m[kk:]
lq = statistics.median(upperhalf)
print("UQ: ", lq)

我希望能找到这个问题的答案。我花了好几天时间尝试谷歌的新东西、新方法和新答案来解决这个错误,但什么都没用。我感谢所有关注这个问题的人;如果有任何帮助,我将不胜感激。

诚挚的问候,

奈杰尔

您正在将一个字符串数组传递给中值函数。它需要数字数据(doc(。

您应该添加来自字符串的数据转换:

a = input("nnEnter your numbersn>>").split()
m = list(map(int, a))
# OR
m = list(map(float, a))

然后你可以删除所有其他转换,例如:

upperhalf = float(upperhalf)

最新更新