python的新手,像往常一样需要帮助,我必须创建一个函数,如果范围之外的数字是,则要求用户输入10到50之间的int。 输入,打印错误信息并继续询问输入,但如果没有输入,则必须返回用户输入的所有数字的列表以及这些数字的平均值。
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(输入))但是我不确定如何解决这个问题。
def myAvg():
lst = []
while True:
n = eval(input('Enter an int between 10 and 50: '))
if n < 10:
print('Please enter ant int between 10 and 50')
elif n > 50:
print('Please enter an int between 10 and 50')
elif n == '':
return lst
lst.append(n)
编辑:现在收到ValueError:基数为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
EDIT2:
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
答案 0 :(得分:0)
这是你的代码,它试图将一个数字转换为整数,当提供一个空输入时,它捕获抛出的ValueError
并返回列表。我还将两个条件n < 10
和n > 50
合并为一个。
def myAvg():
lst = []
while True:
try:
n = int(input("Enter a number: "))
if n < 10 or n > 50:
print("Please enter a number between 10 and 50")
else:
lst.append(n)
except ValueError:
print(lst)
return sum(lst) / len(lst)
print(myAvg())
输出:
C:\Users\jermenkoo\Desktop>test.py
Enter a number: 10
Enter a number: 10
Enter a number: 1
Please enter a number between 10 and 50
Enter a number:
10.0
eval()
是危险的,不应该被使用,因为它可以执行任意输入,例如__import__('os').system(<your command here>)
。如果命令为rm
,您可能会发现所有文件都已删除。其他可能性是检查提供的输入是否等于''
,例如:
def myAvg():
lst = []
while True:
n = input("Enter a number: ")
if n == '':
print(lst)
return sum(lst) / len(lst)
else:
temp = int(n)
if temp < 10 or temp > 50:
print("Please enter a value between 10 and 50.")
else:
lst.append(temp)
print(myAvg())
计算列表的平均值是一项简单的任务 - sum(lst) / len(lst)
。 sum(lst)
返回列表中数字的总和,len(lst)
返回元素数。
由于您似乎使用的是Python 2.x,因此修改了代码:
def myAvg():
lst = []
while True:
n = raw_input("Enter a number: ")
if n == '':
return 1.0 * sum(lst) / len(lst)
else:
temp = int(n)
if temp < 10 or temp > 50:
print("Please enter a value between 10 and 50.")
else:
lst.append(temp)
print(myAvg())
答案 1 :(得分:0)
再次,像凯文所说,不要使用eval
。
def myAvg():
lst = []
while True:
n = raw_input('Enter an int between 10 and 50: ')
if n=="":
print lst
break
if 10<int(n)<50:
lst.append(int(n))
myAvg()