我想创建一个函数,返回我的5个计算(avg,min,neg,max sum)的元组这5个计算是基于用户输入的,当用户输入q/q时代码结束,但是我很难转换我的列表名为"ListStats"到元组
user_input = ''
user_values = []
x = 0
maxim = 0
sum_in_list = 0
avg = 0
neg_values = 0
mini = 0
z = 0
tuple1 = ()
while True:
user_input = (input('input:'))
if user_input in ['q', 'Q']:
break
elif user_input not in ['q', 'Q']:
user_values.append(int(user_input))
for value in user_values:
maxim = max(value,maxim)
#print( "the maximum value in the list is : " , maxim)
Minumum_value = min(user_values)
#print( "the minumum value in the list is : " , Minumum_value)
for value in user_values:
if value < 0:
z = len(value)
#print('the negative values are : ' , z)
for value in user_values:
sum_in_list = value + sum_in_list
#print('the sum is :' , sum_in_list)
for value in user_values:
avg = sum_in_list / ( len(user_values))
#print('the avg is :' , avg )
Liststats = [avg,z,maxim,sum_in_list,Minumum_value]
def jack(x):
Liststats = [avg,z,maxim,sum_in_list,Minumum_value]
tuple1 = tuple(Liststats)
print(tuple1)
jack(x)
我只是想根据用户输入返回5个统计数据作为一个元组,我如何将Liststats转换为一个元组,我如何使一个函数返回5个统计数据并引用我的列表
所以看起来你在jack(x)
中的打印语句没有正确缩进。
def jack(x):
Liststats = [avg,z,maxim,sum_in_list,Minumum_value]
tuple1 = tuple(Liststats)
print(tuple1)
Python不使用空格,并且tuple1
是一个局部变量而不是全局变量。
也可以将列表作为参数传入。
def jack(myList):
return tuple(myList)
print(jack(Liststats))
很难跟踪代码中发生的事情,并且由于您没有提供输入,我无法重现您的错误。
但是调用tuple(any_list_object)应该正确地给你一个元组。看起来你的问题可能来自于对函数的误解。
除了jack()函数以外的所有代码将在文件加载后立即运行。这意味着tuple1在开始时被创建为空元组。这就是当您尝试打印tuple1时所打印的内容(请注意它没有缩进,因此它不是函数的一部分)。
当您在末尾调用jack函数时,该函数创建一个新的变量,也称为tuple1,它遮蔽了先前的tuple1(在全局作用域中)。我认为这是你打算做的,但是函数结束了,这个变量超出了作用域而没有被使用。