Python Basic

Python 入門

程式基本概念

Output(輸出)

基本輸出

            
            """
            # 內建函式 print()
            # 功能:輸出訊息、變數內容或資料值
            # print(參數:變數或資料值)

            設定函式呼叫步驟:
            1. 設定函式名稱
            2. 放一對小括 ()
            3. 放參數
            """

            # print(1個參數)
            # 輸出一個字串
            print('Hello, World!')

            # print(0個參數)
            # 單純換行
            print()

            # print(2個以上參數,逗號分隔)
            # 參數輸出時,彼此之間空一白
            print('Hello, World!', 'I am Robot 987.')

            # 可以輸出中文或多國語言文字
            print('哈囉!我是機器人 R987。')
            
        

輸出單行字串

            
            """
            可用單引號或雙引號設定字串
            必須成對
            """

            # 單引號 (字串單引號 vs. 英文單引號)
            print('What\'s going on?')
            # 雙引號
            print("What's going on?")
            
        

輸出不同類別

            
            """
            # 內建函式 type()
            # 功能:回傳變數或資料值的類別
            # type(參數:變數或資料值)
            """

            # 字串 str (string)
            print('123', type('123'))

            # 整數 int (integer)
            print(123, type(123))

            # 浮點數 float
            print(123.0, type(123.0))

            # 布林數 bool (boolean)
            # 例一:硬幣的正反面
            # 例二:電源的開和關
            print(True, type(True))
            print(False, type(False))
            
        

Input(輸入)

基本輸入

            
            """
            # 內建函式 input()
            # 功能:接收並回傳使用者輸入的資料
            # input(參數:建議設定字串)

            設定函式呼叫步驟:
            1. 設定函式名稱
            2. 放一對小括 ()
            3. 放參數
            """

            # input(0個參數)
            # 解題使用
            input()

            # input(1個參數)
            # 練習或小作品使用
            input('What is your name? ')
            
        

輸入轉整數

            
            """
            # 內建函式 int()
            # 功能:將「整數字串」或「浮點數」轉為整數
            # int(參數)
            """

            n = int(input('Enter a number: '))
            print(n + 10)
            
        

輸入轉浮點數

            
            """
            # 內建函式 float()
            # 將「浮點數字串」或「整數」轉為浮點數
            # float(參數)
            """

            n = float(input('Enter a number: '))
            print(n + 0.25)
            
        

字串格式化

            
            """
            字串格式化 (String Formatting)
            1. 小數格式:保留小數位數
            2. 對齊格式:(略,以後再講)

            f-string 設定步驟:
            1. 設定小寫 f
            2. 接一對字串單引號 '' 或雙引號 ""
            3. 視需要放字串常值
            4. 變數或運算式放在一對大括 {} 中
            5. 特定格式要在變數或運算式後接英文冒號 : 再設定
            6. 小數位數例如 .2f 保留小數後 2 位
            """

            # |N = | 是字串常值
            # |n| 是變數
            n = 3
            print(f'N = {n}')

            # |PI = | 是字串常值
            # |pi| 是變數
            # |.4f| 是設定保留小數後 4 位
            pi = 3.1415926
            print(f'PI = {pi:.4f}')
            
        

Math(計算)

七種算術運算

            
            # 七種算術運算
            """
            # ex(+).
            # 輸出算術運算結果
            """

            # 加(+)、減(-)、乘(*)、除(/)
            7 + 2
            7 - 2
            7 * 2
            7 / 2
            # 商數(//)、餘數(%)
            # % 其實是模數運算
            7 // 2
            7 % 2
            # 指數 (次方)
            7 ** 2
            
        

