while 布林值: 若布林值為True, 執行命令 回到上方,做下一次的回圈判斷 # 直到布林值為false才會離開迴圈 n = 1 while n < 5: print("變數n的資料是:", n) n+=1 for 變數名稱 in 列表或字串: 將列表中的項目或字串中的字元 逐一取出、逐一處理 for x in [4,1,2]: print("逐一取得列表中的資料", x) for c in "Hello": print("逐一取得字串中的字元", c) # 製造出連續數字的列表 for 變數名稱 in range(3): 相當於 for 變數名稱 in [0,1,2]: # 包含開頭不包含結束 for 變數名稱 in range(3,6): 相當於 for 變數名稱 in [3,4,5]: # while迴圈 # 這個不要執行,是無限迴圈,電腦會當機=..= n = 1 while True: print(n) n+=1 n = 1 while n>> 1 >>> 2 >>> 3 # 1+2+3+...+10 n = 1 sum = 0 while n >> 3 >>> 5 >>> 1 for x in "Hello": print(x) >>> H >>> e >>> l >>> l >>> o for x in range(5): print(x) >>> 0 >>> 1 >>> 2 >>> 3 >>> 4 for x in range(5,10): print(x) >>> 5 >>> 6 >>> 7 >>> 8 >>> 9 # 1+2+3...+10 for x in range(1,11): sum = sum + x print(sum)
去除實際的情境,只談語法。sum=0 是指有一個 sum 變數,資料是 0。 把實際的情境加進來,為什麼要把 sum 的資料設定成 0,因為要讓他從 0 開始累加。 所以兩種說法都沒問題,只是有沒有把實際的情境講出來。 意思是把 sum 變數中的資料拿出來,加上 n 變數中的資料,再覆蓋回 sum 變數裡面。 你可以回頭複習一下關於資料和變數的操作細節,應該會有點幫助 :)
抱歉四年後的現在才來問問題,因為最近才開始學寫程式~發現這個很詳細的好頻道真的是太感激了~ 這邊想請教,如果把sum = sum + n 和 n += 1順序交換,變成: n += 1 sum = sum + n的話, 結果會變成65,因為我不懂為什麼,所以用最笨的方式一條一條列出來將數值代入,為節省時間,我把程式改為while n
彭彭老師您好,最近看您的影片自學,受益良多。對影片5:52的範例有個小問題,for 變數 in range(3)相當於for 變數 in [0,1,2],我試著輸入for 變數 in (0,1,2)也可以順利得到一樣的結果。老師在第二堂課有提到他們分別是可動列表(List)與固定列表(Tuple),想請問在這裡是可通用的嗎,還是意義上有所不同?
老師好,請教一個問題: data=[1,2,3,4,5] x=len(data) for i in range(x): if data[i] % 2 == 0: print(data[i]) 測試結果符合預期將2,4 列印出來,但我想將串列中的偶數去除,只剩下奇數部分,便將for 回圈內的判斷式下加入data.pop(i)的指令,將偶數從串列中取出。但在執行時卻產生Index Error:list index out of range 的錯誤訊息。我想是將串列中的索引指標移除產生的後遺症,所以我就又在迴圈內重新計算一次data串列的長度值,下了x=len(data)的指令, 想說在符合if判斷條件下移除掉偶數後,重新給變數x新的串列長度值,應該就可以避免上述的錯誤訊息,但~~~~~~結果還是Index Error:list index out of range!!!! 天哪!!!! 怎麼會這樣呢 ? 拜託老師,可以幫我看看嗎? 我覺得這個將串列中的元素移除的動作非常重要,因為寫程式時,就是資料的讀取,寫入與刪除等動作一直在重複,我的教科書上給我的說明是利用pop指令可將串列中索引值的元素取出並刪除。但我為何在執行時卻產生錯誤訊息呢? 麻煩老師有空時幫我解惑,感謝!!
你可以先複製一份列表,利用複製的列表來寫迴圈,刪除時用 remove(資料) 的方法來刪除原來列表中的資料,就不會影響迴圈的運作,例如: data=[1,2,3,4,5] copyData=data.copy() x=len(copyData) for i in range(x): if copyData[i] % 2 == 0: data.remove(copyData[i]) print(data)
@@cwpeng-course 謝謝老師,好奇地將你的程式碼稍稍做個變動,如下: data=[1,2,3,4,5] copyData=data.copy() x=len(copyData) for i in range(x): if copyData[i] % 2 == 0: data.remove(copyData[i]) print("i",i) #data.pop(i) print("copydata",copyData) print("data",data) 然後執行remove,和 pop 兩種指令的結果,並將 索引指標 i 也列印出來,然後發現 兩種指令的不同之處,我發現用pop 雖然不會再產生 index out of range的錯誤訊息,但結果卻是不對的,最終程式是列印出[1,3,4] ,因為第一次刪除偶數2後,串列的長度有所變動了,所以在執行下一個偶數判斷並且刪除動作時,會將5 給刪除掉,就產生了錯誤的結果。 嗯~~~~老師的方法很有用,記起來,可以運用到別的地方。謝謝!!
剛剛google了一下~ 有個列表的方式可以 「將等差級數列表出來」 a=list(range(start,ent,step) 同一個問題 1+3+5+...+19=? 欲使用 for 迴圈 sum=0 a=list(range(1,20,2)) for x in a: sum=sum+x print(sum)
老師想請問我這樣的理解是不是正確的: print在縮排內的話會顯示出整個迴圈的過程。(我有將print打在縮排內,終端機顯示的結果就是:1,3,6..55 如果沒有縮排的話則是直接顯示最後的迴圈結果:55 有個問題想請教老師,我在一開始自己嘗試時,我少打了n+=1 所以程式變成這樣: n=1 sum=0 while n
彭彭老师您好,请教一下以下问题: sum=0 for x in range(1,11): sum=sum+x print(sum) 与下面程式不同的地方是print的缩进; sum=0 for x in range(1,11): sum=sum+x print(sum) 但第一个程式出来的结果是: 1 3 6 10 15 21 28 36 45 55 请问这是为什么?
老師我想做一個輸入數字(後以a代替)會讓他取0~a的偶數做加起來 像輸5是2+4=6 我的程式如下 a=int(input(‘a=‘)) sum=0 For b in range(a+1) while b%2==0: sum+=b print(sum) 執行後 會出現a=然後輸入完就沒下文了 求解 謝謝
請問老師: 在while的時候,print為何不用寫在while迴圈裡面呢? 而在for的時候,卻要把print寫進for迴圈裡面啊? 我自己是有試過在for迴圈時把print寫在外面,結果電腦出現"IndentationError: expected an indented block".... while n
請問澎澎老師: sum=0 for x in range(10,100): sum=sum+x x+=1 print(sum) 和 n=1 sum=0 for x in range(10,100): sum=sum+n n+=1 print(sum) 這兩題差異在哪裏,若range改為range(1,10) 結果會一樣都是45. 謝謝老師!
謝謝 彭彭老師!! 現在自學python 一直對sum code 有疑惑 您的影片 整個讓我了解清楚了!!!! 超感謝!!! 謝謝你讓我在自學路上 減輕困難!! 我會繼續努力!
加油哦,看到你的心路分享我覺得很棒 :) 我也會一起努力的 !
彭彭老師是不是很值得一座諾貝爾和平獎
作者影片的導引對新手的觀念建立很有效,簡報簡單扼要,讓學習者目光能馬上投注在大大的簡報內容上。
謝謝作者的製作。
不會,謝謝你的回饋 :)
非常感谢 彭彭得课程。原来大学得时候学过编程,不过早就着饭吃了。彭彭得一点点循序渐进得教程,让我这个小白又重拾信心。
谢谢回馈,很高兴对你有帮助 :)
while 布林值:
若布林值為True, 執行命令
回到上方,做下一次的回圈判斷
# 直到布林值為false才會離開迴圈
n = 1
while n < 5:
print("變數n的資料是:", n)
n+=1
for 變數名稱 in 列表或字串:
將列表中的項目或字串中的字元
逐一取出、逐一處理
for x in [4,1,2]:
print("逐一取得列表中的資料", x)
for c in "Hello":
print("逐一取得字串中的字元", c)
# 製造出連續數字的列表
for 變數名稱 in range(3):
相當於
for 變數名稱 in [0,1,2]:
# 包含開頭不包含結束
for 變數名稱 in range(3,6):
相當於
for 變數名稱 in [3,4,5]:
# while迴圈
# 這個不要執行,是無限迴圈,電腦會當機=..=
n = 1
while True:
print(n)
n+=1
n = 1
while n>> 1
>>> 2
>>> 3
# 1+2+3+...+10
n = 1
sum = 0
while n >> 3
>>> 5
>>> 1
for x in "Hello":
print(x)
>>> H
>>> e
>>> l
>>> l
>>> o
for x in range(5):
print(x)
>>> 0
>>> 1
>>> 2
>>> 3
>>> 4
for x in range(5,10):
print(x)
>>> 5
>>> 6
>>> 7
>>> 8
>>> 9
# 1+2+3...+10
for x in range(1,11):
sum = sum + x
print(sum)
感謝你的紀錄 :)
看了很多留言都說老師的教學淺顯易懂 像我這樣的新手能遇上大師真的太有榮幸了 我會繼續練習 往更深的程式知識邁進😃
哈哈哈,謝謝你的回饋哪 :) 加油加油 ~~~~
老師想問題外話
無限迴圈跑的速度
是取決於電腦效能然後用最高速度運行嘛?
看老師程式大概是每秒列印1萬個數值
順帶一提看其他人留言中間突然覺得sum變難
是因為老師把print(sum)寫到了"""外面"""
11:37老師有說大家要注意這個縮排喔
呼應影片開頭也有說while在布林值true以前都不會出來那也就不會把print(sum)印出來
覺得疑惑的人建議可以把print(sum)放到裡面
就會跑出
1
3
6
10
15
21
28
36
45
55(註:這時候n布林值到達10所以跳出這組while,如果你把print(sum)寫外面那就會像影片一樣印出55)
就可以看到每次的計算過程
對哦,取決於電腦效能和當前的運作狀況,以最快速度運行。也謝謝你的分享,並協助提醒大家,相信對大家都很有幫助 :)
讲得真的很不错,说实在的,我是完全从零开始学,都能大致弄明白,当然有的地方可能当时不太清楚,但是下来仔细想想也还能弄清楚 。谢谢老师!
谢谢你的回馈,很高兴对你有帮助 :)
教學的非常有品質 讚!
謝謝哪 :)
謝謝老師的無私分享~
如果每堂課最後都有出練習題就更好了XDDDD
謝謝你的回饋和建議,不過每堂課出練習這事大概有點困難 XDDD
感謝老師,自學python的路上有您真好!
我也是欸在學校聽還是有點不懂
謝謝回饋,一起加油嘍 :)
感謝彭彭老師的無私教學🙏🏻🙏🏻
謝謝老師清楚的教學!好喜歡這種短短的教學影片
謝謝你的回饋哪 :)
謝謝彭彭老師,很完整的新手入門課程,目前花了10個小時在打底前八章,慢工出細活,感謝。學完基礎之後,付費版有需要的話會再支持!
謝謝你的回饋,有幫上你的忙我覺得很棒 :)
謝謝老師,這部影片對我幫助很大。
太好了 :)
非常感恩,這教學超級詳細的,每次卡在這就想放棄,還好有老師解答。
很高興對你有幫助呦 ~~~~
概念講的很詳細,尤其資料怎麼跑怎麼給的觀念都有提到.幫助很大,謝謝彭老師!
謝謝你的回饋 :)
00:00介紹
while迴圈:
00:16基本語法
while 布林值:
▏ 若布林值為True,執行命令
▏ 回到上方,做下一次的迴圈判斷
01:51程式示範
n=1
while n
感謝紀錄 :)
感謝你~講得非常清楚~初學者都可以輕鬆學習
謝謝你的回饋 :)
請問彭彭老師
一開始的sum=0 是指 有一個SUM變數=0的意思嘛!?
還是指 SUM從0開始加?
而迴圈裏面
sum=sum+n 我懂N=0.1.2.3.4.5.....
者裡面的SUM 又是甚麼意思呢!?
搞得我好混亂啊!?
先感謝老師的解答
去除實際的情境,只談語法。sum=0 是指有一個 sum 變數,資料是 0。
把實際的情境加進來,為什麼要把 sum 的資料設定成 0,因為要讓他從 0 開始累加。
所以兩種說法都沒問題,只是有沒有把實際的情境講出來。
意思是把 sum 變數中的資料拿出來,加上 n 變數中的資料,再覆蓋回 sum 變數裡面。
你可以回頭複習一下關於資料和變數的操作細節,應該會有點幫助 :)
@@cwpeng-course 謝謝老師 :) 真的感謝 我懂了
抱歉四年後的現在才來問問題,因為最近才開始學寫程式~發現這個很詳細的好頻道真的是太感激了~
這邊想請教,如果把sum = sum + n 和 n += 1順序交換,變成:
n += 1
sum = sum + n的話,
結果會變成65,因為我不懂為什麼,所以用最笨的方式一條一條列出來將數值代入,為節省時間,我把程式改為while n
應該是因為程式語言是一行一行執行的
在第五步時while迴圈已經先判斷n是否大於等於5,而因為n剛好為5所以再繼續執行n += 1的步驟及後續sum = sum + n,所以會導致最後的sum = 20
@@baga487 但是第五步 n += 1的時候已經是 6 = 5+1了耶,不是應該以運算後的sum(6)為準嗎?所以在這個部分n=6,大於5,不是在這邊就會跳出迴圈嗎? sum=20的話便是帶入了n=6
不過謝謝你回答~~~本來以為好多年前的影片可能不會有人理我~謝謝你~
感謝 @ting wei 的說明 :)
回圈內的程式要執行完畢,回到迴圈上方重新判斷,才有機會跳出去。
謝謝老師,謝謝@ting wei ❤️
自學者在此感恩彭彭老師
也謝謝你的回饋呦 :)
老師您好:
想請問課程上舉例的while
當print變成內部縮排的話,該怎麼去理解這段程式的意思呢?
是否變成:每個a都加一後,都要再印出上一個迴圈留下的sum,然後print出每一次的結果嗎?
另外,如何知道什麼情況下print需要縮牌或不需要呢?
謝謝老師解答
print 縮排,意思就是放在迴圈裡面,每一圈都會印出東西。不縮排就是在外面,會等迴圈都跑完了才印出東西 ~
彭彭的課程 謝謝老師的解答 很清楚~
n=1
sum=0
while n
沒問題哦,很棒的分析 :)
感謝老師幫助我考試🤓
XDDDDD
感謝彭彭老師的教學.........非常 清晰 明白
謝謝呦 :)
感謝老師! 每天都多學一點!
嗯嗯嗯!
謝謝老師,獲益良多
不客氣,謝謝回饋 :)
彭彭老師您好:
學list-tuple.py列表的時候有提到 [0:2] 表示列表的資料包含數字1,2不包含第三是用:符號, 為什麼range的是(5,10)用逗號呢?
他們是不同的語法,沒有關聯性,所以只是個規矩。
[0:2] 是取得列表中的一部分,range(5,10) 是後面接著會提到的函式中的參數 ~
@@cwpeng-course 謝謝老師解答
# while 迴圈
# 無窮迴圈(不建議) 直接寫一個布林值
'''
n=1
while True:
print(n)
n+=1
'''
# 1+2+3+...+10 等差級數加法
# 注意縮排!迴圈只在縮排裡面打轉
n=1
sum=0 # 紀錄累加的結果
while n
感謝你的紀錄 :)
十分感謝,自己買書來看比不上老師的教導?請問老師台大開課Python也是同樣的內容嗎
謝謝你的回饋 :)
不過我沒有在台大開課 Python 哦 XD
深入浅出,恰到好处。感谢!!
谢谢你!
彭彭老师您好,我寫了一個代碼如下:
a = ["2t32","2t30","3t30","4T90","4T40"]
b = a
i = 0
c = str(a)
#自定義一個函數,其實是把各項求平方:
def bb(x):
b = int(x[0:1])
c = b*b
return c
#然後,註意哦,while函數開始了
while i < len(a):
b[i] = bb(a[i])
i+=1
開始跑機
print(a) 得到 [4, 4, 9, 16, 16]
print(b) 得到 [4, 4, 9, 16, 16]
print(c) 得到 ['2t32', '2t30', '3t30', '4T90', '4T40']
在這裏,print(a)
得到 [4, 4, 9, 16, 16]
而不是 ['2t32', '2t30', '3t30', '4T90', '4T40']
為什麽參數a輸出結果會和參數b一樣?
我的語法認知裏,while函數得到的結果應該是b的各項變成了a的平方,而a是不變的。
可是系統給我的答案是,隨著while循環,a也跟著b一起變了,求教?thanks
b=a 這個命令不會真實的複製列表中的資料,而是把同一個列表的參考位址指定給 b 這個變數,所以後續的操作,更新 b 列表中的資料,其實就會直接影響 a 的資料 ( 因為根本是同一個 )
@@cwpeng-course thanks!
彭彭老師您好,最近看您的影片自學,受益良多。對影片5:52的範例有個小問題,for 變數 in range(3)相當於for 變數 in [0,1,2],我試著輸入for 變數 in (0,1,2)也可以順利得到一樣的結果。老師在第二堂課有提到他們分別是可動列表(List)與固定列表(Tuple),想請問在這裡是可通用的嗎,還是意義上有所不同?
雖然 List 和 Tuple 有細節的差異,但在 for 迴圈這裡是可通用的。
謝謝彭彭老師優質教學
不客氣哦,謝謝你的回饋 :)
12:42 所以 開始執行while迴圈之後, 就不會再往上看 sum=0 的部分, 繼續由while往下走 對嗎?
是的。
@@cwpeng-course
老師您好,
我想釐清一下我的想法,
1.我認為在開始執行 while迴圈之後,還是會往上看到sum,只是這時候的sum已經變成sum+n 了
2.我認為在開始執行for迴圈之後,就不會在往上看到sum=0
#while 迴圈
每執行一次while迴圈後,就會再回到前面檢視是否符合while的條件,直到不符合-->結束,離開迴圈
#for 迴圈
直到for裡面的範圍執行完,才會離開迴圏
請問老師,我的邏輯正確嗎?
@@tinachen8663 如果你while的 "往上看到sum" 是指sum=0 的話,那就不是 sum不會重複宣告sum=0
謝謝🙏
不客氣 :)
老師您好:
我不太懂在while迴圈底下
sum=sum+n
n+=1
這樣為什麼可以累加?
如果可以的話能告訴我這一串到底在幹嘛嗎QQ始終想不出來QQ
total=n=0
while(n
一行指令一行指令按照流程去想,初學的話可以寫出來,但不要跳著想:
n 一開始是 0,total 也是 0,接著進入迴圈。
第一圈:n < 10 是 True,執行迴圈中第一行 n+=1,n 變成 1。執行第二行,把 1 加入 total 裡面。
第二圈:n < 10 是 True,執行迴圈中第一行 n+=1,n 變成 2。執行第二行,把 2 加入 total 裡面。
接著第三圈 .... 第四圈 .... 一直到第十圈為止 (n < 10 變 False)
最後就會把 1+2+...+10 都加進 total 裡面,完成運算。
對於我這個新手,非常好上手
很有幫助
while n
試試看以下程式碼,把數字一個一個接到列表後方:
k=[]
n=0
while n
你好
i=1
while i
你好,因為print(i)在程式的最下方,您的條件是
感謝 @王帷守 的說明,非常清楚 :)
老師您好 可否請問若寫成 for x in range(1,11):
x += x
會變成 2 4 6 8 10 12 14 16 18 20 請問是因為甚麼原因呢?
應該是因為
x += x 是 x=x+x的意思
x in range(1,11) 使x為[1,2,3,....,10]的列表
因此輸出會變成
1+1,2+2,3+3,....,10+10
=2 4 6 8 10 ... 20
by從第一部"Python 入門教學課程"影片開始看的me
感謝老師!
感謝 @Robert Lee 的說明,非常清楚 :)
可以一次選取要註解的範圍,然後按ctrl+?,就會全部註解你選取的範圍了
感謝你的分享哦 :)
感謝分享😊
Mac是"command+?"
謝謝老師的無私分享
不會呦 :)
for x in ["升職","加薪","當上總經理","出任CEO","迎娶白富美","走向人生巔峰"]:
print("認真工作",x)
好玩XD
XDDDDD
老師你好,請問 n+=1 是代表什麼意思?
搞不懂喔 ! n+=2 運出來的很奇怪,看不出關係。
可不可以用while來作解答?
先感謝老師回答 !
因為我用 1+2+3+...+10這個例子裡試,n+=1 得出來是55 ; n+=2得出來卻是25
n+=1 就是把 n 的數字加一,n+=2 就是加二。
使用 n+=2 相當於是計算 1+3+5+7+9 的結果 ~
@@cwpeng-course 感謝老師 明白了
您好,請問為什麼要寫sum=0?
這邊的sum應該只是一個變數(跟x有點類似),跟excel中"sum代表公式: 加總"無關吧
跟 excel 中的無關。
我們會先把這個變數中的資料設定成 0,才能夠繼續累加。如果沒有設定,資料會是 undefined,做累加時會出錯。
老師好,有一個關於LOOP的問題想請教一下,CODE如下:
x = 1
while x
簡單來說,Python 的 Global、Local 只看函式這個結構 ( Function Scope ),迴圈不會產生獨立的名稱空間,所以在迴圈裡面其實就是直接使用 Global 的變數了。
感謝老師!
老師您好,在這個程式中,為什麼print(n) 要在n+=1前一行,而兩行對調為什麼會印出不同結果?
n=1
while n
若是按照你的程式碼會得出1,2,3,4,是因為先print出n才做n+1,而不是老師原本寫的n+1完再print出n。
感謝 @阿飛 的回應,確實是如此哦,程式按照順序執行,順序不同會有些差異的 ~
老師好,請教一個問題:
data=[1,2,3,4,5]
x=len(data)
for i in range(x):
if data[i] % 2 == 0:
print(data[i])
測試結果符合預期將2,4 列印出來,但我想將串列中的偶數去除,只剩下奇數部分,便將for 回圈內的判斷式下加入data.pop(i)的指令,將偶數從串列中取出。但在執行時卻產生Index Error:list index out of range 的錯誤訊息。我想是將串列中的索引指標移除產生的後遺症,所以我就又在迴圈內重新計算一次data串列的長度值,下了x=len(data)的指令, 想說在符合if判斷條件下移除掉偶數後,重新給變數x新的串列長度值,應該就可以避免上述的錯誤訊息,但~~~~~~結果還是Index Error:list index out of range!!!! 天哪!!!! 怎麼會這樣呢 ? 拜託老師,可以幫我看看嗎? 我覺得這個將串列中的元素移除的動作非常重要,因為寫程式時,就是資料的讀取,寫入與刪除等動作一直在重複,我的教科書上給我的說明是利用pop指令可將串列中索引值的元素取出並刪除。但我為何在執行時卻產生錯誤訊息呢? 麻煩老師有空時幫我解惑,感謝!!
你可以先複製一份列表,利用複製的列表來寫迴圈,刪除時用 remove(資料) 的方法來刪除原來列表中的資料,就不會影響迴圈的運作,例如:
data=[1,2,3,4,5]
copyData=data.copy()
x=len(copyData)
for i in range(x):
if copyData[i] % 2 == 0:
data.remove(copyData[i])
print(data)
@@cwpeng-course 謝謝老師,好奇地將你的程式碼稍稍做個變動,如下:
data=[1,2,3,4,5]
copyData=data.copy()
x=len(copyData)
for i in range(x):
if copyData[i] % 2 == 0:
data.remove(copyData[i])
print("i",i)
#data.pop(i)
print("copydata",copyData)
print("data",data)
然後執行remove,和 pop 兩種指令的結果,並將 索引指標 i 也列印出來,然後發現
兩種指令的不同之處,我發現用pop 雖然不會再產生 index out of range的錯誤訊息,但結果卻是不對的,最終程式是列印出[1,3,4] ,因為第一次刪除偶數2後,串列的長度有所變動了,所以在執行下一個偶數判斷並且刪除動作時,會將5 給刪除掉,就產生了錯誤的結果。 嗯~~~~老師的方法很有用,記起來,可以運用到別的地方。謝謝!!
淺顯易懂清楚,教學內容很棒,希望有Django的教學,我一定會加入會員!
謝謝回饋,好的,也謝謝你的建議 :)
老師你好請問一下
我有一個for迴圈是錯誤的
for x in range(2,-1)
print(x)
這個x印不出來
目前查到range(start,stop,step)
上面的range(2,-1)=range(2,-1,1)也可以寫這樣,step預設為1
我看help上寫range(i, j) 產生 i, i+1, i+2, ... j-1
照上面的解釋,上面的程式應該會印出2
為什麼會印不出來
還是因為迴圈條件不成立
所以這個2也不會印出來
這個程式碼原本是印出2,1,0
我只是拿掉step=-1時想到這個問題
range(2,-1) 會得到一個空的列表,可以在程式中寫 print(list(range(2,-1))) 試試看。
因為是空的列表所以迴圈就不會執行。
說明上不一定寫得非常仔細,我們還是以程式實際運作的結果為主。
首先謝謝老師講解讓新手簡單了解上手,想請老師講解while 迴圈裡面有while的例題,還有for裡面有for的例題,
例如:九九乘法表與三角形~倒三角形~菱形的解題
老人新手查網路上的答案還是不是很明白內迴圈的解釋
希望老師可以出一個影片解析這些題型,先謝謝老師了
謝謝你的回饋和建議,我會在之後的教學中多做這方面的說明 :)
@@cwpeng-course 感謝老師百忙之中抽空回答,希望老師做一專題,專門出題讓大家練習,也解惑題目答案或者思考方向,就算要訂閱付費也沒關係!希望老師能每天出1~2題讓大家跟著學習進步!先謝謝老師!
彭彭老師你好,剛看過了你教For Loop 了。
想問一下所以for 後面的是沒有意思嗎?
我剛試了把"X" 改成 "ab"
一樣可以跑,所以在for 後面,我放什麼都可以?
對,那只是一個名稱,只要你 for 裡面的程式持續沿用就可以 ~
老師另外在問,,R軟體老師有提到雙層for迴圈,python也有嗎?
老師也有提到向量矩陣陣列的東西,在python 上呢?
有哦,你可以在 Python 中寫雙層甚至更多層的迴圈。
沒有叫做向量矩陣的東西,不過可以用兩層的列表來完成一樣的結構。
謝謝老師的教學 但有點不懂sum變數是表示所有數字的總和嗎?
sum 變數是我們建立的任意變數,我們心中的打算是用這個變數來記錄數字總和沒錯,但那因為我們的迴圈程序做了這件事情,並不是 sum 本身就有那個效果。
請教一下
直接指印出總和時為輸入
print(sum)
可是前面加上字串就要變成
print('1+2+...+10=',sum) #sum 的前面要加逗號
還有我自己試了另一種,前後都有字串的,就要這樣
print('1+2+...+10=',sum,'as the answer') #sum 的前後都要加逗號
可以稍微解釋一下邏輯嗎
謝謝
print() 是一個函式,print() 函式可以放入很多參數,參數之間用逗號隔開。
所以可以放兩個參數,或三個參數,都是可以接受的。
你可以往後看看關於函式的基本教學,對於理解這些程式會有幫助 :)
老師你好我想請問
n=1
sum=0 # 記錄累加的結果
while n
你的 print(sum) 應該是有做了縮排,就會算在迴圈內部運作,每一圈都會執行。
@@cwpeng-course 了解,謝謝老師,我再試試
請問如果想要運算等差 1+3+5+7+9+11+13+15+17+19=
用while迴圈是寫成
n=1
sum=0
while n
剛剛google了一下~
有個列表的方式可以 「將等差級數列表出來」
a=list(range(start,ent,step)
同一個問題 1+3+5+...+19=? 欲使用 for 迴圈
sum=0
a=list(range(1,20,2))
for x in a:
sum=sum+x
print(sum)
自己解決很不錯哦,讚讚 :)
老師想請問我這樣的理解是不是正確的:
print在縮排內的話會顯示出整個迴圈的過程。(我有將print打在縮排內,終端機顯示的結果就是:1,3,6..55
如果沒有縮排的話則是直接顯示最後的迴圈結果:55
有個問題想請教老師,我在一開始自己嘗試時,我少打了n+=1
所以程式變成這樣:
n=1
sum=0
while n
沒縮排顯示不出答案的原因就是因為while迴圈內沒有一個正確的答案,迴圈內會一直無限加
有縮排則會一直無限加上去並且給你看整個增加的過程
這是我個人理解,有誤請指正(本人這幾天也才剛開始入門彭老師的課程)
感謝 @痞的潘 的說明,很清楚哦 :)
想問一下老師,for loop的條件只可以用於列表或者字串上嗎? 還可以在用在其他地方嗎?
一般是用在列表和字串,再深入一點它叫做可以用在 iterable 的物件上
11:35 要注意縮排 有縮排是在迴圈內部
沒有縮排是在迴圈loop 外部!!!
是,縮排很重要 ~
超級謝謝老師!!
:)))
不好意思..新手想問一下 : 1. 12:16 這裡sum我改成用x,執行後有相同結果,可以請問差異為何呢?
sum是一個變數名稱,既然是名稱,一個東西改的名字取決於你想要讓他叫甚麼名字,目的在於方便閱讀
@@alistairwu4103 哦哦哦 所以其實我換成x它也算是一個“變數名稱“叫x,是這樣理解嗎.....不好意思😅
感謝 @alistair Wu 的回應,正是如此哦 ~
講解得很清楚!!!
謝謝 :)
謝謝老師,真的感謝您
不會呦,謝謝你的回饋 :)
老師您好,我跟著您的步驟執行
在while迴圈中1+2+3+...+10
一直出現第6行 sum=sum+n 有問題,不知道為什麼?
D:\python-training>python loop-basic.py
Traceback (most recent call last):
File "loop-basic.py", line 6, in
sum=sum+n
TypeError: unsupported operand type(s) for +: 'builtin_function_or_method' and 'int'
可能是迴圈的前面少了 sum=0 這個初始動作
若不是的話,就需要完整程式碼來判斷哦 ~~~
感謝老師,找到問題了,我的sum,誤打成 snm
老師請問我在print(字串)的時候終端機可以正常顯示中文
可是變成tuple的時候中文就會解碼錯誤
可以怎麼解決
試過網路上用unicode轉成其他語言也都失敗
需要你把程式碼貼上來或者是錯誤訊息,才有辦法進一步判斷哦 ~
您好,問個比較怪的問題 sum=0必須打在for迴圈前面才會是1~10的加總嗎? 如果把sum=0 打在sum=sum+x的上面 為何跑出結果會是10? (這樣寫是不是沒有意義? 自己亂試,但想不懂,麻煩解答 謝謝^^)
寫在 for 迴圈前面,只在進入迴圈前,執行一次,在一開始的時候把 sum 的資料設定為 0。
寫在 for 迴圈的裡面,sum=sum+x 的上面,迴圈每次在轉的時候,都會執行,每次都重新把資料歸 0,最後只記錄到最後一個加上去的 10。
為什麼最後一個不會歸零?
後面會再執行 sum=sum+x,就加 10 上去嘍。
就是說最後一個10 不會再回傳到迴圈裡 所以不會歸零的意思嗎?
是哦 ~~
不好意思,先感謝彭彭老師教學辛苦。請問range()你說是指方法,那它算不算是函數。
不會呦,謝謝你 :)
算哦,他是一個函式沒錯 ~ 方法可能是我一時沒仔細注意用詞,定義上應該是一個函式 ~
彭彭的課程 感謝您,因為自己也有請教其他人,突然困惑。只要是有刮號的應感都算函數
2021/05/23
# while 迴圈
# 1+2+3+...+10
n=1
sum = 0 #用來記錄累加的結果
while n
感謝紀錄 ~
彭彭老师您好,请教一下以下问题:
sum=0
for x in range(1,11):
sum=sum+x
print(sum)
与下面程式不同的地方是print的缩进;
sum=0
for x in range(1,11):
sum=sum+x
print(sum)
但第一个程式出来的结果是:
1
3
6
10
15
21
28
36
45
55
请问这是为什么?
第一个程式是在FOR的回环里,所以+1+2....+10的结果全部显示出来了.第二个打印结果是回环执行完毕后只显示最后结果.
感谢 @xiao xiao 的回应 :)
彭彭老師有個問題想請教
w=0
for x in range(1,100):
w=sum+x
print(w) #就會0+0 、0+1、0+2、0+99循環結束
print(w)
想請問為何最後一個print(w)出來的結果是99 而不是累加的結果呢
按照你的程式,要寫 w=w+x 哦,才會持續累加。
老师您好在while里面的n+=1是否指代数字之间绝对值的关系?如果累加变成1-2+3-4+5....+99这样 无论正负是否程式最后还是n+=1?谢谢!
对哦,还是会写 n+=1,因为这个只是用来依序取得 1, 2, 3, ..., 99 的每个数字。如果要加减交错,我们会多一个判断式,视情况使用 sum=sum+n 或 sum=sum-n。
@@cwpeng-course 明白了, 谢谢老师~!
老師我想做一個輸入數字(後以a代替)會讓他取0~a的偶數做加起來 像輸5是2+4=6 我的程式如下
a=int(input(‘a=‘))
sum=0
For b in range(a+1)
while b%2==0:
sum+=b
print(sum)
執行後 會出現a=然後輸入完就沒下文了
求解 謝謝
for 裡面那個要改用 if,你用 while 會導致程式跑不出迴圈哦 ~
請問老師 我把print的縮排放在不同地方 為什麼會變成等差顯示
sum=0
for x in range(1,11):
sum=sum+x
print(sum)
3
6
10
15
21
28
36
45
55
因為print在縮排內,所以變成每次迴圈運算完sum=sum+1,都會印出sum,第一次迴圈得到的sum=0+1,所以輸出1;第二次sum=1+2,所以輸出3;第三次sum=3+3,輸出6,以此類推。
@@sindianlin 謝謝你
感謝 @林信典 回應哦 :)
彭彭老師,您好,我想請問下:
n=0
for x in [0,1,2,3]:
if x%2==0:
continue
print(x)
n+=1
print("the last n is: ", n)
為什麼這個出來的結果是:the last n is: 2
邏輯感覺自己想的有點亂
0 1 2 3 四個數字中,有兩個數字會被 2 整除,執行 continue 跳過後面的 n+=1。
所以最後 n 只加了兩次,結果印出來是 2
@@cwpeng-course 可以再問下,他為什麼沒有執行print(x)呢
@@mandywoo1266 應該是因為print(x)屬於if x%2==0為True時,所要執行的結果,但因執行continue,所以程式碼print(x)就被跳過了。
如果print(x)少一個縮排就會執行了
@@t7788621 感謝感謝
感謝彭彭老師,也向老師請教
程式碼中sum=0是要告訴電腦sum是新變數一開始等於0?
但sum本身不是對於電腦來說就是總和,為什麼一開始還要告訴他sum=0,感謝
可以看一下留言喔,有蠻多相關討論的
@@jacklee5214 感謝已解惑!
感謝 @Jack Lee 提醒大家 :)
老師 我寫了一個東西
for x in "Hello":
print(x[0:4])
我以為會印出
H
e
l
l
結果根本沒變 想問為什麼呢?
因為他是從0開始算字數 H(0) e(1) l(2) l(3) o(4) 所以還是一樣印出
H
e
l
l
o
@@蔡汶芸-m6y 但不是不包含結尾嗎 而且改成0:3或0:2結果都是一樣的
迴圈會把每個字元抓出來,每次都只印一個字元。
如果是你提的那個想法,程式可能像這樣:
test="Hello"
print(test[0:4])
就不需要迴圈了
@@cwpeng-course 謝謝老師!
请问一下,为什示范用while 做sum时候,只展示出最终1+2+3+...+10的答案呢?我这样打会出现1,3,6...慢慢叠加到10的答案,虽然答案也会有55但会有加的过程,我去理解的时候也感觉没问题啊
ok我懂了,我把print 也加进Loop了
有解决就好 :)
老師您好,有個問題想請教您:
第一:
n=1
while True:
print(n)
n+=1
在這個程式碼裡面,true是什麼意思?
我的理解是true=正確,但到底是什麼正確,畢竟前面沒有設像是n
while True的意思是不管怎麼樣都要讓程式進到while迴圈中,沒有甚麼條件;兩個==是程式中判斷左右是不是相等的,如果a和b相等,a==b就是True;一個=是把左邊變成和右邊一樣
感謝 @章景洪 的回覆,差不多就是這樣哦 :)
@@jimhung2752 感謝回覆
請問老師:
在while的時候,print為何不用寫在while迴圈裡面呢?
而在for的時候,卻要把print寫進for迴圈裡面啊?
我自己是有試過在for迴圈時把print寫在外面,結果電腦出現"IndentationError: expected an indented block"....
while n
python 相當依賴縮排來判斷結構,若是要寫一個沒有程式碼的迴圈,必須使用 pass 指令:
for x in "Hello":
pass
print(x)
請問彭彭老師
當我在編輯時
n=1
sum=0
while n
這樣算會變成2+3+4+...11=65
從頭開始看n=1->小於等於10
n+=1->這時你的1已經變成2
sum=sum+n->sum=2
n=2->小於等於10
n+=1->n=3
sum=sum+n->sum=2+3=5
.....
n=9->小於等於10
n+=1->n=10
sum=sum+n->sum=44+10=54
n=10->小於等於10
n+=1->n=11
sum=sum+n->sum=54+11=65
但老師的方式則是先加完1後再進行判定,
從頭開始看n=1->小於等於10
sum=sum+n->sum=1
n+=1->n=2
n=2->小於等於10
sum=sum+n->sum=1+2=3
n+=1->n=3
.....
n=9->小於等於10
sum=sum+n->sum=36+9=45
n+=1->n=10
n=10->小於等於10
sum=sum+n->sum=45+10=55
n+=1->n=11(迴圈到此結束)
@@cheng-yuanwu1130 謝謝高手解答
感謝 @巫承遠 的回應 :)
請問澎澎老師:
sum=0
for x in range(10,100):
sum=sum+x
x+=1
print(sum)
和
n=1
sum=0
for x in range(10,100):
sum=sum+n
n+=1
print(sum)
這兩題差異在哪裏,若range改為range(1,10)
結果會一樣都是45.
謝謝老師!
x 的值是根據 range() 決定的,使用 range(1, 10) 就和你自己初始化 n=1 並持續往上加是一樣的結果,但若使用 range(10, 100) 就不會一樣了。
幫助很大 謝謝老師
不會呦,很高興對你有幫助 :)
老師想請問播放清單有兩個入門課程,那個有加numpy的應該先看還是在這個系列後看後看
這個先看,之後再 NumPy ~
彭彭老师,您好
我输入的程序如下:
sum=0
for x in range (1,11):
sum=sum+x
print(sum)
结果却是:
1
3
6
10
15
21
28
36
45
55
能解释一下是什么原因吗?
谢谢!
你的 print(sum) 有缩排,表示在回圈的程式区块中,每次执行回圈都会印一次。
范例中的 print(sum) 没有缩排,就是在回圈外面,等回圈全部跑完,才印出最后结果。
非常感谢,彭彭老师的回复!您能否推荐一下好的关于python的教材?中文或者英文的?谢谢您!
我自己主要都是阅读官方的文件哦:
docs.python.org/3/tutorial/index.html
老師你好!
在for 回圈內 如果不小心將sum=0 打入回圈內
為什麼會print 出10呢
我也有這個問題 QQ
等於是每次迴圈重複執行時,sum 都會先被歸 0,所以最後只記錄到最後面的數字,也就是 10
程式範例
n=1
while n
老師你好 請教一下能不能範例一個寫完程式以後可以重復執行的迴圈 就是不需要按執行鍵 按個鍵就讓她重復執行 等不想執行在跳出迴圈呢?謝謝
while True:
data=input("請輸入資料")
if data=="exit":
break
老師你好,請問一下
在最後一個例子
我寫成這樣,為什麼答案一樣是55而沒有錯誤?
n=1
sum=0
for n in range(1,11):
sum=sum+n
n+=1
print(sum)
你最前面的 n=1 和後面的 n+=1 基本上都沒有產生實際的作用。
因為在迴圈的開頭,都會固定把列表中的資料覆蓋進變數 n 裡面,
所以你其他地方設定 n 的資料都沒有真正影響到 sum=sum+n 這個指令的運作。
@@cwpeng-course 原來是我指定n去抓range(1,11)了,n=1跟n+=1不影響結果,今天看老師的解答馬上就懂了,果然前幾天學到頭昏了 >
不要寫在 sum=sum+n 之前,就不會影響。
老師,看完while和for回圈后,分不清兩者之間的區別,應用場景。請老師解疑!感謝。
语法和运作的逻辑就不太一样,虽然都是回圈。
如果是根据一个列表的资料来做回圈,通常就会用 for
請問在Python中兩者可以互相替代嗎?
可以,但转换起来没这么直觉 ~
老師 請問若使用迴圈 因為現在是1+2+3+....
能不能變成4+6+8+.....100
這樣如何運行迴圈呢?
使用同樣的程序,但資料從 4 開始,必須小於等於 100,每次往上加 2。
@@cwpeng-course
彭彭老師您好,這個課程真的超棒的 加上大家的問題都相當有趣 如果變成從4往上+2直到100 這樣寫是否正確呢 算出的答案為2548@@
n=4
sum=0
while n
可以問一下打運算子都不用空格嗎?
空格也可以,有些人更喜歡有一些空格看起來比較舒服 ~
通俗易懂,支持
謝謝哪 :)
老師教的好清楚
謝謝,希望對你有幫助哦 :)
老師想請問為甚麼我打
for x in {3,5,1}:
print(x)
出來的結果是
1
3
5
為甚麼改成集合數字會由小到大的跑出來呢?
应该是因为{}吧 你可以试看换成【】
Thanks @Zi Xiang
請問老師有介紹到巢ˋ狀迴圈嗎? 對這方面比較挫折
目前的影片中應該是沒有,之後我會考慮進來看看。
老師您好,想請教這行程式是要怎麼看,我看不太懂,影片也沒教,所以請您解釋一下,謝謝
程式:
n = 0
for i in range(1,10001):
for j in range(1,10001):
n += 1
print(n)
答:100000000
麻煩您了,謝謝
兩層迴圈,外層跑 10000 次,每次都會跑內層,內層也 10000 次,總共跑 10000*10000=100000000 次,所以就最後的結果了。
@@cwpeng-course 瞭解,謝謝老師
請問for x in 字串/列表:
的x是建立新變數嗎
對哦 ~
請問老師,有辨法用for 迴圈把列表[1,3,5,7]內的資料累加成新的列表[1,4,9,16]嗎?
有辦法哦,概念上如下:
1+0**2
3+1**2
5+2**2
7+3**2
用迴圈去跑那個 0, 1, 2, 3
@@cwpeng-course 可是列表的數字如果是隨機的浮點數,有辨法嗎?目前的做法,我是把它轉成陣列,用cumsum(),再轉回去列表.
@@蔡文瑞-l2k 不確定你的題意,如果只是最一開始的要求就可以。若有額外的狀況,需要有完整定義的輸入和輸出要求,才有辦法幫你判斷可能的做法哦 ~
@@cwpeng-course 謝謝老師的回覆.小弟一開始可能沒說清楚內容,實際想問的應該是一個列表如[3,1,54,22.6,32.1],是否可用for 迴圈做累加,變成[3,4,58,80.6,112.7].
@@蔡文瑞-l2k 這其實是數學問題,不是程式問題,要去觀察兩個數列之間的關聯性,後面這個是:
3=3
4=3+1
58=3+1+54
80.6=3+1+54+22.6
112.7=3+1+54+22.6+32.1
最基本用兩層迴圈可以解決這個邏輯,用一層迴圈也可以,需要想一下細節的處理。
老师,如果把第四第五行倒换位置,答案为什么会不一样呢?上面的是65,底下的是55
n = 1
sum=0
while n
上面的運算,是先將n+1後才進行加總,而下面的運算是先加總再n+1。
拆解來看:
n一樣會從0跑到10,不過上面的n跑到10後會先+1再加總,而下面的則是直接加總在+1,然而+1後就超過10了因此不會再跑一次迴圈。
上:
2+3+4+5+6+7+8+9+10+11 = 65
下:
1+2+3+4+5+6+7+8+9+10 = 55
感謝 @黃宣宸 的說明,很清楚 :)
owhh,谢谢讲解(^v^)
@@cwpeng-course 謝謝老師,我剛開始學習python,希望未來可以朝數據分析的路上走,在解答問題的同時能讓我更加知道自己是否已經學會。
謝謝老師拍攝的影片,教學很清楚,對我幫助很大
@@huangg09 加油嘍 :)