作为python的新手,我需要创建一个函数,如果超出范围的数字是 输入后,打印一条错误消息并继续请求输入,但如果没有输入任何内容,则必须返回用户输入的所有数字的列表以及这些数字的平均值。在
Example input/output:
myAvg()
Enter an int: 34
Enter an int: 43
Enter an int: 23
Numbers entered: 34 42 23
Average of list: 33
这是我目前为止的代码,还没有完成到让它返回列表的程度。如果我没搞错的话,我在解析时得到了一个意外的EOF,这是由于eval(input))造成的,但是我不确定如何解决这个问题。在
^{pr2}$编辑:现在接收值错误:基为10的int()的文本无效:“” 尽量只使用我们在课堂上讲过的东西
def myAvg():
lst = []
while True:
n = input('Enter an int between 10 and 50: ')
if int(n) < 10 or int(n) > 50:
print("Please enter an integer between 10 and 50")
elif n == '':
lst.append(int(n))
return lst
编辑2:
def myAvg():
lst = []
while True:
n = input("Enter an integer between 10 and 50: ")
if n == '':
print('Numbers entered:')
return lst
else:
ntemp = int(n)
if ntemp < 10 or ntemp > 50:
print("Please enter a value between 10 and 50.")
else:
lst.append(ntemp)
print('Average of numbers:')
return sum(lst) / len(lst)
输出的内容:
Enter an integer between 10 and 50: 45
Average of numbers:
45.0
同样,就像凯文说的,不要使用
eval
。在这是您的代码,它尝试将数字转换为整数,当提供空输入时,它捕获抛出的}合并为一个。在
ValueError
并返回列表。我还将两个条件n < 10
和{输出:
^{pr2}$最重要的是,
eval()
是危险的,不应使用它,因为它可以执行任意输入,如__import__('os').system(<your command here>)
。如果命令是rm
,您可能会发现所有的文件都被删除了另一种可能性是检查所提供的输入是否等于
''
,例如:计算列表的平均值是一项简单的任务-
sum(lst) / len(lst)
。sum(lst)
返回列表中数字的总和,len(lst)
返回元素的数目。在既然您使用的似乎是Python 2.x,下面是修改后的代码:
相关问题 更多 >
编程相关推荐