感謝老師的教學~ 在最後的範例我也試著用continue解 n1=int(input("請輸入數字:")) sum=0 for x in range (n1): if x*x==n1: print (x) else: sum=sum+1 continue if sum==n1: print ("沒有整數平方根")
彭彭老師好: 因為對n跟x兩者間的關係有點迷惑我整理了一點心得不知道是否正確,請您幫忙看看: n=0 for x in [0,1,2,3,]: if x%2==0: # x 是偶數 continue print(x) n+=1 print('最後的 n:', n) 這段可否理解為,我實際要求的是「n」,換言之,我要看的重點其實只有取頭取尾,即n=0、n+=1。 至於中間的x只是設定迴圈運作的次數的條件,而[0,1,2,3]中只有0,2會成立 x%2==0的條件式,所以 n+=1只跑2次,故最後的n=2。 以上,煩請賜教,不勝感激!
感謝彭彭老師的教學,以下是個人的練習,還請不吝教導,謝謝。 #綜合範例:找出整數平方根 while True: n = input("請輸入一個正整數或輸入Q/q離開: ") #input輸入的值為字串 try: int(n) and n == "Q" and n == "q" #判斷輸入的字串是否可轉換整數或為離開程式的Q/q x = True except ValueError: #判斷輸入值若非整數及Q/q皆為非整數 x = False if n == "Q" or n == "q": print("歡迎下次使用") break elif x == False: print("您輸入的非正整數,請重新輸入或輸入Q/q離開") else: n = int(n) for i in range(n): # i 從 0 ~ n-1 if i*i == n: print("整數平方根", i) break else: print("沒有整數平方根")
最後的綜合範例,試著寫寫看,寫完以後以為自己對了! 結果發現跟老師的還是不一樣,試一試又好像真的沒問題~ 原來不同的思路,真的會產生不同的解答! 程式語言好有趣!感謝老師仔細的教學~ n=input("請輸入一個正整數:") n=int(n) for x in range(n+1): if x*x==n: print("此數有整數平方根為:",x) break elif x==n: print("此數無整數平方根")
# 有多加一個 while 迴圈就可以一直輸入了 # 打q 就是 quit 的意思,跳出迴圈 while True: num = input('請輸入一個正整數: ') if num == 'q': break else: num = int(num) for i in range(num): if i*i == num: print(num, '的根為', i) break else: print(num, '沒有整數根')
筆記分享~有錯還請大家幫忙更正 ---------------------------------------------------------------------------------------------------- #ctrl+A為全選,配合ctrl+/的集體註解很好用 #break的簡易範例 n=0 while n
用while迴圈挑戰 #找出整數平方根 x=int(input("請輸入整數: ")) y=1 while x>0: if y*y==x: print("整數平方根為:",y) break y+=1 if y==x: break z=x**0.5 int(z) if z**2x: print("平方根非整數")
老師想詢問一下~關於else 的簡單範例 sum=0 for n in range(11): sum+=n else: >【這裡不知道為何需要有else,因為有無的結果都可以呈現出一樣的正確答案】< print(sum) 這裡回去重新看if、elif、else的單元還是不能理解QQ 謝謝老師在過程中,不斷地暗示要自己寫一遍,理解邏輯,自己默寫真的很有幫助~~謝謝老師~
#平方根 想請教一下彭彭老師 n=int(input(‘請輸入一個正整數: ’) for i in range(n): if i * i == n: print(‘整數平方根‘ , i) break else: print(‘沒有整數平方根’) n=int(input(‘請輸入一個正整數: ’) for i in range(n): if i * i == n: print(‘整數平方根‘ , i) else: print(‘沒有整數平方根’) 這兩段代碼結果是一樣的 所以我想說這裡的重點應該是沒有縮排的else: 因爲我試了一下把else放在for迴圈中 這時候不管上面有沒有break 在終端機顯示的整數平方根上面都會出現 沒有整數平方根 像是: n=int(input(‘請輸入一個正整數: ’) for i in range(n): if i * i == n: print(‘整數平方根‘ , i) break else: print(‘沒有整數平方根’) 這個如果輸入16 上面會先出現四個沒有整數平方根 再出現 整數平方根:4 這個比較好理解 因為感覺for迴圈是從0開始計算 四個沒有整數平方根代表的是 0 1 2 3 但是: n=int(input(‘請輸入一個正整數: ’) for i in range(n): if i * i == n: print(‘整數平方根‘ , i) else: print(‘沒有整數平方根’) 這個的答案下面就會出現超級多沒有整數平方根 這個應該也是因為沒有break 所以會一直運算下去 最終還是想問 else擺放的位置 為什麼它要擺在迴圈外???
彭彭老師您好: n=0 for x in [0,1,2,3]: if x%2==0: # x 是偶數 continue print(x) n+=1 print("最後的 n:", n) 結果如下: 1 3 最後的 n: 2 #但是,將第一行修改成 n=1 for x in [0,1,2,3]: if x%2==0: # x 是偶數 continue print(x) n+=1 print("最後的 n:", n) 最終結果會變成 1 3 最後的 n: 3 想請問老師最後print的 n 究竟是甚麼意義? 又為何會從2變成3? 非常感謝!
# 一定要寫在迴圈內 while 布林值: break for 變數名稱 in 列表或字串: break n = 1 while n < 5: if n == 3: break # 程咬金 n+=1 print(n) # 印出3 while 布林值: continue for 變數名稱 in 列表或字串: continue n = 0 for x in [0,1,2,3]: if x % 2 == 0: continue n+=1 print(n) # 印出2 while 布林值: 若布林值為True,執行命令 回到上方,做下一次的迴圈判斷 else: 回圈結束前,執行此區的命令 n = 1; while n < 5: print("變數n的資料是:", n) n+=1 else: print(n) # 結束迴圈前,印出5 >>> 變數n的資料是: 1 >>> 變數n的資料是: 2 >>> 變數n的資料是: 3 >>> 變數n的資料是: 4 >>> 5 for 變數名稱 in 列表或字串: 將列表中的項目或字串中的字元 逐一取出、逐一處理 else: 回圈結束前,執行此區的命令 for c in "Hello": print("逐一取得字串中的字元", c) else: print(c) # 結束迴圈前,印出c >>> 逐一取得字串中的字元 H >>> 逐一取得字串中的字元 e >>> 逐一取得字串中的字元 l >>> 逐一取得字串中的字元 l >>> 逐一取得字串中的字元 o >>> o # break n = 0 while n < 5: if n == 3: break print(n) # 印出迴圈中的n n+=1 print("最後的n: ", n) # 印出迴圈結束後的n >>> 0 >>> 1 >>> 2 >>> 最後的n: 3 # continue n = 0 for x in [0,1,2,3]: if x % 2 == 0: # x是偶數 continue print(x) n+=1 print("最後的n: ", n) >>> 1 >>> 3 >>> 最後的n: 2 # 遇到0,2會被跳過不印,continue執行下一個 # else sum = 0 for n in range(11): sum += n else: print(sum) # 印出1+2+3+...+10的結果 >>> 55 # 綜合範例: 找出整數平方根 # 輸入9,得到3 # 輸入11,得到【沒有】整數的平方根 n = input("輸入一個正整數: ") n = int(n) # 轉換輸入值為數字 for i in range(n): # i 從 0 ~ n-1 if i * i == n: print("整數平方根", i)) break # 用break強制結束回圈時,不會執行else區塊 else: print("沒有整數平方根") >>> 輸入一個正整數: 25 >>> 整數平方根 5 >>> 輸入一個正整數:11 >>> 沒有整數平方根
請問老師~我在做"取平方根"的練習的時候,不小心把if打成while,結果如下: x=input("請輸入數字") x=int(x) for n in range(x+1): while n*n==x: print(n) break else: print("無") 結果 5 無 可以請問這是甚麼意思嗎?
老師請問我的程式是否缺少 File "c:\Users\OneDrive\桌面\python\loop-control.py", line 32, in n=int(n) #轉換成整數 TypeError: int() argument must be a string, a bytes-like object or a number, not 'builtin_function_or_method' PS C:\Users\OneDrive\桌面\python>
彭彭老師好 我在聯席時有另一個疑問: 我想求出立方根,用 下面的code可以,但請問為什麼把if換成while就會有問題 else怎樣都會被印出來就算用break 也還是印出來 Code:1 x=int(input("請輸入一正整數: ")) for i in range (x+1): if i**3==x: print(x,"的立方根為",i) break else: print("此正整數無整數立方根") Code:2 x=int(input("請輸入一正整數: ")) for i in range (x+1): while i**3==x: print(x,"的立方根為",i) break else: print("此正整數無整數立方根")
老師好跟您請教 n=0 for x in [0,1,2,3,]: if x%2==0: # x 是偶數 continue print(x) n+=1 print('最後的 n:', n) 若最後是是n+=1,因為跑了2次,所以最後的n是2,那若改成n+=2跑出來卻是4,n不是就是跑2次應該永遠都為2? 不好意思這邊卡好久...
老師請問 n=0 for x in [0,1,2,3,4]: if x%2==0: continue print(x) n+=1 print("last number :", n) 印出結果: 1 3 last number : 2 ---------------------------- 請問為什麼不是3? 4也是偶數不是嗎?
老師您好,有個問題想請教您 1. x=int(input('寫出一個數字: ')) for n in range(x): x+=n else: print('列印出總和: ',x) 2. sum=0 for w in range(11): sum+=w else: print('總和: ', sum) 我的理解是 如果第一個程式碼輸入11,才會加總1至10(同程式碼二),可是為什麼會是1加到11呢@@?
彭彭老師好 我想知道為什麼我跑了下面的程式,輸入4以外其他有平方根的正整數之後還是會跑出沒有"整數平方根"? n=input("請輸入一個數字: ") n=int(n) for i in range(n): if i**i==n: print("整數平方根 ",i) break else: print("沒有整數平方根")
看到這個影片後,豁然開朗,以前一直以為If else就是要放同一縮排位置,自己做了一些比較和小筆記 若有錯的話再請多指教 感謝
#綜合範例: 找出平方根
##輸入9: 得到3
#輸入11: 得到[沒有]整數的平方根
思路: 若將if else放在同一縮排位置,會導致if else條件判斷二擇一的結果,
每次不符合都印出,但你希望只要在全部檢查察都不符合才印出"沒有整數平方根"
故else要放在與for同位的縮排位置,for迴圈結束前執行此段
當for迴圈內條件式一但成立,立即break離開迴圈,也就不會執行到後面的else了
正確寫法:
n = input("輸入一個正整數") #讓使用者輸入數字
n = int(n) #轉換輸入成數字
for i in range(n): # i從0~n-1
if i*i == n:
print("整數平方根",i)
break #如果找到平方根,就break 跳出for 迴圈
else:
print("沒有整數平方根")
""" Note:
for迴圈正常的結束 就會跑else
如果我們用break強制把迴圈結束掉,就不會跑else
使用者如果輸入9 n=9
i就會從0~8測試, 在i跑到3時,3*3=9,i就會是3
使用者如果輸入5 n=5
i從0~8測試,在這過程中就都不會有滿足整除平方根的條件
最後就會執行else , 印出 沒有整數平方根
"""
#錯誤寫法1: 沒有寫else 會發生就算有整除平方根,依然印出沒有整數平方根的訊息
n = input("輸入一個正整數")
n = int(n) #轉換輸入成數字
for i in range(n):
if i*i == n:
print("整數平方根",i)
break
print("沒有整數平方根")#迴圈完後一定會印出
"""
印出:
輸入一個正整數9
整數平方根 3
沒有整數平方根
"""
#錯誤寫法2 : 會印出不必要的訊息
n = input("輸入一個正整數")
n = int(n) #轉換輸入成數字
for i in range(n):
if i*i == n: #if條件式成立才會進入
print("整數平方根",i)
break
print("沒有整數平方根") #上方if條件式不成立就不會進入,程式由上往下讀,接著執行此句
"""
#Note:
假設使用者輸入9 i從0跑到3時,出現整除平方根才滿足if條件是為true
在那之前i=0,i=1,i=2都印了一次 沒有整數平方根,總共會印三次
印出:
輸入一個正整數9
沒有整數平方根
沒有整數平方根
沒有整數平方根
整數平方根 3
"""
#錯誤寫法3: if else放在同一縮排位置,導致出結果二擇一,印出很多不必要的訊息
n = input("輸入一個正整數") #讓使用者輸入數字
n = int(n) #轉換輸入成數字
for i in range(n): # i從0~n-1
if i*i == n:
print("整數平方根",i)
else:
print("沒有整數平方根") #每次沒有平方根就印
"""
假設使用者輸入一個正整數6
上面寫法會導致沒有整數平方根時,每次都會印出
沒有整數平方根
沒有整數平方根
沒有整數平方根
沒有整數平方根
沒有整數平方根
沒有整數平方根
"""
很厲害的筆記,感謝你的紀錄和分享 :)
完全把新手會犯的錯誤貼上來啦!
還有的錯誤是有時候少了 : , 有時候又位置忘了對齊正確的地方。
感謝老師的教學~
在最後的範例我也試著用continue解
n1=int(input("請輸入數字:"))
sum=0
for x in range (n1):
if x*x==n1:
print (x)
else:
sum=sum+1
continue
if sum==n1:
print ("沒有整數平方根")
感謝你的分享,我相信對大家都很有參考價值 :)
彭彭老師好:
因為對n跟x兩者間的關係有點迷惑我整理了一點心得不知道是否正確,請您幫忙看看:
n=0
for x in [0,1,2,3,]:
if x%2==0: # x 是偶數
continue
print(x)
n+=1
print('最後的 n:', n)
這段可否理解為,我實際要求的是「n」,換言之,我要看的重點其實只有取頭取尾,即n=0、n+=1。
至於中間的x只是設定迴圈運作的次數的條件,而[0,1,2,3]中只有0,2會成立 x%2==0的條件式,所以 n+=1只跑2次,故最後的n=2。
以上,煩請賜教,不勝感激!
你的理解沒有什麼問題哦,很不錯的描述 :)
謝謝你的分享,我也跟你卡在類似的地方,有你的說明資訊變清晰了
太棒了👏
不好意思請問一下 所以這邊的2指的是2次,而不是最終結果為2?
Fuyz 我認為解讀成「可以滿足這個條件的只有兩個數字」,這樣學習上比較不會搞混
老師您的影片真的很詳細,在看您平方根的範例前,我依自己意思先寫了一段。像您說的,看著打是一回事,自己練習用不同方法又是一回事。
#迴圈綜合範例:取得整數平方根
n=input("請輸入一個數:")
n=int(n)
data=n**0.5 #開根號
if int(data)==data: #判斷是否為整數
print(n,"能取整數平方根=",data)
else:
print(n," 無法取整數平方根,其平方根=", data)
很不錯呀,謝謝你的回饋 :)
要用迴圈而不是直接開根
「自己講了都想睡覺」,這句很有趣。
Python在任何的使用上,真的要自己去執行、思考和吸收才能真正的理解,畢竟這語言是「程式」,包含了邏輯的思考。
但其實蠻好玩有趣的!
一天一天的學習,發現不只是漸漸看得懂python,在邏輯的思考上更近一步,不單單只是平平的生活過去。
感謝老師的講解:)
哈哈哈哈 XDDD 有些東西講得很細很細又沒有戲劇效果,真的覺得很少人能專注到最後,我覺得連我自己聽都無法 ~~~
就像你說的自己去寫、去想、去執行,才能把這些東西都變自己的 :) 覺得你的分享很棒,很喜歡 ~~~~
@@cwpeng-course 謝謝:)
做每一個動作時,都會學習到不同的知識,雖然很煩哈哈哈,但收穫真的不少:)
最後的綜合範例,原本想說試著自己先寫寫看,沒想到可以正確運行,實在太開心了!!!後來看了老師用for迴圈寫的方式,領悟到原來寫法可以有很多種,老師也一直強調要看懂其中的邏輯,這次影片深有體會!!
n1 = int(input("請輸入數字"))
if n1%(n1**(1/2)) == 0 :
print(n1**(1/2))
else :
print("沒有整術平方根")
讚讚,很高興你有些自己的體悟,也謝謝你的分享 :)
我跟你差不多的寫法
老师讲的非常细致。不过取平方根的代码有些小问题,输入整数1返回的结果是无平方根(因为range是从0开始且不包含1),所for循环的range(n+1)就可以解决了
感谢你指出这个问题和大家分享 :)
感謝老師指導,重溫第二次又有心得:else的位置不同導致的結果也不一樣
很不錯阿 :)
感謝老師 看老師的影片 學東西 會上癮 有成就感
很高興你這樣說 :)
00:00 介紹
00:15 迴圈搭配的指令:break和continue
00:33 break:強制結束迴圈
while 布林值:
▏ break
for 變數名稱 in 列表字串:
▏ break
01:05 程式示範:
n=1
while n
感謝紀錄 ~
你好
17:12 綜合範例:找出整數平方根
for i in range(x):中的x應改為n
@@sann1170 謝謝糾正
澎澎老師 謝謝您無私 的分享 完全不會想睡覺呢
哈哈哈,謝謝你的回饋哦 :)
#break的簡易範例
# n=0
# while n
感謝整理 :)
最后一个例子求平方根去掉break是不是也可以?
@@meizhanglong6072 沒有break的話會執行else 假設你輸入25它會print 25的整數平方根是5 也會print 25沒有整數平方根
謝謝老師,彭彭人,我的超人
哈哈哈哈 >/////
感謝彭彭老師的教學,以下是個人的練習,還請不吝教導,謝謝。
#綜合範例:找出整數平方根
while True:
n = input("請輸入一個正整數或輸入Q/q離開: ") #input輸入的值為字串
try:
int(n) and n == "Q" and n == "q" #判斷輸入的字串是否可轉換整數或為離開程式的Q/q
x = True
except ValueError: #判斷輸入值若非整數及Q/q皆為非整數
x = False
if n == "Q" or n == "q":
print("歡迎下次使用")
break
elif x == False:
print("您輸入的非正整數,請重新輸入或輸入Q/q離開")
else:
n = int(n)
for i in range(n): # i 從 0 ~ n-1
if i*i == n:
print("整數平方根", i)
break
else:
print("沒有整數平方根")
我覺得是很棒的練習,也仔細使用了 try except 的結構來偵測資料型態轉換失敗的狀況,感謝你的分享 :)
老師好人一生平安 :)
謝謝哪 :)
n=input("please enter a number")
n=int(n)
i=0
for i in range(n):
print("謝謝澎澎老師")
print("第" ,i+1,"次" )
else:
print("程式結束。")
哈哈哈,謝謝你程式中的謝謝 XDDDD
@@arisapan4089 怎麼這麼棒 XDDD
老師講解的真的非常淺而易懂,非常感謝您的教學🙏🙏
謝謝回饋,加油 :)
我看了綜合範例後,嘗試自己先打看看
a=int(input("尋找完全平方數"))
x=a**(1/2)
if x//1==x:#判斷開根後有無小數
print(a,'的平方根為:',x)
else:
print(a,'不是完全平方數')
老師對不起我沒有用到迴圈QQ
謝謝你清楚的指導
哈哈哈,雖然沒有用到迴圈但還是很不錯的練習和分享哦 :)))
@@cwpeng-course 請問彭彭老師, 我使用這位樓主的程式碼下去嘗試, 為什麼出現的x 會是帶有小數點第一位的數字呢? (例如a輸入25, x會是5.0) 而不是出現整數(5)? 這是python預設的數字格式嗎? 謝謝!
最後的綜合範例,試著寫寫看,寫完以後以為自己對了!
結果發現跟老師的還是不一樣,試一試又好像真的沒問題~
原來不同的思路,真的會產生不同的解答!
程式語言好有趣!感謝老師仔細的教學~
n=input("請輸入一個正整數:")
n=int(n)
for x in range(n+1):
if x*x==n:
print("此數有整數平方根為:",x)
break
elif x==n:
print("此數無整數平方根")
感謝你的心得分享,覺得有意思 :)
# 有多加一個 while 迴圈就可以一直輸入了
# 打q 就是 quit 的意思,跳出迴圈
while True:
num = input('請輸入一個正整數: ')
if num == 'q':
break
else:
num = int(num)
for i in range(num):
if i*i == num:
print(num, '的根為', i)
break
else:
print(num, '沒有整數根')
讚讚,感謝分享 :)
剛剛測試之前學的開根號,最後一個範例也可以寫成這樣
num=int(input('請輸入正整數:'))
if num**0.5%1==0:
print('整數平方根為',num**0.5)
else:
print('沒有整數平方根')
相較之下若輸入的數字較大,貌似會跑得比較快(運算過程比較少的關係?)
提供給大家參考,希望大家一起進步~~
也謝謝彭彭老師的教學,真的受益良多!
謝謝你的分享,我覺得很棒 :)
不好意思 想請問一下%1在這裡的用法 是不是用來看開方根後的數字是不是有餘數 如果有就必定是泳有整數平方根 謝謝
謝謝作者的製作。
不客氣 ~
看了彭彭老师的官网,简洁、清爽,很漂亮、很舒服。
谢谢对官网的回馈,很高兴你喜欢 :)
n=0
for x in [1,2,3,4,5,6,7]:
if x%2==0: #X如果是偶數 x=0會忽略下方程式
continue
print(x)
n=n+1
print("最後的n",n) #列表中為奇數的數量
n1=int(input("number"))
for x in range(2,n1):
if n1%x==0:
print("no")
break
else:
print("yes") 自己練習寫出判斷是否為質數
很棒的練習 :)
筆記分享~有錯還請大家幫忙更正
----------------------------------------------------------------------------------------------------
#ctrl+A為全選,配合ctrl+/的集體註解很好用
#break的簡易範例
n=0
while n
哇,感謝你的詳細筆記,讚讚!
2024/07/04
剛看到開根號的題目,在看解答之前,試著用自己過去的所學嘗試先解解看:)
看完彭彭老師的解法後,我在想可能可以運用彭彭老師教的for迴圈的解法延伸應用到尋找"質數",晚點再來想想看^^
### 下面這是我自己嘗試寫出來的解法 ###
num01 = int(input("請輸9入要取平方根的整數:"))
num02 = num01 ** 0.5 # 輸入的數值,直接開根號
if num02 % 1 != 0: # 判斷開根號之後的數值是否為整數
print("這個數字沒有\"整數\"的平方根")
else:
print(f"平方根為:{num02:g}")
#判斷輸入數字是否為質數
# "2"這個數字我實在想不出更好的判斷方法,所以直接告訴判斷式,2就是一個質數
num01 = int(input("輸入一個大於1的數字,判斷是否為質數:"))
if num01
感謝你的分享,我覺得很棒耶 :)
畫重點11:05
一次註解這種快捷鍵真的很實用XD
感謝幫忙畫重點 XDDD
@@cwpeng-course請問一下為什麼只有注音輸入法能用? 像我用倉頡時, 按Ctrl + / 變成...
我也不太理解n=2這段,爬了一下文,最後我的理解是只有1跟3符合往下計算的條件,因此當x=1時印出X同時n會被加上1, 而當下一次運算時x=3,這時的n已經是1,所以1再加1就得到2
我覺得你的理解沒太大問題哦 ~
關於找出平方根 我的寫法是直接對x開根號,然後除以1看是不是等於0,除以1等於0的就是整數,不知道這樣寫對不對?
x=int(input("請輸入一數字:"))
y=x**0.5
z=y%1
if z==0:
print(y)
else :
print("無法整除")
沒有問題哦,感謝你的分享。
影片中只是要讓大家多多練習迴圈的思考方式 :)
Contro+/ 我現在才知道 之前傻傻一直#####
謝謝老師
讚讚,小技巧很有用 XDDD
最後是print n 不是print x
所以最後的n是2 不是3!!!!!!!!!!!!!!!!
以為是3的可能以為最後是print(x)
但是最後一排程式碼是print(n)
是在問for這個loop跑了幾次
讚讚,很仔細
老師想請問一下關於else的用法,
會不會覺得如果沒有break配合使用的話,感覺好像有點多餘,因為不管怎樣都會繼續執行下一行程式碼,
有沒有什麼情況下是,需要else但是不需要同時配合break的例子呢?
謝謝喔
覺得搭上 break 相當好 XDDD 同樣的範例我用 JavaScript 寫就要多一點邏輯來處理 ~~~
至於需要 else 不需要配合 break,目前沒有想到很必要的狀況,不過某種程度上可以把跟迴圈相關的後續動作包裹在結構中,或許對可讀性有些幫助 :)
謝謝老師 我終於完整的弄懂迴圈了>
很高興對你有幫助 :)
感謝老師無私分享
不會,也謝謝你的回饋 :)
剛剛開始學python
試了試你出的題 嘻嘻
n=int(input('Number :'))
a = n**(1/2)
b = int(a)
if b == a:
print(b)
else:
print('not rational number')
哦哦,讚讚,很不錯 :)))
想不到for要怎麼寫
所以就先這樣寫了,好像也行 XD
x = input("請輸入整數:")
x = int(x)
if x % x**0.5 == 0:
print(x,"的平方根為:",int(x**0.5))
else:
print("沒有整數平方根")
如果用戶輸入超大的數字,這樣可能用if else會快一點點點點點點,因為不用跑迴圈算很多次
直接利用內建的 ** 運算是好主意哦,使用 for 單純只是為了練習邏輯而已 :)
x=int(input("請輸入一個正整數:"))
y=x**0.5
z=int(y)
if y==z:
print(x,"的整數平方根為",round(y),sep="")
else:
print(x,"沒有整數平方根",sep="")
感謝分享 ~
用while迴圈挑戰
#找出整數平方根
x=int(input("請輸入整數: "))
y=1
while x>0:
if y*y==x:
print("整數平方根為:",y)
break
y+=1
if y==x:
break
z=x**0.5
int(z)
if z**2x:
print("平方根非整數")
感謝你的分享,很棒 :)
謝謝老師 原來迴圈也有else 可以用 又多了解一點了
對你有幫助我覺得很棒 :)
想請教彭彭老師
倒數第二個例子 (else的簡單範例)
我使用如下:
sum=0
for n in range(11):
sum+=n
print(sum)
不用else也能跑出55
那麼用else的差別在哪呢
同一個問題的程式寫法通常會有很多種,在這個問題裡是否有 else 確實都可以正常運作,但若使用 else 的邏輯也一樣能解決問題嘍 ~
@@cwpeng-course 謝謝老師您的頻道真的令人獲益良多
感謝老師詳細的教學~
有一個問題覺得不解
x+=1的位置 放在print(印出迴圈中的x)上 就多一個尾數出來
而用while 運算continue 又要放到if的上面才不會無限迴圈
有點不太了解
感謝~
程式碼放在上方,會先執行,執行順序會影響最後結果。
如果不斷地跑進 continue 指令,但變數中的資料沒有變化,就會產生無窮迴圈嘍。
老師想詢問一下~關於else 的簡單範例
sum=0
for n in range(11):
sum+=n
else: >【這裡不知道為何需要有else,因為有無的結果都可以呈現出一樣的正確答案】<
print(sum)
這裡回去重新看if、elif、else的單元還是不能理解QQ
謝謝老師在過程中,不斷地暗示要自己寫一遍,理解邏輯,自己默寫真的很有幫助~~謝謝老師~
沒有 else會全部印出來吧
感謝 @李峻豪 的回應 :)
@@cwpeng-course 老師, 跟著這位同學的else問題, 我想多問:
else:
print(sum)
如果我一樣把else拿掉,留下print(sum)但沒有縮排,結果會完全一樣,所以感覺else在這裡是多餘的,請問這理解對嗎?
print(sum) --> 沒有縮排
@@chhe453 這樣做也是可以的沒錯 ~
#平方根 想請教一下彭彭老師
n=int(input(‘請輸入一個正整數: ’)
for i in range(n):
if i * i == n:
print(‘整數平方根‘ , i)
break
else:
print(‘沒有整數平方根’)
n=int(input(‘請輸入一個正整數: ’)
for i in range(n):
if i * i == n:
print(‘整數平方根‘ , i)
else:
print(‘沒有整數平方根’)
這兩段代碼結果是一樣的 所以我想說這裡的重點應該是沒有縮排的else:
因爲我試了一下把else放在for迴圈中 這時候不管上面有沒有break 在終端機顯示的整數平方根上面都會出現 沒有整數平方根
像是:
n=int(input(‘請輸入一個正整數: ’)
for i in range(n):
if i * i == n:
print(‘整數平方根‘ , i)
break
else:
print(‘沒有整數平方根’)
這個如果輸入16 上面會先出現四個沒有整數平方根 再出現 整數平方根:4
這個比較好理解 因為感覺for迴圈是從0開始計算 四個沒有整數平方根代表的是 0 1 2 3
但是:
n=int(input(‘請輸入一個正整數: ’)
for i in range(n):
if i * i == n:
print(‘整數平方根‘ , i)
else:
print(‘沒有整數平方根’)
這個的答案下面就會出現超級多沒有整數平方根 這個應該也是因為沒有break 所以會一直運算下去
最終還是想問 else擺放的位置 為什麼它要擺在迴圈外???
我簡化一下我的問題😂
(1)為什麼沒有break答案一樣?
(2)為什麼不能把else 放在 for 迴圈中?
1. break 會在找到答案時提前終止運作,就算沒有,也只是浪費後面的運算力,但不會影響答案。
2. else 放在迴圈中代表每一圈都會執行,放在外層,才代表迴圈結束後執行,運作方式很不一樣。
不好意思我想請教一下關於"綜合範例"部分的問題:
藉由開根號可以理解到 i*i 次方及 n**0.5 的兩個特性
*想知道彭彭是如何想到要用for、in range() 語法的出發點?
靠 i*i 的理解是如何連想且運用到列表語法呢?是我沒熟悉 for in range() 的理解及 根號 的特性嗎?
彭彭的解:
n1 = int(input('輸入數字:'))
for i in range(n1):
if i*i==n1:
print("整數平方根:",i)
break
else:
print(n1,"無整數平方根")
在未看到彭彭的解法時,我想到是用 while 及 if 作解,自己的解法如下:
解1:
n1 = int(input('輸入數字:'))
x = n1**0.5
i=x%1
while i==0:
print('正整數根號',x)
break
else:
print(n1,'無整數平方根')
解2:
n1 = int(input('輸入數字:'))
x = n1**0.5
i=x%1
if i==0:
print('正整數根號',x)
else:
print(n1,'無整數平方根')
非常感謝閱讀如此冗長的問題!
教學用途而已,實務上確實直接使用 n**0.5 這樣的寫法即可,讓大家體會一下 for 迴圈會如何思考事情。
@@cwpeng-course 好的!非常感謝回覆!!
用while試著寫找出平方根的程式><
x=int(input("請輸入正整數:"))
i=0
while i>=0:
if i*i==x:
print("整數平方根:",i)
break
elif i>x:
print("找不到整數平方根")
break
else:
i+=1
讚讚,很棒的練習和分享 :)
謝謝老師🙏🏻🙏🏻
謝謝呦,希望對你會有幫助 :)
想問老師17:05 直接print(sum)的結果跟else print(sum)的結果出來是一樣的,那這樣else是必須要加的嗎
以這個例子來看確實沒有一定要加,主要是迴圈中若是有 break 的指令才會影響到運作 ~
想請問老師
綜合範例這樣好像沒有辦法算出1的平方根?
是不是把32行range後面的括號改成n+1就可以改善?
對哦,很棒的細節,是我的失誤,確實如此 :)
老師請問這樣正確嗎
a = int(input("請輸入一個整數:"))
b = a**0.5
if a%b == 0:
print("其平方根為:",b)
else:
print("無整數平方根")
可以的 ~
彭彭老師您好:
n=0
for x in [0,1,2,3]:
if x%2==0: # x 是偶數
continue
print(x)
n+=1
print("最後的 n:", n)
結果如下:
1
3
最後的 n: 2
#但是,將第一行修改成
n=1
for x in [0,1,2,3]:
if x%2==0: # x 是偶數
continue
print(x)
n+=1
print("最後的 n:", n)
最終結果會變成
1
3
最後的 n: 3
想請問老師最後print的 n 究竟是甚麼意義? 又為何會從2變成3?
非常感謝!
好像是用 [最後的n值] 解釋會比 [n+=1 ]執行了幾次更加精準?
當n=1且x=1時
執行n+=1
-->得到新的n=2
當n=2且x=3時 (x=2會執行continue 變成x=3)
執行n+=1
-->得到新的n=3
故最後print(n)的結果為3。
-------------------------------------------------------------------------------
同理解釋課堂的
n=0
for x in [0,1,2,3]:
if x%2==0: # x 是偶數
continue
print(x)
n+=1
print("最後的 n:", n)
當n=0且x=1時
執行n+=1
-->得到新的n=11
當n=1且x=3時 (x=2會執行continue 變成x=3)
執行n+=1
-->得到新的n=2
故最後print(n)的結果為2。
你的理解很 OK 哦,沒什麼問題 :)
感謝你的詳解...我終於懂了...
Thanks for your sharing!
Thanks your feedback. :)
彭彭老師你好 我在練習的時候有遇到一個問題: 您解說想要開根號所使用的邏輯為 i*i=i的2次方。 但我想說用(1/2)次方比較直觀? 所以嘗試改寫練習卻發現我用兩種方式呈現卻出現不同結果@@ 想請教您
Code1:
x=input("plase type in number: ")
x=int(x)
y=input("請輸入欲開次方: ")
y=int(y)
for i in range (x):
if i**y==x:
if y%2==0:
print(x,"的",y,"方根為:",i,-i)
else:
print(x,"的",y,"方根為:",i)
break
else:
print(x,"的",y,"方根非整數")
上述為老師指導的邏輯 這部分都正確 我想問的是下面的code:
x=input("plase type in number: ")
x=int(x)
y=input("請輸入欲求知次方根: ")
y=int(y)
i=x**(1/y)
if i==int(i):
print(x,"的",y,"方根為:",i)
else:
print(x,"的",y,"方根非整數")
這個code 我嘗試之後 (像是X=8 y=3)是正確的 但我只要輸入1000 y輸入3 卻不會出現10@@ 這個疑問
因為 1000**(1/3) 得到的數字不會剛好是 10,你可以把 i 直接印出來觀察看看。這個跟電腦本身的浮點數運算誤差有關,所以我們可能更偏好使用逼近法來處理這樣的問題 ~
@@cwpeng-course 謝謝彭彭老師 , 所以 不是寫法有錯 比較偏向 因為1/3 化成小數是0.33333(無限)的概念!? 了解 謝謝老師
if i*i == n :
...
elif i*i > n :
print("沒有整數平方根")
break;
感謝紀錄 ~~~~
彭彭老師您好
請問一下在"14:40"
第16行處的n+=1
n和x 之間沒有任何的算式 (譬如n=n+x)
為何第17行的結果print("最後的n",n)
會顯示為2呢?
後面那個開方的程式碼
如果使用者輸入1
就會跑出沒有整數平方根
因為i只有0~0
應該要再最上面加入1的情況
謝謝你的補充和提醒 :) ~~~
@@RH-nf3dn range(n)改成range(n+1)
輸入1 的開根號就會得到1了
(樓上網友\回的
)
# 一定要寫在迴圈內
while 布林值:
break
for 變數名稱 in 列表或字串:
break
n = 1
while n < 5:
if n == 3:
break # 程咬金
n+=1
print(n) # 印出3
while 布林值:
continue
for 變數名稱 in 列表或字串:
continue
n = 0
for x in [0,1,2,3]:
if x % 2 == 0:
continue
n+=1
print(n) # 印出2
while 布林值:
若布林值為True,執行命令
回到上方,做下一次的迴圈判斷
else:
回圈結束前,執行此區的命令
n = 1;
while n < 5:
print("變數n的資料是:", n)
n+=1
else:
print(n) # 結束迴圈前,印出5
>>> 變數n的資料是: 1
>>> 變數n的資料是: 2
>>> 變數n的資料是: 3
>>> 變數n的資料是: 4
>>> 5
for 變數名稱 in 列表或字串:
將列表中的項目或字串中的字元
逐一取出、逐一處理
else:
回圈結束前,執行此區的命令
for c in "Hello":
print("逐一取得字串中的字元", c)
else:
print(c) # 結束迴圈前,印出c
>>> 逐一取得字串中的字元 H
>>> 逐一取得字串中的字元 e
>>> 逐一取得字串中的字元 l
>>> 逐一取得字串中的字元 l
>>> 逐一取得字串中的字元 o
>>> o
# break
n = 0
while n < 5:
if n == 3:
break
print(n) # 印出迴圈中的n
n+=1
print("最後的n: ", n) # 印出迴圈結束後的n
>>> 0
>>> 1
>>> 2
>>> 最後的n: 3
# continue
n = 0
for x in [0,1,2,3]:
if x % 2 == 0: # x是偶數
continue
print(x)
n+=1
print("最後的n: ", n)
>>> 1
>>> 3
>>> 最後的n: 2
# 遇到0,2會被跳過不印,continue執行下一個
# else
sum = 0
for n in range(11):
sum += n
else:
print(sum) # 印出1+2+3+...+10的結果
>>> 55
# 綜合範例: 找出整數平方根
# 輸入9,得到3
# 輸入11,得到【沒有】整數的平方根
n = input("輸入一個正整數: ")
n = int(n) # 轉換輸入值為數字
for i in range(n): # i 從 0 ~ n-1
if i * i == n:
print("整數平方根", i))
break # 用break強制結束回圈時,不會執行else區塊
else:
print("沒有整數平方根")
>>> 輸入一個正整數: 25
>>> 整數平方根 5
>>> 輸入一個正整數:11
>>> 沒有整數平方根
感謝你的紀錄 :)
請問老師,為什麼else跟for是齊頭,而不是縮排在for迴圈底下呢
因為這裡的 else 講的是和 for 對應的 else,在迴圈結束後去執行的程式
range(n)改成range(n+1)
輸入1 的開根號就會得到1了!XD
感謝分享和回饋 :)
@@cwpeng-course 的确。同样当输入0的时候,也会得到平方根是0了。
@@YeLiuyouyaqq 但是0不是正整數...
@@weitingwang415 if i*i==n &n!=0: 多加個判斷就可以囉!🙂
是不是不管range(n+任何數)都不會改變結果阿
請教一下,最後解平方根那題,我自己想出來是
n=int(input("請輸入數字:"))
if n**0.5%1==0:
print(n**0.5)
else:
print("沒有整數平方根")
這樣也可以解出來,邏輯上有任何不妥嗎?
沒有問題哦,使用 ** 可以直接達成開根號的目的沒錯,也是最簡便的方式。教學中只是試著利用這個題目來學習迴圈的運作而已 :)
@@cwpeng-course 謝謝老師~
老師好,即使我沒有打else
在迴圈下一行我打print,還是會印出55
這樣是否else在這裡是不必要的?
for n in range(11):
sum+=n
print(sum)
可以這樣說,在這個簡單的例子中,確實不一定需要用 else
我也想過這問題
很详细,通俗易懂。大陆这边叫循环,不过能懂你的意思
請問老師綜合範例裡面的
print("整數平方根:",i)
break
跟
print("整數平方根:",i)
break
差別在哪呢?
為何我打第二個會是錯誤
請老師指點,感謝
不需要tab吧
感謝 @温辰瑋 回覆,確實如此哦 ~
請問老師~我在做"取平方根"的練習的時候,不小心把if打成while,結果如下:
x=input("請輸入數字")
x=int(x)
for n in range(x+1):
while n*n==x:
print(n)
break
else:
print("無")
結果
5
無
可以請問這是甚麼意思嗎?
那個 break 會作用在 while,不會作用在 for,所以程式邏輯就無法跳過最後的 "無" 這個字。
老師,在平方根那邊,如果輸入0或1,照一般數學是有答案的,用這個函式跑會跑出沒有平方根,這是這個函式的bug。
可以把range(n)改成range(n+1)應該就解決了 但一開始輸入的條件要多一個0 因0不是正整數
感謝 @Tim000李彥鋒 的分享 :)
for c in 'hello':
print(c)
else:
print(c)
for c in 'hello':
print(c)
print(c) 彭彭老师你好,我想问一下 这俩个for循环 输出结果也一样啊 else的具体实际作用是啥??
如果在回圈中额外搭配 break 指令,就会有些差别喽 ~
老師,請問 continue的簡易範例中,那個最後的n,我可以當做「在x列表中不是偶數的個數」嗎?
所以感覺像是把x列表中的資料以if判別出偶數的個數踢掉,剩下的個數即是最後的n
以上是我把列表中的數字多增加實際去跑歸納出來的想法,這樣理解可行嗎?
可以哦,我覺得沒太大問題 :)
Good job
Thanks :)
老師好:
y=input("數入正整數: ")
y=int(y)
z=0
for x in range(y):
if x*x==y:
print("平方根數: ", x)
break
elif x*x>3:
z=z+x
else:
print("無")
print(z)
數入正整數: 25
平方根數: 5
9
想請教:z=9是怎麼算出來的?謝謝老師
你的 elif 會在 x 是 4 和 5 的時候執行,累加到 z 中,最後就是 9。
@@cwpeng-course 謝謝老師
@@cwpeng-course 老師你好 我前天剛開始看您的影片自學
謝謝您拍攝的影片讓我看得非常清楚
上面這位同學提出的問題
以學生今天學習理解後不知道是不是這樣:
因為輸入Y = 25 所以在X=5之前程式都不會Break
但因為elif z設定x*x>3 所以x=5之前的x=2.3.4都匯累加
所以造成z=2+3+4=9 跑了3段
又因5*5==25程式結束不會跑到elif這段z的累加
不知道學生這樣見解正不正學!?
請問老師,我注意到break 可以控制到if 上一層的for 迴圈,以後應用break 這個指令時,可以控制到往上幾層的指令啊?
我實驗出來是1層
感謝 @Justin Wu 的回應,是一層沒錯哦 ~
想問一下15:50 那個else功能是不是多餘呢?
還是說有什麼不一樣嗎
不是哦,他會在最後,把加法的結果印出來。如果拿掉,就看不到結果了。
sum=0
for n in range(11):
sum+=n
print(sum)
老師,我的意思是這樣,還是說這邊只是單純介紹else在for迴圈裡的用法呢
@@raja78902010 我也是有相同的疑問,如果把else拿掉也是印出55, 覺得再這邊else的用處不大?!
請問彭彭老師:
else:
print
跟最後在最外層print效果一樣
差別在於一個在迴圈內;一個圈外(迴圈結束後)
請問有什麼好的應用嗎?否則跟在外面直接寫print好像都一樣?
只有搭配break才有意義?因為強制結束,導致一個print,一個不print
這樣理解正確嗎?謝謝
如果沒有else直接在外圍print會印出
請輸入數字:81
整數平方根: 9
沒有整數平方根
else再print的用意:在if的條件下若無法執行(輸入沒有整數的平方根的n)則會印出'沒有整數平方根'
如果沒有else則不論如何都會印出'沒有整數平方根'
我的理解 有錯請指正
感謝 @JOANNE YEN 協助回應 :)
怎麼好像沒回答的問題ww
老師請問我的程式是否缺少
File "c:\Users\OneDrive\桌面\python\loop-control.py", line 32, in
n=int(n) #轉換成整數
TypeError: int() argument must be a string, a bytes-like object or a number, not 'builtin_function_or_method'
PS C:\Users\OneDrive\桌面\python>
要看你前面的程式賦予 n 變數什麼樣的資料了 ~
請問一下,在5分30的時候,為什麼會印出n=2?
在x=2的時候會整除,continue X=3不能整除,所以會跳過continue 此時n=3?所以會印出3?(我的觀念是不是錯了?這個n是不是指跳過continue的次數?
迴圈會跑四次,x 分別是 1, 2, 3, 4,其中 x=2 和 x=4 的時候會執行 continue,導致 n+=1 命令被跳過。
因此整個迴圈跑完之後,n+=1 這個命令只被跑兩次,代表 n 被加了兩次,最後就是 2 嘍 ~
您是不是打錯了?應該是X是0,1,2,3?
所以是指只要是False就會忽略continue 然後n就會往上加一 最後X停留在3 總共忽略了continue 兩次 所以n=2這樣嗎?
哦哦哦,沒錯 x 是 0, 1, 2, 3 ~
是的,你後面說的沒錯 :) ~
謝謝老師
彭彭老師您好:
這邊我也不是很懂,我以為最後的n是3+1=4,n+=1不是表示n=n+1的意思嗎?最後一次加總怎麼不是3+1=4?為何最後的n會變成是跳過的次數?
謝謝老師的教學!
想問一個題外話,同樣的程式碼在Google Colab 是跑得出來,但在visual studio code 卻會出現錯誤,發現有" "或是()或是 : 時才會出現錯誤,但明明有注意英文書寫,想詢問看看,再麻煩老師解惑!
你可能用複製貼上程式碼,要確定有沒有複製到一些特殊的,尤其是看不見的字元,會造成程式執行時的錯誤。
彭彭老師好
平方根的範例我自己練習如下,雖然輸出結果是一樣的,但是跟您所寫的不同。
請問有哪邊需要改正嗎? 或是邏輯哪邊可以加強的嗎? 謝謝。
x=int(input("輸入正整數:"))
y=0
while y*y < x:
y += 1
if y*y == x:
print("平方根為:", y)
else :
print("沒有整數平方根")
若只看你在留言中這段,
if y*y == x:
print("平方根為:", y)
這兩行程式要往內做縮排哦 ~
@@cwpeng-course @小肯 print("平方根為:", y)
的下面不用break嗎?應該要有吧
否則else那部分不是一定會被印出來嘛
print("平方根為:", y)
的下面不用break嗎?應該要有吧
否則else那部分不是一定會被印出來嘛
@@s406032002 對 !! 加上 break 就能直接結束不理會 else
x=int(input("輸入正整數:"))
y=0
while y*y
想問一下老師 最後找整數平方根 range(n) 不適從0開始到n-1嗎 我怎麼想都好奇怪
對哦,就是從 0 到 n-1,一個一個去測試是否為正確的平方根答案 ~
@@cwpeng-course 那這樣n=1就找不到平方根了
彭彭老師好 我在聯席時有另一個疑問:
我想求出立方根,用 下面的code可以,但請問為什麼把if換成while就會有問題 else怎樣都會被印出來就算用break 也還是印出來
Code:1
x=int(input("請輸入一正整數: "))
for i in range (x+1):
if i**3==x:
print(x,"的立方根為",i)
break
else:
print("此正整數無整數立方根")
Code:2
x=int(input("請輸入一正整數: "))
for i in range (x+1):
while i**3==x:
print(x,"的立方根為",i)
break
else:
print("此正整數無整數立方根")
卡個, 想問老師break是不是只能用在條件語句後, 不能直接用在while裡面?
裡面使用 while 會影響到 break 的運作,break 只會跳出內層的 while 迴圈,不會跳出外層的 for 迴圈。
请问出现如下错误该如何处理呢?谢谢您。
Suggestion [3,General]: 找不到命令 LoopControl.py,但它确实存在于当前位置。默认情况下,Windows PowerShell 不会从当前位置加载命令。如果信任此命令,请改为
键入“.\LoopControl.py”。有关详细信息,请参阅 "get-help about_Command_Precedence"。
您的命令应该要输入:python LoopControl.py
试试看 ~
老師好跟您請教
n=0
for x in [0,1,2,3,]:
if x%2==0: # x 是偶數
continue
print(x)
n+=1
print('最後的 n:', n)
若最後是是n+=1,因為跑了2次,所以最後的n是2,那若改成n+=2跑出來卻是4,n不是就是跑2次應該永遠都為2?
不好意思這邊卡好久...
n+=2 的意思是 n=n+2, 跑兩次變成n=(n+2)+2, 一開始n=0, 代進去就是4了
感謝 @MrSilence 的說明,相當清楚 :)
0:55
break
break!
彭彭老師你好,請問在13:50的時候,為何剛開始要設定n=0不是x=0呢?
print(x)後,n=n+1 ,這個被印出來的值,為何可以被放入n呢?
n=n+1 是把 n 本身加 1,和 x 沒有關聯性。x 只是用來控制迴圈的運作。前面 n=0 給 n 一個初始值,不然沒辦法做後續的加法。
彭彭老師 我不太明白其他留言說的用RANGE(N+1) 。是只有在n=1 的時候才會發生錯誤嗎?發生錯誤的原因又是甚麼呢?
因為 n=1 的時候若使用 range(n) 就只會測試到 0,不會測試到 1,無法正確取得 1 開根號的結果 ( 也是 1 )
老師請問
n=0
for x in [0,1,2,3,4]:
if x%2==0:
continue
print(x)
n+=1
print("last number :", n)
印出結果:
1
3
last number : 2 ---------------------------- 請問為什麼不是3? 4也是偶數不是嗎?
continue是指可以無視下面print(x)與n+1的部分 ,由於x%2==0 是指找出x這個列中的偶數,已知數列中0,2,4為偶數,由於
if x%2==0:
continue
0,2,4 continue 直接回到了迴圈跑下個數字,不再做以下print(x)及 n+=1的處理
所以內部迴圈只印出了非偶數的 1, 3
而外部迴圈所跑的是 n 在這次迴圈中遇到非偶數而加一的結果
也就是非偶數沒有遇到continue回到迴圈跑下一個,而是繼續往下跑的事件
所以迴圈外部跑出的結果其實 n 只有加兩次1 (前面的 n= 0)
所以印出結果:
1
3 (這個是非偶數的繼續跑print(x)的部分
last number : 2 (這個是n遇到迴圈中非偶數的情況 +1)
一開始我也不是很懂
這部片重新看了三次理解了
新手這個粗淺的回答還請不吝指教
@@ririsuaki9707 非常感謝你!!
感謝 @Rachel chung 回應 :)
老師好,想問最後一個綜合範例,#用break強制結束迴圈時,不會執行else區塊
那比如說輸入12,為何還是會跳到else?
另外,如果把break拿掉,也是會有一樣的結果,那break在這邊是不是可以省略?
謝謝老師!
n=12 好像不是整數的平方根 所以 沒有整數i*i =12 所以不會有執行break 所以會跳到else
如果我沒理解錯老師的意思的話
感謝 @Zac Tu 的說明,很清楚哦 :)
但這邊你如果把break拿掉,會變成不管你的輸入是不是完全平方數,結果都會有顯示else:內的輸出,因為沒有break跳出迴圈
請問一下
要寫重複無限次除了
while True:
....
以外有沒有別種寫法
比如
while :
...
while True: 是很標準的寫法,任何可以被判斷成 True 的資料也可以,例如 while 1:
老師您好
想詢問一下,想問一下最後一個綜合範例,為什麼在定義i時需要用迴圈,是否能直接帶入,想問老師,以下如果這樣寫主要的邏輯問題在哪裡,再麻煩老師撥空回答,謝謝
n=int(print("請輸入數字"))
x=int(x)
x
1.在綜合範例之中,如果你今天輸入的數字是12,for i in range(12)的目的是執行0~11共12個數字的平方,去看看有沒有平方會等於12的
2.你用x
補用for 迴圈的寫法供參考:
n=int(input("請輸入數字:"))
for x in range(100):
if x*x==n:
print("整數平方根",x)
break
else:
print("沒有整數平方根")
感謝 @櫻花,散! 的詳細回應和分享哦 :)
打卡學習!
Go!
21:11
break強制結束時,不會執行else區塊
:)
謝謝老師的教學,不過似乎2倍速比較剛好XD
哈哈哈哈,好像很多人這麼說 ~~~~
彭彭老師好 想問一下老師說 像最後一個讓使用者輸入數字的範例(語法) 那個課程的名字是甚麼呢?! 想特別了解那段
你可以找找看系列課程的第二部或第三部吧:
th-cam.com/play/PL-g0fdC5RMboYEyt6QS2iLb_1m7QcgfHk.html
老師, 這是我照你課程練習做的語法, 目的是只顯示出開根號出來的數是整數, 若不是整數則顯示" 開根號出來的結果非整數", 但我試跑出現一個問題, 當我輸入為11時, 它還是會顯示開根號的結果為3.3166247903554 (非整數), 想問一下我的判斷試錯誤不知道在那裡。請老師幫忙看一下, 謝謝^^
print("請輸入一個數字:")
x=int(input())
y=x **0.5
z=y*y
if z%x==0:
print("開根號的結果為:",y)
else:
print("您輸入的數字開根號完不是整數")
開根號後再乘回去,不會和原來的數字完全一樣,小數運算都會有些許的誤差在零下十幾位的地方,所以判斷邏輯不能這樣寫。
我想問為什麼else不用tab?
因為前幾課看到if的應用範列,if和else是整齊貼邊,但這裡好像又不同用法。
else寫在外面是迴圈正常結束時執行,寫在裡面是if else的條件判斷,如果寫在裡面的話直到找到平方根前都會print沒有整數平方根
感謝 @康博元 的回應,確實如此。要看我們的 else 是要對應到哪一個層次的語法而定 ~
老師您好 我想請問最後一題(約21:26的地方)
為什麼else與if並排結果會不一樣 直觀感覺可行?
x=int(input("請輸入一個正整數:"))
for i in range(x):
if i*i==x :
print(i)
break
else :
print("沒有整數平方根")
這樣的話 else 是對應 if,在迴圈中每次都會執行。範例中的 else 是對應 for,只有在迴圈結束之後,才會執行一次 ~
@@cwpeng-course 意思是開根號不需要每次都執行else,前提之下是整數平方根,是等到結果不是整數平方根在來執行else就好了?
老师,我很奇怪每次到n=input就不行,其他都可以运行,除了这个。反复检查了没有出错可就是一直显示
File "loop-control.py", line 26
n=input("a numbet: ")
^
IndentationError: unexpected indent
上一个课程也是n=input不运行。
应该是因为程式码的前面多了一些空白哦 ~~~
老師您好,有個問題想請教您
1.
x=int(input('寫出一個數字: '))
for n in range(x):
x+=n
else:
print('列印出總和: ',x)
2.
sum=0
for w in range(11):
sum+=w
else:
print('總和: ', sum)
我的理解是
如果第一個程式碼輸入11,才會加總1至10(同程式碼二),可是為什麼會是1加到11呢@@?
我發現是x變數一開始是11, 所以x+=n→變成11開始加0+1+.......+10
感謝 @楓天下 的回應,確實是如此。
另外建立一個變數儲存總和,並且先指定為 0,就不會有這個問題嘍 ~
3:10 精華
:)
老師您好,想請教一下,我試著用range來練習,但是我的這個算式出來,為什麼印出來顯示的
最後的n: 3,而不是6呢?
謝謝老師!
n=0
for x in range(0,7):
if x%2==0:
continue
print(x)
n+=1
print("最後的n:",n)
因為當x=2,4,6,在continue那邊程式會直接跳到下一圈for,不會經過n+=1,也就是說只有在x=1,3,5的時候n會累加,所以等於3
@@20044442001 懂了,非常感謝!:)
感謝 @李晟豪 的回應哦 :)
最後的那個小程式如果輸入1答案是不是就錯了,因為1是1的平方根,所以是不是應該改成for i in range(n+1):
感謝補正和分享 :)
老師 請問可以把下面程式中的x都改成n嗎?(因為嘗試過,結果一樣)
n=0
for in [0,1,2,3,4]:
if x%2==0:
continue
print(x)
n+=1
print("最後的n:",n)
在這個程式中會是一樣的結果,但其實概念不一樣哦,所以不是任何程式都可以替換的。
x 是從列表中一一取得的值,n 則是我們自己控制從 0 往上加一,只是剛好列表中是 0, 1, 2, 3, 4 所以結果一樣 ~
@@cwpeng-course 謝謝老師的解答!
彭彭老師好
我想知道為什麼我跑了下面的程式,輸入4以外其他有平方根的正整數之後還是會跑出沒有"整數平方根"?
n=input("請輸入一個數字: ")
n=int(n)
for i in range(n):
if i**i==n:
print("整數平方根 ",i)
break
else:
print("沒有整數平方根")
也許你可以把程式執行結果列出來,我們比較好替你看喔
是 if i*i==n: 哦,只有一個 *
@@cwpeng-course 感謝老師的解答,沒問題了喔!