我是第一次学习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
答案 0 :(得分:4)
你的代码有很多问题,但它们大多数都是非常简单的,它们第一次就会让很多人绊倒。不要让他们让你失望。
首先,您不应重复使用已具有list
和sum
含义的名称。基本上,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)
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]
使用map
,reduce
和list 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)的更多信息。