2019年6月28日 星期五

Python 練習-02

一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?
這題一開始繞不出來,以為只有一個解,運算式如下

Y^2=X+100
Z^2=X+100+168.......由於X+100=Y^2 ...所以可以寫成

Z^2=Y^2+168,所以當等式相等時就可以算出X


for y in range(1,50):
    for z in range(1,50):
        if (y**2+168==z**2):
            x=y**2-100
            print (f'X= {x} ,Y= {y} , Z= {z}')

#***************執行結果**********************

X= -99 ,Y= 1 , Z= 13
X= 21 ,Y= 11 , Z= 17
X= 261 ,Y= 19 , Z= 23
X= 1581 ,Y= 41 , Z= 43


質因數分解,是將一個正整數寫成幾個因數的乘積。
例如: 45 = 3,3,5

比較單純的想法是
1. 找出能把 X 整除的數
2. 把整除後的商,當作下一個被除數,重複第一個步驟,直到被除數等於1 為止


temp=[]
temp2=int(input('請輸入一個正整數 : '))
x=temp2
while True:
    if (x==1) :
        break
    for i in range(2,x+1,1):
        if (x%i==0):
            x=int(x/i)
            temp.append(i)
            break

print(f'{temp2} 質因數分解 = {temp}')

#***************執行結果**********************

請輸入一個正整數 : 90
90 質因數分解 = [2, 3, 3, 5]


求質數,質數就是除了1和該數自身外,無法被其他自然數整除的數
所以只要統計被整除的次數,就可以判斷是否為質數(不包含1,只能被整除1次的數)


