Новый для python, нуждающийся в помощи, как обычно, мне нужно создать функцию, которая запрашивает у пользователя для int от 10 до 50, если число вне диапазона составляет , выводит сообщение об ошибке и продолжить задаёте, но если ничего не будет введен он должен возвращать список всех номеров пользователь введенными, а также среднее значение этих чисел.Неожиданный EOF при анализе eval (ввод (
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)
Edit: Теперь ПОЛУЧАТЬ ValueError: неверный буквальным для Int() с базой 10: '' пытаются использовать только то, что мы охвачены в классе
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
Не используйте 'eval' для ввода пользователем. Это дает вашему пользователю возможность [удалить ваш жесткий диск] (http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html) и отправить смущающие фотографии вашей бабушке. Если вы хотите превратить строку в целое число, используйте 'int()'. – Kevin
Моя бедная бабушка, тогда как бы я преобразовал значение n в int, пока n все еще может использовать == ''? –
Сохраните строковую версию ввода в промежуточной переменной. Проверьте, что для "", и только после этого попытайтесь преобразовать в int. Это может потребовать переупорядочения ваших условностей. – Kevin