函数接收来自用户的输入并返回python中的sum和square

时间:2017-10-10 00:33:39

标签: python

我是第一次学习Python的程序员,需要接收来自用户的输入并返回输入以及输入数据的总和和平方。我已经提示输入并可以打印但不知道如何将输入传递给sum函数和square函数。

这就是我所拥有的:

def sum(list):
  data = input("Enter a list of numbers or enter to quit: ")
  for data in list():
    return sum(list) # Not sure how to make it x*y for my list of values?
  print("The sum of your list is: ", list)

这对于我的square函数是一样的。不知道怎么做:

return(list ** 2)#return list by ** 2

3 个答案:

答案 0 :(得分:4)

你的代码有很多问题,但它们大多数都是非常简单的,它们第一次就会让很多人绊倒。不要让他们让你失望。

首先,您不应重复使用已具有listsum含义的名称。基本上,this page顶部的表格中的任何名称。

其次,你正在接受两个“列表”(不是真的,但我们会到达那里)。一个是作为参数传递给你的函数(list中的def sum(list):)。另一个是行中的data

data = input("Enter a list of numbers or enter to quit: ")

第三,上面一行中的data实际上不是一个列表,它是一个字符串。如果您想要从input分割数据并在以后将其用作数字,则必须手动执行此操作。

第四,当您在data行中再次使用名称for data in list()时,您将使用data中的元素覆盖现有list()变量中包含的信息。至少你会是这样。

第五,list()是函数调用。 Python中有一个list函数,这可以工作,但我想你可能希望这会迭代你传递给函数的列表。

第六,return sum(list)将再次调用此函数,可能永远。

现在,我们该如何解决这个问题?

值得庆幸的是,如果需要,内置函数sum可以为我们添加列表,但首先我们必须从用户那里获取列表。

def input_list():
    s = input("Enter integers separated by spaces:\n")
    return [int(x) for x in s.split()]

[int(x) for x in ...]位称为list comprehension 。你会在一秒钟内看到另一个。

此功能接受

之类的输入
23 45 12 2 3

并将其转换为int s的列表 然后我们可以

print(sum(input_list()))

正方形有点困难,但是列表推导使它们变得容易。刚

print([x**2 for x in input_list()])

如果有任何后续问题不清楚,请随时提出任何后续问题。

答案 1 :(得分:0)

repl for code below:

def square(numbers):
  squared = []
  for number in numbers:
    squared.append(number**2)
  return(squared)

str_of_numbers = input("Enter a list of numbers or enter to quit: ")
print("input (string):", str_of_numbers)

numbers_as_strings = str_of_numbers.split(' ')  # now have a list of strings
print("list of numbers (as strings):", numbers_as_strings)

# turn list of strings into list of numbers
numbers_list = []
for number_as_string in numbers_as_strings:
  numbers_list.append(int(number_as_string)) 
print("list of numbers: ",numbers_list, "\n")

print("The sum of your numbers is: ", sum(numbers_list))        # uses built in `sum` function
print("The squares of your numbers are:", square(numbers_list)) 

上面的代码输出:

  

输入数字列表或输入退出:1 2 3
  输入字符串:1 2 3
  数字作为字符串列表:[' 1',' 2',' 3']
  数字列表:[1,2,3]

     

你的数字总和是:6
  你的数字的平方是:[1,4,9]

使用mapreducelist comprehensions也可以更简洁地完成此操作。
但是,根据OP的问题,这似乎更合适。

答案 2 :(得分:-2)

首先,您不应该使用list作为变量名,因为它实际上是一种数据类型(https://docs.python.org/3/library/stdtypes.html#list)。

至于对数字列表进行数学运算,我建议调查numpy。它允许您对数组执行操作以及更多变化和有用的数学函数。 为了平衡列表中的每个项目,您只需执行以下操作:

import numpy as np

myList = [1,2,3,4]

print(np.square(myList))

以上代码会打印[ 1 4 9 16]

有关numpy(http://www.numpy.org/)和square函数(https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.square.html)的更多信息。