函数:将变量从int更改为float

时间:2014-03-11 12:49:15

标签: python python-2.7

我正在参加我的第一个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()整数结束参数预期,得到浮动'。我怎么能得到这个平方浮点数或负数的函数?提前感谢

2 个答案:

答案 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?

答案

我不知道“有效”是什么意思。这取决于你想要做什么。所以请评论或更新您的问题。