Как найти среднее значение списка

#python #list #python-3.x

#python #Список #python-3.x

Вопрос:

Я очень новичок в python и пытаюсь написать некоторый код, чтобы пользователь что-то вводил. Если это целое число, оно сортируется в списке чисел, если это строка, она попадает в список строк.

Я хочу иметь возможность найти среднее значение всех чисел, которые есть в списке, и распечатать результат. И в разделе String я хочу иметь возможность распечатать все в строке и ее длину. Пользователь вводит «сохранить» для выхода, и если ввод действителен, он перехватывается.

 Numbers = []
String = []

while(True):
    user_input = input("What's your input? ")
    if user_input == "save":
        break
    elif user_input.isdigit():
        Numbers.append(user_input)
        for i in range(len(Numbers)):
            Numbers[i] = int(Numbers[i])
            print(sum(Numbers)/len(Numbers)
    elif isinstance(user_input, str):
        String.append(user_input)
        print(String)
        print (len(String)-1)
    else:
        print("Invalid input.")
        break
  

Комментарии:

1. В строке print(sum(Numbers)/len(Length) вам, похоже, не хватает закрывающей скобки ( ) ). Это опечатка при копировании на сайт?

2. вам не нужно каждый раз преобразовывать все числа в целые числа! И len(Length) должно быть также из-за опечатки. Должно быть len(Numbers) и вычисляться из цикла. BTW не будет работать для отрицательных чисел из-за isdigit() метода.

3. Обновил опечатку, спасибо, но все равно не исправил проблемы, и я не хочу объяснять негативы только позитивами

4. Что в вашем опубликованном коде или даже в описании проблемы говорит о чем-либо, устраняющем негативы?

Ответ №1:

 #use isalpha to check enterted input is string or not
#isalpha returns a boolean value

Numbers = []
String = []

while(True):
    user_input = input("input : ")
    if user_input == "save":
        break
    elif user_input.isdigit():
        Numbers.append(int(user_input))
        print(sum(Numbers)/len(Numbers))
    elif user_input.isalpha():
        String.append(user_input)
        print(String)
        print (len(String))
    else:
        print("Invalid input.")
        break
  

Ответ №2:

Есть хорошая вещь, которая называется statistics.mean :

 from statistics import mean
mean(your_list)
  

Комментарии:

1. Меня попросили сделать это без импорта чего-либо и просто сделать это с помощью кодирования.

Ответ №3:

Вы используете Length , который не был определен. Я думаю, что вы хотели

 print(sum(Numbers)/len(Numbers))
  

и вы, вероятно, не хотите, чтобы это было внутри цикла, а сразу после него (хотя это может быть еще одна опечатка).

Комментарии:

1. Извинения, обновил код, чтобы иметь правильную переменную, была ошибка при вводе.

Ответ №4:

Я нашел другой, более удобный способ получения среднего значения: используйте статистическую модель и выводите среднее значение.

 #import useful packages
import statistics

#Create an empty list
user_list = []

#get user request
user_input = input("Welcome to the average game. The computer is clever enough to get the average of the list of numbers you give. Please press enter to have a try.")

#game start
while True:
    #user will input their number into a the empty list
    user_number = input("Type the number you want to input or type 'a' to get the average and quit the game:")

#help the user to get an average number
if user_number == 'a':
    num_average = statistics.mean(user_list)
    print("The mean is: {}.".format(num_average))
    break #Game break
else:
    user_list.append(int(user_number))
    print(user_list)