寫給高中生的Python


要達到這個目的
一定要選擇一個直覺式的語言
Python應該是最好的選擇了


程式語言(Programming Language)


所有的具有計算功能的機器, 都是由一個CPU(Central Processing Unit)來負責運算的.
CPU只能接受有限的並且非常簡單的幾個命令, 但是他卻能很快並且正確地執行命令.

舉例來說, 若某一個CPU只會執行加法的運算, 如果你要出一個如下的題目:

把以下的結果全部加起來的和是多少?
  • 把100個1相加
  • 把200個2相加
  • 把300個3相加
  • ...
  • 把1000000個10000相加
  • 目前世界上最慢的CPU不需要1秒就把答案算出來了 但是你要如何叫CPU去執行這個計算呢? 目前的CPU都是二進位的計算器, 他只認得0和1兩個值. 所有輸入CPU的資料及命令都是二進制的值. 例如, 某一個CPU,
    • “加”這個命令可能是二進位值"0010"
    • "1"這個數字的二進位值是"0001"
    若要這個CPU去執行"1 + 1"的命令, 你要輸入

  • “0010"  (加)
  • "0001"  (1)
  • "0001"  (1)
當然, CPU輸出的結果也是二進制的. 我們稱這些要CPU執行的命令及資料為機器語言(machine language)或位元組碼(byte code). 一般來說, 我們需要CPU執行的不是簡單的運算, 所以不可能要我們直接輸入位元組碼給CPU. 為了方便, 我們必須要有一個類似人類的語言,而且它可以被翻譯成機器語言. 我們稱這樣的語言為程式語言(programming language).

程式語言 ( Basic, Fortran, Pascal, C, C++, Perl, Python, ..... )
        |
        |
機器語言 ( 組合語言, 根據CPU的架構(Intel, MIPS, ARM, ...)而有不同 )
        |
        |
     CPU


First Step



有兩種方式可以執行Python的程式語言,
  • interactive shell(互動式的介面)
  • 其中一種就是使用Python的interactive shell(互動式的介面).
    
    $ python
            Python 2.3.4 (#1, Oct 26 2004, 16:42:40)
            [GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2
            Type "help", "copyright", "credits" or "license" for more information.
            > > > print 'hello world'
            hello world
            >
    
    進入Python的interactive shell後, 你輸入一個Python的statement(敘述), Python立刻把結果印出來.
  • batch(批次)處理
  • 同樣的事情可以用另一種方式來完成, 把要執行的statements儲存為一個檔案然後讓直譯器一次執行所有的statements 使用任何一個文字編輯軟體產生以下內容並儲存起來為檔案helloworld.py:
    
    #!/usr/bin/python
    # Filename : helloworld.py
    print 'Hello World'
    
    接者, 輸入以下的命令去執行它
    
    $ python >helloworld.py
            Hello World
    
    如果你看到以上的結果...恭喜你! 你成功地執行了你的第一個Python程式.
所謂的“程式"(program), 就是一連串的敘述, 也就是一連串讓CPU幫你去執行的命令.
例如,:

print 'Hello World'

以上的程式只有一個敘述
以下的程式有兩個敘述:

print 'Hello World'
print 'Hello World'

很簡單吧! 所以, 寫程式就是要CPU執行一連串的敘述, 你要注意的就是怎麼樣去讓每一個敘述可以被CPU看得懂. 也就是要讓每一個敘述符合所用的程式語言的語法, 它才能被編譯成CPU能看得懂得語言.

以上提到的執行python方式要先啟用一個命令列(command-line)視窗然後呼叫直譯器.
為了方便使用, 你可以使用其他的圖形界面(user interface)的工具,例如:
  • IDLE(Integrated Development and Learning Environment)
  • Jupyter Notebook
這些工具包括了Python的interactive shell及方便除錯的設計

資料(data)的型別(type)與運算(operations)


寫程式的目的是要幫你處理資料(data), 為了要處理資料, 你必須把資料存在記憶體以供稍後處理.
變數(variable)是用來儲存資料, 如何決定變數儲存多少資料?
Python是物件導向的程式語言(object-oriented programming language, OOP), 所有的資料儲存都是以物件的方式
物件是由三個特徵組成:
  • 識別碼(identity)
  • 每個物件都有一個唯一的識別碼代表他在記憶體中的位置, 可以使用來id()取得物件的識別碼
  • 型別(type)
  • 型別決定這個物件可以做哪些運算及可以使用的是數值.,可以使用來type()取得物件的
  • 數值(value)
  • 數值表示這個物件儲存的資料

讓變數儲存一個值


大部分的程式語言會要求你你在使用變數前宣告變數的型別(type)
Python不同: 當你指定一個值給變數的時候, python會自動地決定變數的型別

>>> money = 100
>>> name = "Jerry"
>>> type(money)
<class 'int'>
>>> type(name)
<class 'str'>


標準的(基本的)資料型別


  • Numbers
  • String
  • List
  • Tuple
  • Dictionary

使用Numbers


val = 1
var = var+1
var = 2.76
floatvar = 6.4
var = floatva
Python把數進一步地分成以下四種:
  • integer(整數)
  • long integer(長整數)
  • 53924561L
  • floating point number(浮點數)
  • 3.23 , 52.3E-4
  • complex number(複數)
  • (-5+4j)

數的運算

  • +
  • -
  • *
  • /
  • **
  • power
  • %
  • Calculates the remainder of an integer division

數的設定

  • =
  • +=
  • -=
  • *=
  • /=

邏輯的判斷與流程的控制


迴圈(loop)的控制


串列(list)


程序(procedure)與函數(function)


程序(procedure)與函數(function)的差異:

  A function returns a value and a procedure just executes commands.
  The name function comes from math. It is used to calculate a value based on input.
  A procedure is a set of command which can be executed in order.
  In most programming languages, even functions can have a set of commands. Hence the difference is only in the returning a value part.

內建的(built-in)程序與函數




根據"A Byte of Python"的架構來設計這個課程


Chapter 4. The Basics(基本的語法)


  • Literal Constants(不變的文字)
    • number(數字)
    • 5, 1.23, 9.25e-3
    • string(字串)
    • 'This is a book'
  • number(數)
  • Python語法中使用的數有四種:
  • 字串
  • a sequence of characters.(由一串字母組成) 如何表示和使用字串:
    • 使用Single Quotes : '
    • 2個單引號中所有的字母都是它原本的意思, 不被改變. 'Quote me on this'
    • 使用Double Quotes : "
    • 和單引號的用法相同, 除了他可以包括單引號. "What's your name?"
    • 使用Triple Quotes : '''"""
    • 三引號可以包括多行的字串
      
      '''This is a multi-line string. This is the first line.
        This is the second line.
        "What's your name?," I asked.
        He said "Bond, James Bond.
      
    • escape sequence(跳脫序列): \
    • 一個跳脫序列由兩個以上的字元組成, 他在字串中的意義不像自原本身代表的意義. 例如\'在字串中表示單引號:
      ,code>
      'What\'s your name?'
      
以上的結果相當於"What's your name?". 另一個常用的跳脫序列是\n, 他表示要換一行.





















































  • 留言

    熱門文章