亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

我這個思路有問題嗎?為什么會多1 呢?

sum = 0

x = 1

n = 1

while True:

? ? x = x * 2

? ? sum = x

? ? if x > 2**19:

? ? ? ?break

print sum


正在回答

3 回答

?if x > 2**19: 不知道你這行是什么意思哦

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

朋友你好,你這個算法得出來的是2的20次方,你的while塊只用上了x=x*2,sum并沒有用上。我猜測,你是想用等比數列的算法來計算該題吧。那你可以嘗試這段代碼

a=1

q=2

def f(x):

? ? return a*(1-q**x)/(1-2)

print(f(20))

如果根據題目要求的話,那就老老實實一個一個加唄

sum = 0

x = 1

n = 1

while True:

? ? sum=sum+x

? ? x=x+x

? ? n=n+1

? ? if n>20:

? ? ? ? break

print(sum)

,注意sum很重要哦

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

小烽工作室3358476

你不覺得,應該把判斷n的大小,寫在最前面嗎?要不然,容易出錯,判斷條件不符合,立即跳出循環,這個才是正確的思路,所以,您的if n>20: break 放在最后面,是不合理的。
2018-12-20 回復 有任何疑惑可以回復我~
#2

慕函數3031282 回復 小烽工作室3358476

謝謝指導!有道理,加在前面防止出錯。
2018-12-20 回復 有任何疑惑可以回復我~
#3

慕函數3031282 回復 小烽工作室3358476

我這段是將n=n+1放在了最后,所以沒出錯,以后會多關注此類問題的
2018-12-20 回復 有任何疑惑可以回復我~
#4

慕函數3031282 回復 小烽工作室3358476

不是啊,兄弟,這段代碼怎么放都沒影響啊==
2018-12-20 回復 有任何疑惑可以回復我~
#5

小烽工作室3358476

哈哈,好像是這么一回事,因為您把n=n+1放前面了,所以,你那個也是沒有問題的。
2018-12-20 回復 有任何疑惑可以回復我~
查看2條回復

sum = 0

x = 1

n = 1

while True:

? ? if n > 20 :

? ? ? ? break

? ? sum = sum + x

? ? x = x * 2

? ? n = n + 1

print sum

這個才是正確的。

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

舉報

0/150
提交
取消
初識Python
  • 參與學習       758392    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

我這個思路有問題嗎?為什么會多1 呢?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號