for index in range(2,10,1):
temp=0
for x in range(2,index+1,1):
if(index%x==0):
temp=temp+1
if (temp<2 font="">
print(index)

#***************執行結果**********************

2
3
5
7



2019年6月25日 星期二

Python 練習-01


# e (數學常數) 歐拉數

歐拉數  e=1+1/1! + 1/2! +......+1/n!
首先要把 n! 先解決

n!= 1x2x3x......xn

先來驗證5!
5!=1x2x3x4x5 = 120


n = 1
for y in range(1,6,1):
    for i in range(1, y + 1):
        n = n * i
    print(f'{i}! = {n}')
    n = 1

#***************執行結果**********************

1! = 1
2! = 2
3! = 6
4! = 24
5! = 120


再來就是將每個階層倒數相加就可以了


n1 = 0
n = 1
for y in range(10, 101, 10):
    for i in range(1, y + 1):
        n = n * i
        n1 = n1 + (1 / n)
    print(f'{i} = {n1 + 1}')
    n1 = 0
    n = 1

#***************執行結果**********************

10 = 2.718281801146385
20 = 2.7182818284590455
30 = 2.7182818284590455
40 = 2.7182818284590455
50 = 2.7182818284590455
60 = 2.7182818284590455
70 = 2.7182818284590455
80 = 2.7182818284590455
90 = 2.7182818284590455
100 = 2.7182818284590455


#求最大公約數
可以使用 輾轉相除法

輾轉相除法就是要尋找最大公約數的兩個數字進行重複除法,直到最後得到餘數為0
下面例子:試找出40和64的最大公約數

64 ÷ 40 = 1 .. 24
40 ÷ 24 = 1 .. 16
24 ÷ 16 = 1 .. 8
16 ÷ 8 = 2 .. 0
得到餘數為0就可以了。最後一個餘數是8,因此40和64的最大公約數就是8。

這時就要用到無窮迴圈,注意break使用時機,避免無法跳出迴圈

m=int(input('請輸入第一個數字: '))
n=int(input('請輸入第二個數字: '))

while True:
    if(m>n):
        if (n==0):
            print(f'最大公約數是 {m}')
            break
        else:
            x=m%n
            m=n
            n=x
    else:
        if(m==0):
            print(f'最大公約數是 {n}')
            break
        else:
             temp=m
             m=n
             n=temp

#***************執行結果**********************

請輸入第一個數字: 16
請輸入第二個數字: 40
最大公約數是 8


求解一元二次方程式



import math

X1=0
X2=0

A=int(input('請輸入 X^2 :'))
B=int(input('請輸入X :'))
C=int(input('請輸入整數 :'))

if(A==0):
    X1=0
    X2=(-1*C)/B
    print(f'X={X2}')
else:
    b=-1*B
    X1=(b+math.sqrt(B*B-(4*A*C)))/(2*A)
    X2=(b-math.sqrt(B*B-(4*A*C)))/(2*A)
    print(f'X={X1} 或是 {X2}')

#***************執行結果**********************

請輸入 X^2 :1
請輸入X :7
請輸入整數 :12
X=-3.0 或是 -4.0


當 b^2-4ac 等於負值時程式會發生錯誤,因為負值無法開根號
避免錯誤可以用下列方式

1. 錯誤訊息處理

當 b^2-4ac 等於負值時程式會發出ValueError錯誤訊息,所以可以用 try 來攔截


    try:
        X1=(b+math.sqrt(B*B-(4*A*C)))/(2*A)
        X2=(b-math.sqrt(B*B-(4*A*C)))/(2*A)
    except ValueError:
        print ('輸入的數值有誤,無法計算,請重新輸入')
    else:
        print(f'X={X1} 或是 {X2}')


2. 邏輯判斷,當 b^2-4ac 等於負值時,就顯示訊息,並重新輸入


while True:
    A=int(input('請輸入 X^2 :'))
    B=int(input('請輸入X :'))
    C=int(input('請輸入整數 :'))
    if ((B*B-(4*A*C))>1):
        break
    else:
        print('輸入的數值有誤,無法計算,請重新輸入')


修改後的完整程式:

import math

X1=0
X2=0
while True:
    A=int(input('請輸入 X^2 :'))
    B=int(input('請輸入X :'))
    C=int(input('請輸入整數 :'))
    if ((B*B-(4*A*C))>1):
        break
    else:
        print('輸入的數值有誤,無法計算,請重新輸入')

if(A==0):
    X1=0
    X2=(-1*C)/B
    print(f'X={X2}')
else:
    b=-1*B
    try:
        X1=(b+math.sqrt(B*B-(4*A*C)))/(2*A)
        X2=(b-math.sqrt(B*B-(4*A*C)))/(2*A)
    except ValueError:
        print ('輸入的數值有誤,無法計算,請重新輸入')
    else:
        print(f'X={X1} 或是 {X2}')


2019年6月24日 星期一

Python 自學方案- Step(七)

List 列表,也可以說是陣列 Array,它的索引值0開始,List的語法如下

list1=[A,B,C,D,E,F,G] ,list1是串列變數名稱,串列的值放在 [  ] 中,以 , 分隔
第0位置為"A" ,第1位置為"B" 依此類推

1. 輸出list1 所有的值
2. 輸出list1 索引值 0~4 的值
3. 輸出list1 索引值5之後的值 (包含索引5)

list1=[1,2,3,4,5,6,7,8]
print(list1)
print(list1[0:4])
print(list1[5:])

#***************執行結果**********************

[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4]
[6, 7, 8]


串列的統計資料,最大值,最小值,總和,統計串列個數及修改串列
可以指定某個索引值將內容修改

list1=[10,12,14,11,9,16,15]
print(f'最大數= {max(list1)}')
print(f'最小數= {min(list1)}')
print(f'總  和= {sum(list1)}')
print(f'串列數= {len(list1)}')
print(f'修改前的串列= {list1}')
list1[4]=35
print(f'修改後的串列= {list1}')

#***************執行結果**********************

最大數= 16
最小數= 9
總  和= 87
串列數= 7
修改前的串列= [10, 12, 14, 11, 9, 16, 15]
修改後的串列= [10, 12, 14, 11, 35, 16, 15]


串列合併 ,將兩個或以上多個串列合併成一個串列
del 刪除,將串列中的值刪除或是整個串列刪除
List.append ,在串列的尾端增加值
insert,指定位置插入值
sort 排序方式會永久改變串列內容,由小到大排,reverse=True則是由大排到小


array1=[1,3,5]
array2=[2,4,6]
array3=array1+array2
print(array3)
del array3[3] #將索引3的值刪除
print(array3)
array3.append(10) #在串列的尾端增加10
print(array3)
array3.insert(3,99) #在串列位置3 插入99

print(array3)
array3.sort()
print(array3)
array3.sort(reverse=True)

print(array3)

#***************執行結果**********************

[1, 3, 5, 2, 4, 6]
[1, 3, 5, 4, 6]
[1, 3, 5, 4, 6, 10]
[1, 3, 5, 99, 4, 6, 10]
[1, 3, 4, 5, 6, 10, 99]

[99, 10, 6, 5, 4, 3, 1]


二維列表(二維陣列)
例如下列例子(0,0) 就是 "小明" ,(1,0) 就是 "小華"
 (0,2) 就是 86 ,依此類推
這樣就可以做成績的計算

array01=[['小明',90,86,77,89,0],
         ['小華',92,80,88,79,0],
         ['小王',88,60,79,90,0],
         ['小李',70,65,58,70,0],
         ]

array01[0][5]=sum(array01[0][1:5])
array01[1][5]=sum(array01[1][1:5])
print(array01[0])
print(array01[1])
print(f'{array01[0][0]}平均值: {array01[0][5]/4}')

#***************執行結果**********************

['小明', 90, 86, 77, 89, 342]
['小華', 92, 80, 88, 79, 339]
小明平均值: 85.5


2019年6月3日 星期一

Python 自學方案- Step(六)

if判斷式,可以依據程式不同條件的需求,來執行不同的程式碼,其語句如下:

if 判斷式:
    # 如果判斷式成立,就會執行這段程式碼,但記得縮排,否則將出現錯誤。

如下: 由於 Print("A>5")沒有縮排,執行後就會出現錯誤訊息

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a=10
>>> if a>15:
... print ("A>15")
  File "", line 2
    print ("A>15")
        ^
IndentationError: expected an indented block
>>>

判斷式符合,且 Print("A>5")有正確縮排,就會正常執行

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a=20
>>> if a>15:
...     print("A>15")
...
A>15

可以讓程式更完整,增加 else : ,如下:

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a=10
>>> if a>15:
...     print("A>15")
... else:
...     print("A<15 font="">
...
A<15 font="">
>>>

如果有多個判斷式,可以增加 elif: 如下

if 判斷式1:
    # 如果判斷式1成立,就會執行這段程式

elif 判斷式2:
    # 如果判斷式2成立,就會執行這段程式碼,依據需要可以有多個elif

else: 
    # 如果前面的判斷式都不成立,就會執行這段程式碼

我們可以寫一個計算折扣的程式
price=600
discount=0
if price>1000 :
    discount=0.9
elif price<=1000 and price>500:
    discount=0.95
else:
    discount=1

print(f'折扣後價錢= {price*discount}')

#***************執行結果**********************

折扣後價錢= 570.0


由於price=600,是固定的,要計算還要改程式,有點麻煩,可以把它修改成讓使用者自行輸入價錢後自動計算,如下
input 函式是讓使用者可以輸入,透過input輸入都會變成文字型態,所以要在之前增加 int(),轉成數字才能運算。

price=int(input('請輸入購買價格= '))

discount=0
if price>1000 :
    discount=0.9
elif price<=1000 and price>500:
    discount=0.95
else:
    discount=1

print(f'折扣後價錢= ${price*discount}')

#***************執行結果**********************

請輸入購買價格= 2000
折扣後價錢= $1800.0


我們可以寫一個稍微複雜的程式 ;計算BMI
利用 記事本 或是 Notepad++ 還是其他IDE軟體撰寫,存成BMI.py
在命令提示字元內執行 python BMI.py即可執行,程式碼如下
讓使用者輸入 身高及體重,計算後判斷BMI值,並將結果顯示於螢幕中

print('***************** BMI 計算 *****************')
height=int(input('請輸入身高(cm): '))
body_weight=int(input('請輸入體重(kg): '))
BMI=body_weight/((height/100)**2)
if BMI<=15:
    print(f'BMI= {BMI} , 非常嚴重的體重不足')
elif BMI<=16 and BMI>15 :
    print(f'BMI= {BMI} , 嚴重體重不足')
elif BMI<=18.5 and BMI>16 :
    print(f'BMI= {BMI} , 體重過輕')
elif BMI<=25 and BMI>18.5 :
    print(f'BMI= {BMI} , 體重正常')
elif BMI<=30 and BMI>25 :
    print(f'BMI= {BMI} , 體重過重')
elif BMI<=35 and BMI>30 :
    print(f'BMI= {BMI} , 肥胖I級(中等肥胖)')
elif BMI<=40 and BMI>35 :
    print(f'BMI= {BMI} , 肥胖II級(嚴重肥胖)')
else:
    print(f'BMI= {BMI} , 肥胖III級(非常嚴重肥胖)')

#***************執行結果**********************

***************** BMI 計算 *****************
請輸入身高(cm): 162
請輸入體重(kg): 56
BMI= 21.338210638622158 , 體重正常


程式還可以寫得更完整,如判斷使用者輸入的是否符合我們的需求cm 或是kg


2019年5月29日 星期三

Python 自學方案- Step(五)

python 數值運算,常用的運算符號
  • 加 - 兩個對象相加
  • - 減 - 得到負數或是一個數減去另一個數
  • * 乘 - 兩個數相乘或是返回一個被重複若干次的字串
  • / 除 - x除以y
  • % 餘數 - 返回除法的餘數
  • ** 次方 - x的y次方
  • //  取整除 - 返回商的整數部分
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x=400
>>> y=100
>>> z=20
>>> a=8
>>> b=x-y/z*8
>>> print(b)
360.0
>>>
>>> print(6/2*(1+2))
9.0
>>>

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> a=35
>>> b=20
>>> c=0
>>> c=a+b
>>> print (c)
55
>>> c=a-b
>>> print(c)
15
>>> c=a*b
>>> print(c)
700
>>> c=a/b
>>> print(c)
1.75
>>> c=a%b
>>> print(c)
15
>>> a=3
>>> b=4
>>> c=a**b
>>> print(c)
81
>>> a=32
>>> b=5
>>> c=a//b
>>> print(c)
6
>>>  

文字運算,文字也可以使用運算符號。例如

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a="Test"
>>> b=a*2
>>> print (b)
TestTest
>>> b=b+a
>>> print(b)
TestTestTest

也能使用下列運算方式
  • += 加法賦值運算 c += a 等效於 c = c + a
  • -= 減法賦值運算 c -= a 等效於 c = c - a
  • *= 乘法賦值運算 c *= a 等效於 c = c * a
  • /= 除法賦值運算 c /= a 等效於 c = c / a
  • %= 取模賦值運算 c %= a 等效於 c = c % a
  • **= 冪賦值運算符 c **= a 等效於 c = c ** a
  • //= 取整除賦值運算 c //= a 等效於 c = c // a
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a=35
>>> b=20
>>> c=0
>>> c=a+b          #C=55
>>> c+=a           #c=c+35 = 90
>>> print(c)
90
>>> c*=a           #c=c*35
>>> print(c)
3150
>>> c/=a           #c=c/a
>>> print(c)
90.0
>>> c=2
>>> c%=a           #c=c%a
>>> print(c)
2
>>> c**=a          #c=c**a = c**35
>>> print(c)
34359738368
>>> c//=a          #c=c//a
>>> print(c)
981706810
>>>

Python比較運算

以下假設變數 a為5,變數 b為6:
  • a==b 等於 - 比較對像是否相等 (a == b) 返回 False。
  • a != b 或是 a <> b 不等於 - 比較兩個對像是否不相等 (a != b) 返回 true.
  • a > b 大於 - 返回x是否大於y (a > b) 返回 False。
  • a < b 小於 - 返回x是否小於y。所有比較運算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價。 (a < b) 返回 true。
  • a >= b  大於等於 - 返回x是否大於等於y。 (a >= b) 返回 False。
  • a <= b 小於等於 - 返回x是否小於等於y。 (a <= b) 返回 true。
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a=5
>>> b=6
>>> print(a==b)
False
>>> print(a!=b)
True
>>> print(a>b)
False
>>> print(a
True
>>> print(a<=b)
True
>>>

Python邏輯運算
Python支持邏輯運算,假設變數 a為5,變數 b為6:
  • and :x and y ,如果 x 為 False,x and y 返回 False。 (a and b) 返回 5。
  • or :x or y ,如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值。 (a or b) 返回 5。
  • not :not x,如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 not(a and b) 返回 False
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a=2
>>> b=5
>>> print(a and b)
5
>>> print(a or b)
2
>>> a=0
>>> print(a and b)
0
>>> print(a or b)
5
>>>

2019年5月27日 星期一

Windows 10 1903 upgrade

眾所期待的半年度更新 Windows 10 1903 終於上線了!Windows 10 使用者現在可以透過 Windows Update 立刻檢查、下載並安裝「May 2019 Update」(即 Windows 10 1903),但是隨便更新有風險,請詳細閱讀微軟說明。
這次更新覺得還好,但是又不得更新,因為微軟將於 2019 年 11 月 12 日終止支援的 Windows 10 1803
下載網址:https://www.microsoft.com/zh-tw/software-download/windows10
安裝後的桌面如下,看起來很清爽
主要是增加一些布景主題
在輸入時 按下 WIN Key + . 會出現 顏文字
增加這個就有點無言....可以增加一些比較有用的功能嗎??

登入選項就增加不少方式

驗明正身,確定是 1903


2019年5月22日 星期三

Python 自學方案- Step(四)

python變數使用無需事先宣告,但是必須先給予值,如果沒事先給值就直接使用變數,就會出現錯誤並告知尚未定義變數,如下:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x # 嘗試使用一個未定義的變數
Traceback (most recent call last):
  File "", line 1, in
NameError: name 'x' is not defined
>>>

Python的字串可以使用雙引號或單引號包覆

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a=12
>>> b=12.3
>>> c="Hello World"
>>> d=True
>>> e=a*b

Python內建型態的資料型態有以下幾種

  • 數值型態(Numeric type) - int, float, bool (python 3.7沒有Long型態,由int取代)
  • 字串型態(String type)
  • 容器型態(Container type) - list, set, dict, tuple

可以用type()函數來確認目前變數型態,如上述變數 a~e

>>> type(a)
〈class 'int'〉
>>> type(b)
〈class 'float'〉
>>> type (c)
〈class 'str'〉
>>> type(d)
〈class 'bool'〉
>>> type (e)
〈class 'float'〉
>>> 

有時候,需要對資料內置的類型進行轉換,資料類型的轉換,只需要將資料類型作為函數名即可。

  • int(x) 將x轉換為一個整數。
  • float(x) 將x轉換到一個浮點數。
  • complex(x) 將x轉換到一個複數,實數部分為 x,虛數部分為 0。
  • complex(x, y) 將 x 和 y 轉換到一個複數,實數部分為 x,虛數部分為 y。x 和 y 是數字運算式。

>>> a=12.55
>>> b=int(a) #將a轉成Integer(整數)
>>> print(type(b),"= ",b)
=  12 #轉成整數後小數點會被無條件省略
>>> 
>>> c=float(b) # 將b整數轉為浮點數
>>> print(type(c),"= ",c)
=  12.0 #轉成整數後小數點會自動帶出
>>>

文字轉數字,除非文字本身都是數字型態,否則會出現錯誤訊息,如下

>>> a="0123456789"
>>> b=int(a)
>>> print(b)
123456789
>>> a="abcd"
>>> b=int(a)
Traceback (most recent call last):
  File "", line 1, in
    b=int(a)
ValueError: invalid literal for int() with base 10: 'abcd'
>>> a="1234qwer"
>>> b=int(a)
Traceback (most recent call last):
  File "", line 1, in
    b=int(a)
ValueError: invalid literal for int() with base 10: '1234qwer'
>>>  

0123456789的文字可以正常轉換為整數 123456789
但是 abcd 以及 1234qwer,因帶有文字所以無法轉換,出現錯誤訊息

變數不使用,也可以將其刪除(釋放),使用del()函數

>>> del(a) #將變數a刪除
>>> a
#由於變數a已經刪除,故使用相同變數名稱就會出現錯誤訊息
Traceback (most recent call last):
  File "", line 1, in
    a
NameError: name 'a' is not defined
>>>  

2019年5月21日 星期二

Python 自學方案- Step(三)

另一個迴圈指令 While ,它的基本形式如下

while 判断條件:
    執行命令……

滿足 while 判断條件時,才會執行While回圈內的指令,例如

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a=1
>>> while a<5: font="">
...     print(a)
...     a=a+1
...
1
2
3
4
>>>

當a 小於5時才會執行 print(a)  及 a=a+1
上面幾行程式就等於

>>> for i in range(1,5,1):
...     print(i)
...
1
2
3
4
>>>

由for 與while的例子可以發現,for的控制條件:包含初始值、讓迴圈結束的條件、更新值,通常都是寫在同一行裡面的。while則會將這些控制項,分散至迴圈內外。

迴圈有兩個命令來跳過循環:continue 及 break,continue 指令用來告訴Python跳過當前循環,然後繼續進行下一輪迴圈。break 則是用於跳出迴圈

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> i=0
>>> while i<10: font="">
...     i=i+1
...     if i% 2 ==0 or i==5:
...             continue      #如果i是偶數或是5,執行continue
...     print("value= ",i)
...
value=  1
value=  3
value=  7
value=  9
>>>

2019年5月20日 星期一

Python 自學方案- Step(二)

迴圈 For,重複執行某些指令時就可以利用For來實現

「for」和「in」是 Python 的關鍵字,兩者之間可以放置使用者自訂的變數,而「in」後則可接一個序列 (Sequence),串列 (list)、字串 (str)、元組 (tuple) 等皆是序列的一種。表示方式如下

for iterating_var in sequence:
         statements(s)
         break
else:

迴圈會依序從序列取得元素,並將元素指定給前面自訂的變數(此例為iterating_var),再執行迴圈裡的內容,直到序列每一元素都被取出過為止。
break 指令是強制由for迴圈跳出
else : else 中的指令在循環正常執行完(即 for 不是通过 break 跳出而中斷的)的情况下執行
例如下列在Python shell 中輸入下列指令

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> for i in range(5):    
...     print(i)
...
0
1
2
3
4

上面有使用到range()函数,range()可建立一个整數列表,一般用在 for 循環中
語法:range(start, stop[, step])
start:計數從 start 开始。沒指定數字初始值從 0 開始。例如range(5)等於range(0,5);
stop:計數到 stop 结束,但不包括 stop。例如:range(0,5)是[0, 1, 2, 3, 4]没有5
step:階層,沒指定數字初始值為1。例如:range(0,5)等於 range(0, 5, 1),step 也可以為負值

>>> for i in range(5):
...     print(i)
...     break
...
0

迴圈中出現break,就會強制跳出(結束)迴圈,所以只顯示第一個數字 0



>>> for i in range(5):
...     print(i)
... else:
...     print("Print OK!!")
...
0
1
2
3
4
Print OK!!

迴圈中使用 else: 其實也可以不需要,只要將要執行的指令寫在 迴圈外,也可以達到相同效果

使用雙重迴圈,來寫九九乘法表,如下:

for i in range(1,6):           #把6改成10
  for j in range(2,6):          #把6改成10
x=i*j
print(j , "X" , i , "=", x,end="\t")  #用Tab來區隔,避免擠在一起
  print()


C:\> python test2.py

2 X 1 = 2       3 X 1 = 3       4 X 1 = 4       5 X 1 = 5
2 X 2 = 4       3 X 2 = 6       4 X 2 = 8       5 X 2 = 10
2 X 3 = 6       3 X 3 = 9       4 X 3 = 12      5 X 3 = 15
2 X 4 = 8       3 X 4 = 12      4 X 4 = 16      5 X 4 = 20
2 X 5 = 10      3 X 5 = 15      4 X 5 = 20      5 X 5 = 25

一個階梯程式,每迴圈一次就增加一個 *
y="*"
for i in range(0,10):         #0~9階
print(y," ",i+1)         #顯示 * 及數字
y=y+"*"                   #增加一個* ,放進變數 y

如下:

C:\> python test3.py

*   1
**   2
***   3
****   4
*****   5
******   6
*******   7
********   8
*********   9
**********   10


另一個階梯程式,增加一個縮排階梯
y="*"
for i in range(0,10):         #設定0~9階
print(y)                    #顯示 *
y=y+"*"                  #增加一個* ,放進變數 y

for j in range (9,0,-1):    #設定9~1階,每次-1
print(y[0:j])           #顯示 *


C:\> python test4.py

*
**
***
****
*****
******
*******
********
*********
**********
*********
********
*******
******
*****
****
***
**
*