#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)