操作符和递归

公众号:原少子杨

向下取整(//)和取余(%)

两个数相除,传统的除法会得到一个浮点数,向下取整会得到一个整数。

>>> minutes = 105
>>> minutes / 60
1.75
>>> minutes // 60
1
>>> minutes % 60
45

取余可以用来获取一个数后一位或者后几位数字,例如 x % 10 可以得到个位数字,x % 100 可以得到后两位数字;还可以检验是否能够被一个数整除。

在 Python 2 中,除法操作符(/)左右的操作对象都是整数时,进行的是向下取整操作,而有一个数是浮点数时,进行的就是浮点数操作。

>>> 65 / 3
21
>>> 65.0 / 3
21.666666666666668

无限递归的避免

函数调用自己也是一种合法行为,我们通常称为递归,但是如果一个递归永远达不到退出条件,就会无限的递归下去。

def recurse():
    recurse()

因此写递归函数的时候,一定要加上一个退出的条件,如:

def countdown(n):
	if n <= 0:
		print('Bye!')
	else:
		print(n)
		countdown(n-1)

该函数会在 n <= 0 的时候退出。

增量开发与函数的简化

通常在编写一个函数的时候会经常遇到输出中间值来验证程序的运行,这些中间值是便于我们调试而产生的,因此这个过程称为增量开发。

例如计算圆的面积:

def circle_area(xc, yc, xp, yp):
    radius = distance(dc, yc, xp, yp)  # 计算圆的半径的函数
    result = area(radius)  # 计算圆的面积
    print(radius, result)
    return result

这里面,radius 和 result 都是为了方便调试而设置的中间值,因此可以简化该函数:

def circle_area(xc, yc, xp, yp):
    return area(distance(xc, yc, xp, yp))

再比如判断一个数能否被整除:

def is_divisible(x, y):
    if x % y == 0:
        return True
    else:
        return False

可以直接简化为:

def is_divisible(x, y):
    return x % y == 0

函数代码是不是简洁了许多?当然这种情况只适用于这些值不需要的情况,在大型程序中如果这些值还会用到,就不必简化了,那样反而会使程序太过复杂。

欢迎关注我的公众号!

欢迎关注我的公众号!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值