【问题标题】:Writing a function that calculates the average value of 5 parameters from user input编写一个函数,根据用户输入计算 5 个参数的平均值
【发布时间】:2019-10-04 17:35:26
【问题描述】:

我需要构建一个代码,该代码将给出 5 个用户输入参数的平均总和。我必须将所有 5 个参数相加,然后将相加除以 5。我还必须确保函数使用 return 命令返回平均值作为函数的值。由于我是初学者,我不能使用高级代码。卡了好几天了。

我已尝试将字符串转换为 int

我尝试将列表转换为字符串到 int

我尝试过制作多个变量。

from statistics import mean

a = input("Enter 1st number:")
b = input("Enter 2nd number:")
c = input("Enter 3rd number:")
d = input("Enter 4th number:")
e = input("Enter 5th number:")
inputs = ['a', 'b', 'c', 'd', 'e']
input1 = int(inputs)
mean(inputs)


import math

a = input("Enter 1st number:")
b = input("Enter 2nd number:")
c = input("Enter 3rd number:")
d = input("Enter 4th number:")
e = input("Enter 5th number:")
inputs = ['a', 'b', 'c', 'd', 'e']
avg_mean = "5"
totals = int(inputs) / avg_mean

我希望得到所有 5 个用户输入的数字并将其除以 5 以获得平均总和。

【问题讨论】:

  • 你应该尝试自己实现这个。就作业而言,这是相当基本的。我建议先学习 python 的基础知识——在网上找教程,或者问你的老师。
  • 是的,我认为同样的事情会相当容易,我读过我拥有的两本书,这是我挂断的第一个任务。
  • 也看到了那个链接,这绝对是我最后的选择。

标签: python-3.x string integer average


【解决方案1】:

你有很多问题,我会为你指出一些:

from statistics import mean

a = input("Enter 1st number:")
b = input("Enter 2nd number:")
c = input("Enter 3rd number:")
d = input("Enter 4th number:")
e = input("Enter 5th number:")

到目前为止,您还可以,您可以更好地存储这些输入并使用循环而不是复制粘贴 5 次,但这仍然可以满足您的需求

inputs = ['a', 'b', 'c', 'd', 'e']

上面的行没有按照我想象的那样做。如果要将 5 个值放入列表中,则需要使用变量 a,b,c,d,e 而不是字符 'a','b','c','d','e'

inputs = [a, b, c, d, e]

接下来,int() 不适用于整个列表,您需要一次传递 1 个字符串。这是一个简单的方法:

for i in range(5): 
    inputs[i] = int(inputs[i])

然后,对于整数 inputs 列表,mean 将按照您的意愿工作

mean(inputs)

最后,你提到想把它变成一个函数,一旦一切正常,把它变成一个带有return 值的函数是很容易的。我会留给你研究的

【讨论】:

  • 很棒的反馈!我确实感觉我的原始列表不正确,我从 [a, b, c, d, e] 开始,然后是 [a + b + c + d + e]/5... 这是我第一次很迷茫,以为会很简单,去玩一下,谢谢。
【解决方案2】:

pythonic 实现

  • input 直接创建到一个列表中并使用range 重复
    • 无需为每个输入创建单独的对象
    • 无需再将这 5 个对象加载到另一个对象中
  • 立即使用int(input())input 转换为int
  • statistics.mean 适用于整个列表
  • [x for x in range(5)]list comprehension
  • f'Input {x} values'f-String
  • 该函数接受多少输入的参数。默认值为5,但如果您在调用函数时传递了其他数字,则不会使用该值。
from statistics import mean

def mean_of_inputs(number_of_inputs: int=5) -> float:
    return mean([int(input(f'Please input {x + 1} of {number_of_inputs} numbers: ')) for x in range(number_of_inputs)])

# Use the function
mean_of_inputs(6)

Please input 1 of 6 numbers:  10
Please input 2 of 6 numbers:  20
Please input 3 of 6 numbers:  30
Please input 4 of 6 numbers:  40
Please input 5 of 6 numbers:  50
Please input 6 of 6 numbers:  60
35

备选方案 1:

  • 没有list comprehension
  • 没有导入的模块
  • 将所有输入存储在numbers 中并使用内置函数sum
def mean_of_inputs(number_of_inputs: int=5) -> float:

    numbers = list()
    for x in range(number_of_inputs):
        numbers.append(int(input(f'Please input {x + 1} of {number_of_inputs} numbers: ')))

    return sum(numbers) / number_of_inputs

调用函数:

mean_of_inputs()

Please input 1 of 5 numbers:  2
Please input 2 of 5 numbers:  4
Please input 3 of 5 numbers:  6
Please input 4 of 5 numbers:  8
Please input 5 of 5 numbers:  10
6.0

备选方案 2:

  • 不要存储输入,只需将它们添加到运行总计中
def mean_of_inputs(number_of_inputs: int=5) -> float:

    sum_of_inputs = 0
    for x in range(number_of_inputs):
        sum_of_inputs += int(input(f'Please input {x + 1} of {number_of_inputs} numbers: '))

    return sum_of_inputs / number_of_inputs

【讨论】:

    【解决方案3】:
    from statistics import mean
    
    a = input("Enter 1st number:")
    b = input("Enter 2nd number:")
    c = input("Enter 3rd number:")
    d = input("Enter 4th number:")
    e = input("Enter 5th number:")
    
    m = mean(map(int, [a,b,c,d,e]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-22
      • 2014-07-01
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多