如何使用用户输入的for循环计算最大,最小,平均值?

时间:2019-05-07 05:43:08

标签: python python-3.x

这是一个Python作业问题,要求用户输入他们在赛道上奔跑的次数,然后使用For Loop来提示他们输入每一圈的时间。循环结束后,程序将显示最快,最慢和平均单圈时间。

仅使用For Loop即可轻松计算平均值,因为我只需要用'+ ='累加单圈时间,然后除以循环数即可,但不确定如何使用For Loop存储单个值存储和检索最大(最慢)和最小(最快)值。

我尝试使用列表执行此操作:

lap_time = float(input('Enter the lap times separated by space'))

time = lap_time.separator()
fastest = min[time]
slower = max[time]

但是,当我尝试“平均时间”时,它给出了一个错误,指出列表值不是数字。

p.s。还尝试了导入统计信息以使用均值函数,但出现了相同的错误。

非常感谢有人可以给我一些有关此问题的指导。谢谢。

4 个答案:

答案 0 :(得分:0)

不是最明确的答案,但是它可以帮助您了解要做什么,这是最重要的,在这里(编辑:因为这是家庭作业)

timeMAX = 0#slowest
timeMIN = 0#fastest
for #yourForLoop
    if sys.stdin.readline() > timeMAX:
        timeMAX = sys.stdin.readline()
    if sys.stdin.readline() < timeMIN:
        timeMIN = sys.stdin.readline()

为了获得更好的可读性,我将使用time=sys.stdin.readline()。请记住要确保用户的答案可以小于零或字符。 GL!

答案 1 :(得分:0)

您可以将每个值映射为拆分后的浮点数

lap_time = list(map(float, input('Enter the lap times separated by space : ').split()))
print(lap_time)
fastest = max(lap_time)
slower = min(lap_time)
average  = sum(lap_time) / len(lap_time)
print('Fastest:{} ,Slowest :{} ,Average:{}'.format(fastest,slower,average))

输入:-
Enter the lap times separated by space : 10 20 30 40 50
输出:-

[10.0, 20.0, 30.0, 40.0, 50.0]
Fastest:50.0 ,Slowest :10.0 , Average:30.0

答案 2 :(得分:0)

尝试使用(我也做average):

lap_time = map(float, input('Enter the lap times separated by space').split())

fastest = min(lap_time)
slower = max(lap_time)
average = sum(lap_time) / len(lap_time)

答案 3 :(得分:0)

代码中的某些错误

  • 您需要将输入的圈数作为字符串输入,将输入的内容作为浮点数输入,这在这里不起作用
  • 我们使用string.split将字符串拆分为空格,为此我们没有名为separator的函数
  • maxmin是将列表作为参数的函数,例如min(arr)max(arr)
  • 您可以通过进行sum(arr)取列表的总和,然后除以列表中的项数来计算平均值。

重构后的代码将是

#Get input as string
s = input('Enter the lap times separated by space')

lap_time = []
#Split string on whitespace, convert each string to float and save to laptime string
for item in s.split():
    lap_time.append(float(item))

#Calculate fastest and slowest by min and max function
fastest = min(lap_time)
slowest = max(lap_time)

#Calculate average by divinding sum of lap times by no of items in list
average = sum(lap_time)/len(lap_time)

print('Fastest ', fastest)
print('Slowest ', slowest)
print('Average ', average)

输出将为

Enter the lap times separated by space1.0 2.0 3.0 4.0 5.0
Fastest  1.0
Slowest  5.0
Average  3.0

在这里请注意,我还可以减小代码的大小以使其更紧凑,但是这样可以减少初学者对代码的学习!