3

我的老师不在课堂上教我们,我正在努力自学。这是我应该做的,这就是我已经走了多远。任何帮助将不胜感激!

  • 从用户那里获取五个数字的列表
  • 打印列表
  • 打印平均值
  • 修改列表,使每个元素都比以前大一
  • 打印修改后的列表
 def average():
     x=a+b+c+d+e
     x=x/5
     print("the average of your numbers is: " +x+ ".")

 my_list =[ ]
 for i in range (5):
     userInput = int(input("Enter a number: ")
     my_list.append(userInput)
     print(my_list)
 average(my_list)

感谢您的帮助,您的管子只能走这么远!

4

3 回答 3

3

sum()这里对您有用的主要功能是len()

sum()返回可迭代项的总和

len()返回 python 对象的长度

使用这些功能,您的案例也很容易应用这些功能:

my_list = []
plus_one = []

for x in range(5):
    my_list.append(x)
    plus_one.append(x+1) 

print my_list
print plus_one

def average():
    average = sum(my_list) / len(my_list) 
    return average

print average()

正如 Shashank 所指出的,推荐的方法是在函数中定义一个参数,然后在调用函数时传递列表的参数。不确定你是否了解过参数,所以我最初忽略了它。无论如何,这里是:

def average(x):
    # find average of x which is defined when the function is called

print average(my_list) # call function with argument (my_list)

这样做的好处是,如果您有多个列表,则不需要新函数,只需更改函数调用中的参数即可。

于 2013-10-04T21:15:12.787 回答
1

avg = sum(my_list)/len(my_list) if (len(my_list) != 0) else 0如果你想使用库函数,你可以简单地使用来获得你的平均值。

否则,如果您只想知道如何更改代码,请查看它生成的错误:

Traceback (most recent call last):
  File "file.py", line 12, in <module>
    average(my_list)
TypeError: average() takes no arguments (1 given)

显然,我们需要将列表传递给average. 这是计算平均值的一种非常幼稚的方法

def average(l):
  s =0
  c = 0
  for val in l:
    s += val
    c +=1
  avg = (s/c if (c != 0)  else 0)
  print("the average of your numbers is: " +str(avg)+ ".")

这可以很容易地被我之前的代码替换:

def avg(l):
  avg = sum(l)/len(l) if (len(l) != 0) else 0
  print("the average of your numbers is: " +str(avg)+ ".")
  # or
  if (len(l) !=0):
    avg = sum(l)/len(l)
  else:
    avg = 0
  print("the average of your numbers is: " +str(avg)+ ".")
于 2013-10-04T21:23:45.333 回答
1

我提供的解决方案使用了您似乎正在使用的 Python 3。

    #!/usr/bin/env python3

    """The segment below takes user input for your list."""

    userInput = input("Enter a comma-delimited list of numbers \n")
        userList = userInput.split(",")
        try:
            data_list = [float(number) for number in userList]
        except ValueError:
            print("Please enter a comma-delimited list of numbers.")


    def list_modifier(list_var):
       """Print the original list, average said list, modify it as needed,
          and then print again."""
       print("Your list is: " + list_var)
       average = sum(list_var) / len(list_var)  # Divide list by sum of elements
       for x in list_var:
            x += 1
       print("Your modified list is: " + list_var)

    list_modifier(data_list)

我使用了一些花哨的东西来获取用户输入以处理出现的错误,但实际上你不应该担心这样的事情。

split()字符串方法只是使用您提供的任何参数将字符串拆分为单个较小字符串的列表。在这种情况下,我将其拆分为每个逗号。我添加了错误处理,因为如果您以逗号结束字符串,输入函数将不起作用。

我还使用了list comprehension,这是 python 中的一种表达式,它根据括号内传递的参数创建列表。这可以在下面的代码中看到:

[float(number) for number in userList]

这将使用split()创建的字符串列表中的每个字符串并将其转换为一个数字。我们现在有了我们想要的数字列表。

除此之外,我们还有list_modifier函数,它首先用字符串连接声明数字列表。然后它使用sum()函数找到列表中所有元素的总和,并将该总和除以列表的长度。

for代码块获取列表中的每个元素并向其添加一个。再次使用字符串连接来最终显示我们修改后的列表。

我真的希望这个解决方案有所帮助,如果它有点过于复杂,对不起。Try/except块对于处理错误非常有用,我真的建议您稍后再查看它们。如果您想在课堂上取得进步,也请参阅Python 文档。

祝好运并玩得开心点!

于 2013-10-04T21:33:19.333 回答