運算子優先序

            
            # 運算子優先序
            """
            # ex(+).
            # 小括 > 指數 > 乘除、商餘 > 加減
            # 先乘除後加減
            # 指乘除餘加減

            # 整數和浮點數計算結果,會得到浮點數
            例如 5 + 1.0 -> 6.0

            Python 的 3 種除法:
            1. /  : 一般除法,得到浮點數
            2. // : 整數相除,取商數
            3. %  : 整數相除,取餘數
            """

            a = 7 + 2 - 3 * 2
            print('a:', a)

            b = 8 + 4 / 2 - 5 * 2
            print('b:', b)

            c = 8 * 2 + 7 - 9 / 4 * 3 ** 2
            print('c:', c)

            d = (8 + -4) / 2 - 5 * 2
            print('d:', d)

            e = 27 % 5 * 6 ** 2 - 12 // 6
            print('e:', e)
            
        

兩數相加

            
            # 輸入兩個整數字串存到變數 a 和 b
            a = input('a: ')
            b = input('b: ')

            # 因為任何輸入都是字串
            # 所以必須使用 int() 轉成整數
            a = int(a)
            b = int(b)
            print('Sum:', a+b)
            
        

程式錯誤種類

            
            """
            # 題意:將 a 和 b 以算術加法合計

            1. 語法錯誤 Syntax Error  : 不可執行,錯誤類別一律為 SyntaxError
            2. 執行錯誤 Runtime Error : 可以執行,過程顯示錯誤訊息
            3. 語意錯誤 Semantic Error: 可以執行,不會顯示錯誤訊息,結果不符要求

            type(data): 回傳資料的類別
            int('987'): 將數字字串轉成整數 -> integer
            str(12345): 將整數轉成數字字串 -> string
            """

            a = input('a: ))
            b = (input(b: ')
            print(f'a = {a}', type(a))
            print(f'b = {b}', type(b))
            print(a + b)
            
        

數的次方

            
            # 數的次方
            """
            # ex(+).
            # 使用指數運算 **
            # 輸入 n 和 p
            # 計算 n 的 p 次方

            [輸入與輸出]
            n: 2
            p: 10
            n to the power of p is 1024
            """

            n = input('n: ')
            p = 0
            print(f'n to the power of p = {n}')
            
        

Variable(變數)

變數命名法

            
            """
            # 變數作用:存取資料
            # 存:Set, Save, Store, Conserve
            # 取:Get, Open, Fetch, Retrieve


            # 變數命名法:
            1. snake_case, my_full_name
            兩個以上單字,單字之間以底線連接

            2. camelCase,  myFullName
            兩個以上單字,第一個單字全小寫,第二個以上單字首字母大寫
            """

            my_full_name = 'Robot 987'
            print(my_full_name)
            
        

記憶體與變數

            
            """
            記憶體 vs. 變數
            資料盒 vs. 便利貼

            記憶體:如資料盒,是實際存放資料的空間
            變數:如便利貼,可以在不同資料盒間貼來貼去
            """

            a = 1
            print(a, type(a))
            print(id(a), '\n')

            a = 2
            print(a, type(a))
            print(id(a), '\n')

            a = '1'
            print(a, type(a))
            print(id(a), '\n')
            
        

姓名練習一

            
            # 姓名練習一
            """
            # ex(+).
            # 為每一句加上英文句點
            # 分別輸入姓和名,合併姓名存到 user_name
            """

            user_name = input('What is your name? ')
            print('1. Your name is', user_name)
            print('2. Your name is ' + user_name)
            print('3. Your name is %s' % user_name)
            print('4. Your name is {}'.format(user_name))
            print(f'5. Your name is {user_name}')
            
        

姓名練習二

            
            # 姓名練習二
            """
            # ex(+).
            # 保留上題完成的英文句點
            # 分別輸入姓和名,不得合併存到 user_name
            """

            first_name = ''
            last_name = ''
            print('1. Your name is', first_name)
            print('2. Your name is ' + first_name)
            print('3. Your name is %s' % first_name)
            print('4. Your name is {}'.format(first_name))
            print(f'5. Your name is {first_name}')
            
        

語法關鍵字

            
            # 不可設為變數
            """
            False      await      else       import     pass
            None       break      except     in         raise
            True       class      finally    is         return
            and        continue   for        lambda     try
            as         def        from       nonlocal   while
            assert     del        global     not        with
            async      elif       if         or         yield
            """

            global = 'universal'
            
        

簡單異常處理

            
            # 簡單異常處理
            """
            異常錯誤,其實就是執行錯誤

            try:
                可能會發生異常錯誤的程式
                以及相關程式
            except:
                發生異常錯誤時的處理
                可以寫 pass 表示略過
            """
            n = input('n: ')

            try:
                n = int(n)
                print(f'The square of n is {n**2}.')
            except:
                print(f"'{n}' is not an integer.")
            print(type(n)
            
        

Decision making(決策) - 決策式(分支或選擇結構)

if條件式

4 種 if 區段結構
  • (1) if
  • (2) if-else
  • (3) if-elif... (可以有多個 elif,elif 需要接條件式)
  • (4) if-elif...else
            
            print("Beebo: Let's hang out.\n")
            weather = 'sunny'
            if weather == 'sunny':
                print("Sure. Why not?")
            
        

if-else條件否則式

            
            print("Beebo: Let's hang out.\n")
            weather = input('How is the weather? ')
            if weather == 'sunny':
                print("Sure. Why not?")
            else:
                print("I want to stay at home.")
            
        

兩層巢狀決策

            
            furry = True
            small = True
            if furry:
                if small:
                    print("Cat")
                else:
                    print("Bear")
            else:
                if small:
                    print("Gecko")
                else:
                    print("Crocodile")
            
        

正負奇偶

比較運算子
  • == 是否相等/相同
  • != 是否不相等/不相同
  • >  大於
  • >= 大於等於
  • <  小於
  • >= 小於等於
            
            n = int(input('n: '))
            if n == 0:
                print('zero')
            elif n > 0:
                if n % 2 == 0:
                    print('positive even')
                else:
                    print('positive odd')
            elif n < 0:
                if n % 2 == 1:
                    print('negative odd')
                else:
                    print('negative even')
            
        

三層巢狀決策(三個孩子)

            
            # 三個孩子
            """
            # ex(+).
            # 增加第三個孩子的性別判斷
            # 在 Son 及 Daughter 後面,括號標註英文名字
            # 英文名字不可重複命名
            """

            first_born  = 'M'
            second_born = 'F'

            if first_born == 'M':
                print('1st child: Son')
                if second_born == 'M':
                    print('2nd child: Son')
                else:
                    print('2nd child: Daughter')
            else:
                print('1st child: Daughter')
                if second_born == 'M':
                    print('2nd child: Son')
                else:
                    print('2nd child: Daughter')
            
        

Repetition(重複) - for loop迴圈式(迴圈或重複結構)

輸出整數數列

            
            for i in range(5):
                print(i)
            
        

輸出指定符號

            
            for i in range(5):
                print('*')
            
        

三倍三顆星

            
            # 三倍三顆星
            """
            # ex(+).
            # i 為 3 的倍數時,輸出 ***,其他值則輸出 *

            # range(stop): 0 ~ stop-1
            # range(start, stop): start ~ stop-1

            1 *
            2 *
            3 ***
            4 *
            5 *
            6 ***
            """

            for i in range(1, 7):
                if False:
                    print(i, '***')
                else:
                    print(i, '*')
            
        

星號三角

            
            # 星號三角
            """
            # ex(+).

            # 正左直角
            i *
            1 1 *
            2 2 **
            3 3 ***
            4 4 ****
            5 5 *****

            # 倒左直角
            i *
            1 5 *****
            2 4 ****
            3 3 ***
            4 2 **
            5 1 *

            # 正右直角
            i - *
            1 4 1     *
            2 3 2    **
            3 2 3   ***
            4 1 4  ****
            5 0 5 *****

            # 倒右直角
            i - *
            1 0 5 *****
            2 1 4  ****
            3 2 3   ***
            4 3 2    **
            5 4 1     *

            # 金字塔形
            i - *
            1 4 1     *
            2 3 3    ***
            3 2 5   *****
            4 1 7  *******
            5 0 9 *********
            """

            for i in range(1, 6):
                print('*'*i)
            
        

偶數相加

            
            n = 10
            total = 0
            for i in range(1, n+1):
                if i % 2 == 0:
                    total = total + i
            print('Sum of even numbers:', total)
            
        

等差數列

            
            """
            # range(stop): 0 ~ stop-1
            # range(start, stop): start ~ stop-1
            # range(start, stop, step): start ~ stop-1, positive/negative step
            """

            for i in range(1, 10, 2):
                print(i)
            print()

            for i in range(10, 1, 2):
                print(i)
            print()

            for i in range(10, 1, -2):
                print(i)
            print()
            
        

區分作用命名

            
            # 區分作用命名
            """
            # ex(+).
            # 使兩個相同迴圈輸出同樣結果
            # 不得增加程式行數
            # range() 參數不得直接放整數或算式,但可放變數
            """

            i = 5
            for i in range(i):
                print('i:', i)
                i = i * 2
                print('Double of i =', i)

            print('-'*20)

            for i in range(i):
                print('i:', i)
                i = i * 2
                print('Double of i =', i)
            
        

for迴圈否則式

            
            for i in range(10):
                if i % 2 == 0:
                    continue
                print(i)
            else:
                print('***')
            
        

for迴圈否則式 (中斷迴圈)

            
            for i in range(10):
                if i % 2 == 0:
                    continue
                if i == 7:
                    break
                print(i)
            else:
                print('***')
            
        

Repetition(重複) - while loop迴圈式(迴圈或重複結構)

while布林變數

            
            isplus = True
            total = 0
            while isplus:
                total = total + 1
                print(total)
                if total == 10:
                    isplus = False
            
        

while布林值

            
            total = 0
            while True:
                total += 1
                print(total)
                if total == 10:
                    break
            
        

限定等差數列

            
            # 限定等差數列
            """
            # ex(+).
            # 維持使用一個條件式
            # 比較雙方維持 total 和 10
            # 調整迴圈內的程式流程

            # 比較運算子
            == 等於     != 不等於
            >= 大於等於  > 大於
            <= 小於等於  < 小於

            [輸入與輸出]
            step: 2
            2
            4
            6
            8
            10

            step: 3
            3
            6
            9

            step: 4
            4
            8
            """

            total = 0
            while True:
                total += 1
                print(total)
                if total == 10:
                    break
            
        

while條件式

            
            total = 0
            while False:
                total += 1
                print(total)
                if total == 10:
                    break
            
        

迴圈式差異

            
            print('# for loop')
            t = 0
            for i in range(10):
                t += 1
                print(t)

            print('-'*20)

            print('# while loop')
            t = 0
            while t < 10:
                t += 1
                print(t)
            
        

迴圈選取三角

            
            # 迴圈選取三角
            """
            # ex(+).
            # 依選項輸出星號三角
            """

            while True:
                print('1.正左直角 2.倒左直角')
                print('3.正右直角 4.倒右直角')
                print('5.金字塔形 q.離開迴圈')
                op = input('> ')
                if op == 'q':
                    break

                n = int(input('n: '))
                if True:
                    for i in range(1, n+1):
                        print(i)
                elif True:
                    for i in range(1, n+1):
                        print(i)
            
        

while迴圈否則式

            
            i = 0
            while i < 10:
                i += 1
                if i % 3 == 0:
                    i += 1
                print(i)
            else:
                print('***')
            
        

while迴圈否則式 (中斷迴圈)

            
            i = 0
            while i < 10:
                i += 1
                if i % 3 == 0:
                    i += 1
                elif i % 5 == 0:
                    break
                print(i)
            else:
                print('***')
            
        

錯誤處理

決策錯誤一

            
            # 決策錯誤一
            """
            # ex(+).
            # 排除錯誤
            # 避免增加程式行數
            """

            op = input('1.Create 2.Read 3.Update 4.Delete': )
            if op == 1:
                print(Create)
            elif op == 2:
                print(Read)
            elif op == 3:
                print(Update)
            elif op == 4:
                print(Delete)
            
        

決策錯誤二

            
            # 決策錯誤二
            """
            # ex(+).
            # 排除錯誤
            # 避免增加程式行數
            """

            n = input(int('n: '))
            if n % 2 == 0:
                print('It's an odd.')
            else:
                print('It's an even.)
            
        

決策錯誤三

            
            # 決策錯誤三
            """
            # ex(+).
            # 排除錯誤
            # 避免增加程式行數
            """

            print('L.Left')
            print('R.Right')
            print('U.Up')
            print('D.Down')
            input('> ') = op

            if op == 'L'
                print('Left')
            elif op == 'R'
                print('Right')
            elif op == 'U'
                print('Up')
            else op == 'D'
                print('Down')
            
        

決策錯誤四

            
            # 決策錯誤四
            """
            # ex(+).
            # 排除錯誤
            # 避免增加程式行數

            [輸入與輸出]
            How much would you like to deposit? 100
            Enjoy your mug!
            Have a nice day!

            How much would you like to deposit? 101
            You get a free toaster!
            Congratulations!
            Have a nice day!
            """

            deposit = input('How much would you like to deposit? '))
            freeToaster = False
            if int(deposit) > 100
                print('You get a free toaster!')
            freeToaster = true
            else:
                print('Enjoy your mug!')
            if freeToaster:
            print('Congratulations!')
            print('Have a nice day!')
            
        

迴圈錯誤一

            
            # 迴圈錯誤一
            """
            # ex(+).
            # 排除錯誤
            # 避免增加程式行數

            [輸入與輸出]
            n: 5
            *
            **
            ***
            ****
            *****
            """

            for i in range(input('n: '):
            print('*'*n+1)
            
        

迴圈錯誤二

            
            # 迴圈錯誤二
            """
            # ex(+).
            # 排除錯誤
            # 避免增加程式行數

            [輸入與輸出]
            n: 10
            2
            4
            6
            8
            10
            """

            n = int(input(n: '))
            for i in range(n, 2):
                if i % 2 = 0:
                print(i)
            
        

迴圈錯誤三

            
            # 迴圈錯誤三
            """
            # ex(+).
            # 排除錯誤
            # 避免增加程式行數

            [輸入與輸出]
            start: 10
            10
            9
            8
            7
            6
            5
            4
            3
            2
            1
            Time's Up!
            """

            countdown = input('start: ')
            While false:
                print(countdone)
                countdown -= 1
                if countdown === 0:
                    print('Time's Up!')
                break
            
        

迴圈錯誤四

            
            # 迴圈錯誤四
            """
            # ex(+).
            # 排除錯誤
            # 避免增加程式行數
            """

            total = 0
            while true:
                i = input('Integer (-1 to leave the loop): ')
                if i == -i:
                    break
                total += i
                print(i, total)
            
        

迴圈錯誤五

            
            # 迴圈錯誤五
            """
            # ex(+).
            # 排除錯誤
            # 避免增加程式行數

            [輸入與輸出]
            n: 3
            ----------
            n: 4
            4
            ----------
            n: 5
            5
            ----------
            n: 6
            6
            66
            ----------
            n: 7
            7
            77
            ----------
            n:
            """

            while True:
                n = input('n: ')
                if n == '':
                    break
                m = n / 2
                for i in range(1, n):
                    print(i*n)
                print('-'*10)
            
        

迴圈錯誤六

            
            # 迴圈錯誤六
            """
            # ex(+).
            # 排除錯誤
            # 避免增加程式行數

            [輸入與輸出]
            n: 3
            t: 0
            a: 1
            a: 2
            a: 3
            a: 4
            3
            ----------
            t: 1
            a: 2
            a: 4
            1
            ----------
            t: 2
            a: 3
            a: 5
            1
            ----------
            """

            n = int(input('n: '))
            for t in range(n):
                count = 0
                print('t:', t)
                while True:
                    a = input('a: ')
                    if a < n:
                        break
                    count = 1
                print(count)
                print('-'*10
            
        

異常錯誤修正

            
            # 異常錯誤修正
            """
            # ex(+).
            # 1. 分母為 0 則輸出 0
            # 2. 輸入資料存到變數 x
            # 3. 確保 num1 為整數
            # 4. 確保 range() 參數為整數
            # 5. 能轉整數就轉,不能則輸出原值
            """

            test_error = input('1, 2, 3, 4 or 5: ')
            if test_error == '1':
                # ZeroDivisionError
                incomes = (0, 140, 210, 0, 175, 280)
                for i in range(1, len(incomes)):
                    print(incomes[i] / incomes[i-1])
            elif test_error == '2':
                # NameError
                print(x * 3)
            elif test_error == '3':
                # TypeError
                num1 = input('The number: ')
                num2 = 2
                print(num1 + num2)
            elif test_error == '4':
                # TypeError
                for i in range(input('The stop number: ')):
                    print(i)
            elif test_error == '5':
                # ValueError
                data = ('1', 'a', 'A')
                for cell in data:
                    print(int(cell))
            
        

不分異常處理

            
            try:
                denom = int(input('Denominator? '))
                if denom % 2 == 0 and denom != 0:
                    x = 2

                part1 = 10 * (1 / denom)
                part2 = 5 + x * part1
                if denom <= 10:
                    result = 'Result: ' + str(part2)
                else:
                    result = 'Result: ' + int(part2)
                print(result)
            except:
                print('Something went wrong.')
            finally:
                print('Test completed.')
            
        

區分處理異常

            
            try:
                denom = int(input('Denominator? '))
                if denom % 2 == 0 and denom != 0:
                    x = 2

                part1 = 10 * (1 / denom)
                part2 = 5 + x * part1
                if denom <= 10:
                    result = 'Result: ' + str(part2)
                else:
                    result = 'Result: ' + int(part2)
                print(result)
            except ValueError:
                print('You must enter an integer.')
            except ZeroDivisionError:
                print('The denominator must not be 0.')
            except NameError:
                print('Do not enter odd numbers.')
            except TypeError:
                print('The denominator should be less than or equal to 10.')
            finally:
                print('Test completed.')
            
        

異常處理否則式

            
            try:
                denom = int(input('Denominator? '))
                if denom % 2 == 0 and denom != 0:
                    x = 2

                part1 = 10 * (1 / denom)
                part2 = 5 + x * part1
                if denom <= 10:
                    result = 'Result: ' + str(part2)
                else:
                    result = 'Result: ' + int(part2)
                print(result)
            except ValueError:
                print('You must enter an integer.')
            except ZeroDivisionError:
                print('The denominator must not be 0.')
            except NameError:
                print('Do not enter odd numbers.')
            except TypeError:
                print('The denominator should be less than or equal to 10.')
            else:
                print('No exceptions or errors.')
            finally:
                print('Test completed.')
            
        

基礎解題操作

哈囉!同學

            
            # 哈囉!同學
            """
            # ex(+).
            # python p1.py < d1.txt

            [輸入]
            Jane
            John

            [輸出]
            hello, Jane
            hello, John
            """

            while True:
                try:
                    s = input()
                    print('hello, ' + s)
                except EOFError:
                    break
            
        

奇數偶數

            
            # 奇數偶數
            """
            # ex(+).
            # python p1.py < d1.txt

            [輸入]
            8
            21
            7
            12

            [輸出]
            even
            odd
            odd
            even
            """
            
        

兩數相減

            
            # 兩數相減
            """
            # ex(+).
            # python p1.py < d1.txt

            [輸入]
            10 20
            30 12

            [輸出]
            -10
            18
            """
            
        

相差絕對值

            
            # 相差絕對值
            """
            # ex(+).
            # python p1.py < d1.txt

            [輸入]
            10 20
            30 12

            [輸出]
            10
            18
            """
            
        

任意數相加

            
            # 任意數相加
            """
            # ex(+).
            # python p1.py < d1.txt

            [輸入]
            5 9 1 6 8
            9 8 7
            1 7 3 8

            [輸出]
            29
            24
            19
            """
            
        

星號菱形

            
            # 星號菱形
            """
            # ex(+).
            # python p1.py < d1.txt

            [輸入]
            4
            5
            6

            [輸出]
            Must enter an odd number.
              *
             ***
            *****
             ***
              *
            Must enter an odd number.
            """