iT邦幫忙

0

Python函式與迴圈解題疑惑

  • 分享至 

  • xImage

我是程式語言新手,在練習解題的時候,發現我得到的答案跟正確答案一致,卻和Google Colab跑出來的結果不同。希望有人能告訴我究竟是哪裡出錯了。

考題:有一函式 func 如下,求 func(7, 4)的回傳值。

def func(a, b):
    s = 0
    if a > b:
        t = a
        a = b
        b = t
    for i in range (0, a):
        for j in range(i, b):
            s += j
        return s # 這一行是我為了看程式運行的結果而添加的。
    print(s) # 這一行是我為了看程式運行的結果而添加的。

func(7, 4)

我自己得到的答案是80,與解答一致。
但是在Google Colab運行的結果是21。
麻煩哪位好心人幫我解惑一下,謝謝。

return 要跟第一層的for loop對齊,不然實際上你只跑了i=0的結果
redchaos iT邦新手 5 級 ‧ 2022-02-09 21:11:19 檢舉
謝謝指點。看了您的回答,再去找找網路上的資料才知道,原來return的位置會影響迴圈執行。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
海綿寶寶
iT邦大神 1 級 ‧ 2022-02-09 15:26:58
最佳解答

return s 寫錯地方
以致迴圈只跑一次(1+2+3+4+5+6=21)

應該提到迴圈「外面」
大概像這樣

for i ...
    for j ...
        ...
        s += j
return s

另外囉嗦一句
下次要問問題時
https://ithelp.ithome.com.tw/upload/images/20220209/200017873pe8R7GJ8G.png

尼克 iT邦大師 1 級 ‧ 2022-02-09 16:31:43 檢舉

這沒對齊,導致運算值錯誤。

redchaos iT邦新手 5 級 ‧ 2022-02-09 21:12:37 檢舉

謝謝海綿寶寶大神跟尼克兩位的指點。我已經重新編輯文章,以後會記得用正規的方法發問,謝謝。

我要發表回答

立即登入回答