爱意随风起9306 发表于 2023-1-30 21:40:09

放麦子

for i in range(1,65):
    if i==1:
      print(1)
    elif i==64:
      print(2**i-1)
    else:
      print(2**i)
上面的代码可以打印出64行的结果,如果我想要再第65行输出前面的64行相加的结果,该怎么修改代码呢

tommyyu 发表于 2023-1-30 21:45:09

s = 0
for i in range(1,65):
    if i==1:
      print(1)
      s += 1
    elif i==64:
      print(2**i-1)
      s += (2**i-1)
    else:
      print(2**i)
      s += (2**i)
print(f'相加的和是{s}')

爱意随风起9306 发表于 2023-1-30 21:57:05

tommyyu 发表于 2023-1-30 21:45


这个,第二项的2没有了,好像有点怪,但是又不知道在哪里

爱意随风起9306 发表于 2023-1-30 21:58:33

tommyyu 发表于 2023-1-30 21:45


等一下,好像是我的代码出错了

tommyyu 发表于 2023-1-30 21:58:58

爱意随风起9306 发表于 2023-1-30 21:57
这个,第二项的2没有了,好像有点怪,但是又不知道在哪里

把if i==1变成if i==0

爱意随风起9306 发表于 2023-1-30 22:03:46

tommyyu 发表于 2023-1-30 21:58
把if i==1变成if i==0

格式应该是
1
2
4
8
16
这样,我的代码好像少了2,有点怪

爱意随风起9306 发表于 2023-1-30 22:06:58

tommyyu 发表于 2023-1-30 21:45


如果把range里的1换成0,格式是对了,但是是66个数了,超了一个

tommyyu 发表于 2023-1-30 22:11:03

爱意随风起9306 发表于 2023-1-30 22:06
如果把range里的1换成0,格式是对了,但是是66个数了,超了一个

s = 0
for i in range(0,64):
    if i==0:
      print(1)
      s += 1
    elif i==64:
      print(2**i-1)
      s += (2**i-1)
    else:
      print(2**i)
      s += (2**i)
print(f'相加的和是{s}')

爱意随风起9306 发表于 2023-1-30 22:14:09

tommyyu 发表于 2023-1-30 22:11


小丑竟是我自己{:5_99:}

isdkz 发表于 2023-1-30 22:33:31

s = 0
for i in range(0,64):
    print(tmp:=2**i)
    s += tmp
print(f'总和:{s}')
页: [1]
查看完整版本: 放麦子