PYTHON程式語言的學習-2

在這個講次當中我們準備了3個程式來加深各位同學對於迴圈以及邏輯判斷的應用。
  1. 範例程式1
  2. 在這個範例程式中我們將學習,如何巧妙地運用邏輯判斷和迴圈,算出兩個整數之間的所有質數。 這是我們第一個範例程式,在程式當中我們先學到


    lower=900
    upper=1000
    print("finding prime numbers between lower and upper")
    for num in range(lower,upper):
        K=0
        for i in range(2,num):
            if(num%i)==0:
                K=1
                break
        if(K==0): print(num)
    ==========================螢幕上的輸出============
    finding prime numbers between lower and upper
    907
    911
    919
    929
    937
    941
    947
    953
    967
    971
    977
    983
    991
    997
    
    • line 1: lower=900 \(\rightarrow\) 迴圈的下限
    • line 2: upper=1000 \(\rightarrow\) 迴圈的上限
    • line 4: 注意range用upper+1才能達到1000
    • line 4~10: 外迴圈\(900 \le num \le 1000\),跑過這個範圍內的 所有num,考察num是否是質數。
    • line 6~9: 內迴圈:考察所有比num還要小的所有整數是否能夠整除num
    • line 5, 8; K 是一個指標變數,當程式執行到line-10, 如果K=0就打印出這個質數,K=1表示num不是質數,不需打印。
    • line 7; if(num%i == 0): \(\rightarrow\) num被i除餘數為0, 表示num不是質數,令K=1。
    在進入下一個範例程式之前我們先看下面兩個簡短的小程式,介紹while迴圈和Input輸入的用法。
    while迴圈
    S=0    #累加變數
    i=1    #索引變數
    while i <= 100:
        S+=i
        i+=1   #改變索引變數值
    print(S)
    ================output============
    5050
    
    score=input('input student score(0~100):')
    print('type of score=',type(score))
    print('student score=',score,end='-->')
    if(int(score) < 60):
        print('fail')
    else:
        print('pass')
    ================output============
    input student score(0~100):77
    type of score= 
    student score= 77-->pass
    input student score(0~100):55
    type of score= 
    student score= 55-->fail
    



  3. 範例程式2
  4. 這是我們第2個範例程式,在這個程式中,你將學會檢查某年是否為閏年。 我們將使用嵌套的if ... else來解決這個問題。閏年就是公元年可以被4整除但不能被100整除,或者公元年可以被400整除。例如, 語法重點


    while True:
        year=input('input a year (Enter 0 to stop):'); year=int(year)
        if(year == 0):
            print('Youu enter 0 to STOP.')
            break
        if(year % 4 == 0):
            if(year % 100 == 0):
                if(year % 400 == 0):
                    print(year,' 是閏年(2)')
                else:
                    print(year,' 是平年(2)')
            else:
                print(year,' 是閏年(1)')
        else:
            print(year,' 是平年(1)')
    ==========================螢幕上的輸出============
    input a year (Enter 0 to stop):1991
    1991  是平年(1)
    input a year (Enter 0 to stop):1996
    1996  是閏年(1)
    input a year (Enter 0 to stop):1900
    1900  是平年(2)
    input a year (Enter 0 to stop):2000
    2000  是閏年(2)
    input a year (Enter 0 to stop):0
    Youu enter 0 to STOP.
    
    • line-1: while 迴圈, True: 永不止歇的迴圈,除非
    • line-2: 用input輸入year
    • line-3: year=int(input("Ent 將輸入的字串轉換為整數,year是整數變數。
    • line-6: 輸入的年份year=0時就中斷(break)迴圈的執行
    • line-7,17: 最外層的邏輯判斷:year是否能夠被4整除,若不能被4整除就一定是平年(1)[line-16]。
    • line-8,14: 中間層的邏輯判斷: year能被4整除的情況下再確定year能否被100整除,如果不能被100整除就確定為閏年(1):line-14
    • line-9,12:最內層的邏輯判斷: year能被100整除的情況下再確定能否被400整除,若不能被400整除那麼就是平年(2)[line-12],否則就是閏年(2)[line-10]。



  5. 範例程式3
  6. 這是我們第3個範例程式,在程式當中我們學到,從外部輸入三個整數分別存儲在num1,num2和num3中。 我們使用if ... elif ... else來查找三個中最大的一個。


    num1=int(input("Enter num1:"))
    num2=int(input("Enter num2:"))
    num3=int(input("Enter num3:"))
    print('3 integers;',num1,num2,num3)
    if(num1 >= num2 and num1 >= num3):
        largest=num1
        print('case 1 num1(=',num1,') is the largest.')
    elif(num2 >= num1 and num2 >= num3):
        largest=num2
        print('case 2 num2(=',num2,') is the largest.')
    else:
        largest=num3
        print('case 3 num3(=',num3,') is the largest.')
    print('The largest in the set {',num1,num2,num3,'} is ',largest)
    
    ==========================螢幕上的輸出============
    nter num1:23
    Enter num2:109
    Enter num3:76
    3 integers; 23 109 76
    case 2 num2(= 109 ) is the largest.
    The largest in the set { 23 109 76 } is  109
    =================================================
    
    • line-1~3: 從外部輸入三個整數分別存儲在num1,num2和num3中
    • line-5: if (num1 >= num2) and (num1 >= num3): and=且,>=大於等於
    • line-8: 除了if ... else 的判斷之外,可再加入 elif
    • line-7,10,13分別代表三種可能的情況case 1, case 2, case 3。