为了账号安全,请及时绑定邮箱和手机立即绑定

python中不存在2^n(2的n次方)这种表达方式嘛?

sum = 0
x = 1
n = 1
while True:
    sum=sum+x
    x=2^n
    n=n+1
    if n>20:
        break
print sum

求1+2+4+……的前20项和,无法执行


正在回答

5 回答

^这个符号不是计算机语言,求次方用两个**,即x=2**n

1 回复 有任何疑惑可以回复我~
#1

番茄爱上西红柿_Q 提问者

感激,用**代替^就能运行啦!
2017-02-28 回复 有任何疑惑可以回复我~

^这个符号在Python里叫按位异或(学过关系代数或离散数学肯定懂)。**才是指数

0 回复 有任何疑惑可以回复我~

因为第一项为2的0次方,所以前20项只到2的19次方,所以可将代码调整两处,使其计算少几步

 x=2**n

sum+=x

n=n+1

 if n>19:

     break

 

1 回复 有任何疑惑可以回复我~
#1

番茄爱上西红柿_Q 提问者

看了两遍发现你这段代码的问题啦~ 求和是从1 开始累加的,如果先x=2**n的话就落掉1了我觉得,你看下是不是~
2017-02-28 回复 有任何疑惑可以回复我~
#2

丶风中的承诺 回复 番茄爱上西红柿_Q 提问者

是滴,抱歉。改成这样 sum = 0 n = 0 while True: sum+=2**n n+=1 if n>19: break print sum
2017-02-28 回复 有任何疑惑可以回复我~
#3

番茄爱上西红柿_Q 提问者 回复 丶风中的承诺

嗯嗯,这个是对的 突然想到了另一个问题,sum+=2**n(一句) 和sum=sum+x x=2**n(拆成两句) 编程之后对这两种表达方式的处理速度是一样的嘛?还是说一句会更快点呢?
2017-02-28 回复 有任何疑惑可以回复我~
#4

丶风中的承诺 回复 番茄爱上西红柿_Q 提问者

不懂,哈哈哈。但写起来简单,代码优化
2017-02-28 回复 有任何疑惑可以回复我~
查看1条回复

这个好像是没有的。不过可以用pow(2,n)这个函数

0 回复 有任何疑惑可以回复我~
#1

番茄爱上西红柿_Q 提问者

好哒,等学到函数的时候试一下,谢谢~
2017-02-28 回复 有任何疑惑可以回复我~

不存在


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758623    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

python中不存在2^n(2的n次方)这种表达方式嘛?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信