Python 3.4-附加到列表中的数字被认为是非类型的
我正在制作一个程序,用户在其中输入一些数字,然后他们可以选择计算数字的平均值、中值、模式或范围 这是我的密码Python 3.4-附加到列表中的数字被认为是非类型的,python,python-3.4,Python,Python 3.4,我正在制作一个程序,用户在其中输入一些数字,然后他们可以选择计算数字的平均值、中值、模式或范围 这是我的密码 import statistics def number(): yn = 'y' while yn == 'y': x = input("Enter a number.") numbers = [] numbers.append(x) yn = input('Enter another one? y/n')
import statistics
def number():
yn = 'y'
while yn == 'y':
x = input("Enter a number.")
numbers = []
numbers.append(x)
yn = input('Enter another one? y/n')
if yn == 'n':
break
return numbers
def findaverage(x):
x = sum(x)-len(x)
print(x)
def findrange(x):
x = max(x) - min(x)
print(x)
def findmode(x):
x = statistics.mode(x)
print(x)
def findmedian(x):
x = statistics.median(x)
print(x)
def main():
numbers = number()
x = ''
while x != "1" or x != "2" or x != "3" or x != "4":
x = str(input("What would you like to do?\n1.Average\n2.Range\n3.Mode\n4.Median"))
if x == "1":
findaverage(numbers)
elif x == "2":
findrange(numbers)
elif x == "3":
findmode(numbers)
elif x == "4":
findmedian(numbers)
main()
当我运行程序时,它会给我以下回溯:
Enter a number.2
Enter another one? y/ny
Enter a number.4
Enter another one? y/ny
Enter a number.5
Enter another one? y/nn
What would you like to do?
1.Average
2.Range
3.Mode
4.Median1
File "C:\file.py", line 45, in <module>
File , line 45, in <module>
main()
main()
File , line 36, in main
File , line 36, in main
findaverage(numbers)
findaverage(numbers)
File , line 19, in findaverage
x = sum(x)-len(x)
TypeError: 'NoneType' object is not iterable
输入一个数字。2
输入另一个?y/纽约
输入一个数字
输入另一个?y/纽约
输入一个数字
输入另一个?是/否
你想做什么?
1.平均
2.射程
3.模式
4.1
文件“C:\File.py”,第45行,在
文件,第45行,在
main()
main()
文件,第36行,主
文件,第36行,主
findaverage(数字)
findaverage(数字)
文件,第19行,findaverage
x=总和(x)-长度(x)
TypeError:“非类型”对象不可编辑
我不确定是什么导致了这个问题
非常感谢您的帮助,谢谢 问题在于并非所有通过
number()
的代码路径都有明确的return
语句。当没有显式返回时,None
将隐式返回。问题在于,并非通过number()
的所有代码路径都有显式return
语句。当没有显式返回时,None
隐式返回。问题是:
- 每次都要重置数字列表(
)。把它移出循环李>numbers=[]
- 在你返回列表之前,你正在打破循环。完全删除
语句break
- 您从
输入中获取字符串,但您的函数需要整数。使其
x=int(输入(“输入一个数字”)
- 每次都要重置数字列表(
)。把它移出循环李>numbers=[]
- 在你返回列表之前,你正在打破循环。完全删除
语句break
- 您从
输入中获取字符串,但您的函数需要整数。使其
x=int(输入(“输入一个数字”)
- 问题是:
numbers=[]
移出循环,现在它介于yn='y'
和之间,而yn='y':
但它仍然这样做啊。我懂了。现在删除break
语句x=int(输入(“输入一个数字”)
我把numbers=[]
移出了循环,现在它介于yn='y'
和之间,而yn='y':
但它仍然这样做啊。我懂了。现在删除break
语句x=int(输入(“输入一个数字”)
我已经编辑了这个问题,并将其放回了导致您所问问题的代码中。否则你的问题就没有任何意义了。请随意问另一个问题来解决你的其他问题。我已将此问题编辑回导致你所问问题的代码中。否则你的问题就没有意义了。请随便问另一个问题来解决你的其他问题。