Как мне использовать плавающие значения пользовательского ввода и находить среднее, минимальное, максимальное и диапазон в Python

#python

#python

Вопрос:

я понимаю, как это сделать с целыми числами, но я не понимаю, как принимать значения с плавающей запятой от пользователя и находить среднее, минимальное, максимальное и диапазон. я продолжаю получать сообщение об ошибке, в котором говорится: TypeError: объект ‘float’ не может быть повторен.

Пока это мой минимальный код, и я знаю, что он не работает, но просто ищу совет о том, как брать числа пользователей с плавающей запятой и находить среднее, минимальное, максимальное и диапазон. Спасибо!

 import statistics
def main ():
    
    userNum= float(input("Give me 5 numbers "))
    
    
    average = statistics.mean(userNum)
    print("The average of the numbers given is: ", average)

    print(max(userNum))
    print(min(userNum))

    main() 
  

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

1. Попробуйте userNum= [float(x) for x in input("Give me 5 numbers ").split()]

Ответ №1:

Вы не можете напрямую преобразовать входные данные в float. Сначала вам нужно разделить пользовательский ввод. Если это похоже:

 "3.4, 5.6, 8.7, 6.4, 9.8"
  

Затем попробуйте так:

 import statistics
def main():
  userNum = float(input("Give me 5 numbers "))
  userNum = [float(x) for x in userNum.split(", ")]
  average = statistics.mean(userNum)
  print("The average of the numbers given is: ", average)

  print(max(userNum))
  print(min(userNum))
  main()
  

Ответ №2:

Прежде всего, вам нужно сделать отступ main() при вызове функции, я имею в виду последнюю строку вашего кода.

Это мое решение без statistics модуля, потому что я не очень хорошо с ним знаком.

 def main():
    tries = 0
    while True:
        tries  = 1
        print(f'try number {tries}')
        user_num = float(input('Enter five floating points: '))
        if tries == 1:
            sum1 = user_num
        elif tries == 2:
            sum2 = user_num
        elif tries == 3:
            sum3 = user_num
        elif tries == 4:
            sum4 = user_num
        elif tries == 5:
            sum5 = user_num
            sums = sum1   sum2   sum3   sum4   sum5
            print(f'sum is {sums}')
            average = sums / tries
            print(f'The average of the numbers given is: {average}')
            all_numbers = [sum1, sum2, sum3, sum4, sum5]
            all_numbers.sort()
            print(f'sorted: {all_numbers}')
            print(f'the minimum number is {all_numbers[-1]}')
            print(f'the maximum number is {all_numbers[0]}')
            break


main()
  

Надеюсь, вам это понравится.

Получайте удовольствие 🙂

Ответ №3:

Обновление: это решение, которое я нашел. Возможно, это слишком упрощенно, но для меня это работает.

 def main ():
 import statistics
 userNum= input("Enter 5 floating point values seperated by a space")

 x=[float(x) for x in userNum.split(" ")] #converts string to floating point 
 values

 average = statistics.mean(x) #find the average value entered
 print("The average of the numbers given is: ", average) #print the average 
 number entered

 print (min(x), "The min number given") #print the min number entered
 print (max(x), "The max number given") #print the max number entered


 diff= max(x) - min(x) #calculate the range
 print (diff, "This is the range of numbers given") #print the range


main()