練習1:
求100以内所有的奇數之和。
奇數就是不能被2整除的數。用代碼來說就是滿足
i % 2 != 0
的數字。是以程式如下:
i=0
result=0
while i<100:
i+=1
if i % 2 != 0 :
print(i)
result+=i
print('result=:',result)
練習2:
求100以内所有7的倍數之和,以及個數。
求7的倍數之和,首先要求出7的倍數,能整除7的就是7的倍數,即
i % 7 ==0
,再進行求和計算。
列印個數,就需要一個計數器,每當求出一次7的倍數,就加一。程式如下:
i=0
result=0
count=0
while i < 100 :
i+=1
if i % 7 ==0 :
print(i)
result+=i
count+=1
print('100以内7的倍數之和:',result)
print('100以内7的倍數的個數:',count)
練習3:
水仙花數是指一個 n 位數(n≥3 ),它的每個位上的數字的 n 次幂之和等于它本身(例如:13 + 53 + 3**3 = 153)。
求1000以内所有的水仙花數。
根據題目描述,将其每位數字的n次幂相加等于其本身的就是水仙花數。那麼怎麼得到每位的數字呢,可以利用餘數和商的思想來考慮一下。
當一個三位數能整除100的時候,得到的商就是它的百位數
a=n//100
,對100取餘之後,得到的就是它的十位和個位數,将其對10整除,得到的結果就是十位數
b=(n%100)//10
,以此類推,得到個位數字
c=n%10
。程式如下:
n=100
while n<1000 :
a=n//100 #百位數字
b=(n%100)//10 #十位數字
c=n%10 #個位數字
if a**3+b**3+c**3==n :
print(n)
n+=1 #更新while循環的條件
練習4:
擷取使用者輸入的任意數,判斷其是否是質數。質數是隻能被1和它自身整除的數,1不是質數也不是合數。
如果任意數字比較難以了解的話可以結合具體的數字來想,假如給你一個數字10,讓你判斷它是否是質數,你會怎麼去判斷呢?首先要列出1~10的所有數字,再依次去跟10做除法運算,如果除了1和10之外還有數字能夠被10整除,則10不是質數。轉化成代碼語言就是
if n % i ==0
,
print(n,'是質數')
。具體程式如下:
n=int(input('請輸入一個大于1的數字:'))
i=2
while i<n :
# 如果n能夠被i整除,則n不是質數
if n % i ==0 :
print(n, '不是質數')
else:
print(n, '是質數')
i+=1
執行結果為:

顯然這個結果不是我們想要的,那問題出在哪裡呢?
可以看一下,結果輸出了8個,正好是10整除了從2到9所有的數字,然後每做一次整除就列印了一個結果。那麼是否可以将列印寫在循環外面呢?可以嘗試一下,結果有同學就會發現,當将print語句寫在外面,就會不知道什麼時候列印是質數,什麼時候列印不是質數,是以在這裡老師再引入一個變量:flag,通過flag的值來傳遞資訊。程式如下:
n=int(input('請輸入一個大于1的數字:'))
i=2
flag=True
while i<n :
#如果n能夠被i整除,則n不是質數
if n % i ==0 :
#不是質數則改變flag的值
flag=False
i+=1 #i為2到n的所有的值。
#循環結束之後,如果flag為true則n是質數
if flag :
print(n,'是質數')
#如果flag為false則n不是質數
else :
print(n,'不是質數')
快來看看自己掌握了多少?勤加練習,并結合老師的思路開拓自己的想法,加油吧!
第十七節:循環嵌套列印三角形矩陣