python --- int( )函数计算等比数列前n项和

    以计算等比数列1+2+4+8+…+an为例,求前7项和。

先看常规解法:
a1 = 1		#首项
q = 2		#公比
s = 0		#前n项和
n = 7		#n项
for i in range(n):
	   s += a1*2**i

s = sum(a1 * 2**i for i in range(n))
int()函数:

int( x [, d] )
返回实数x的整数部分,或把字符串x看作d进制数并转化为十进制,d默认为10进制。

int()解法:
a1 = 1
q = 2
s = 0
n = 7

#'1'*n :返回n个对应字符串组成的新字符串,如:'1'*7 返回字符串'1111111'
s = a1 * int('1'* n, q)		 # s = 1*int('1'*n, 2)
解析:

将等比数列前n项的和看作是 a1 乘以一个 q 进制数,
即:
a1+a2+a3+a4+…an = a1*( q0+q1+q2+q3+…+qn)

当 a1 = 1, q = 2, n = 7 时,
原式 = 1 + 2 + 4 + 8 +…+ an
        = 1*( 20 + 21 + 22 + 23 +…+ 27)
        = 1* 20 + 1* 21+ 1* 22 + 1* 23 +…+ 1* 27 (等同于二进制数1111111(2) 转十进制的计算)
        = 1111111(2)
        = 127(10)

int()效率问题

比较运行时间:

import time
if __name__ == '__main__':
    start = time.perf_counter()  # 起始时间
    
	'''
	for i in range(n):		#1
		s += a1*2**i
	'''
	
	'''
 	s = sum(a1 * 2**i for i in range(n))		#2
 	'''
 	
	s = a1 * int('1'* n, q) 	#3
	
    end = time.perf_counter()  # 结束时间
    print('运行时间:%.10fs' % (end - start))  # 输出运行时间

在这里插入图片描述
int()方法避开了循环,而执行进制的转换速度较快。并经过多次验证,int()方法比第一种方法速度提高了近3倍,比第二种提高近2倍。

比较遗憾的是,由于函数int()自身的限制,第二个参数只能为0或者2-36之间的整数,不适用于比值q为小数或者大于36的情况。

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
经导师精心指导并认可、获 98 分的毕业设计目!【目资源】:微信小程序。【目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计目!【目资源】:微信小程序。【目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计目!【目资源】:微信小程序。【目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计目!【目资源】:微信小程序。【目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Whitemeen太白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值