我正在参加我的第一个python课程,这应该是一件容易的事,但我无法做到。我已经完成了搜索,但我猜这个关键字太常见了。
所以,我做了一个任务,我必须编写一个对数字进行平方的函数。我只是成功地做到了:
def square(x):
'''x: int or float.'''
return x * x
如果我尝试合并一些循环,我尝试过其他函数只是为了尝试不同的练习方式:
def square(x):
'''x: int or float.'''
for number in range(x):
result = x * x
return result
它只适用于整数(因此square(5)给我25,但square(5.0)给我' TypeError:range()整数结束参数预期,得到浮动'。我怎么能得到这个平方浮点数或负数的函数?提前感谢
答案 0 :(得分:0)
第二个示例中的循环实际上没有做任何事情:它每次都用相同的数字覆盖result
的值,甚至不使用循环计数器。
如果你想要另一种计算正方形的方法,那么只使用循环的整数方法就是:
def square2(x):
x = int(math.fabs(x))
result = 0
for i in range(x):
result += x
return result
这将x
的总和加x
次(即将乘法转换为加法)。它也处理负整数,但不处理浮点数。这对浮点数不起作用的原因是你不能从0计算到任意浮点数(实数是不可数的)。
老实说,你问题的第一个解决方案是直截了当,简单,因此(IMO)是最好的解决方案。
答案 1 :(得分:0)
It's only valid for integers(so square(5) gives me 25, but square (5.0) gives me 'TypeError: range() integer end argument expected, got float'.
因为range
函数被定义为仅采用整数数据。请参阅Python documentation。
示例:
>>> range(5)
[0, 1, 2, 3, 4]
>>> range(5.0)
TypeError: range() integer end argument expected, got float.
>>> range("5")
TypeError: range() integer end argument expected, got str.
>>> range(0, 5)
[0, 1, 2, 3, 4]
>>> range(0, 5.0)
TypeError: range() integer end argument expected, got float.
How can I get this valid for floats or negative numbers?
我不知道“有效”是什么意思。这取决于你想要做什么。所以请评论或更新您的问题。