編譯和解釋
計算機執行源程序的兩種方式:編譯和解釋
- 源代碼:采用某種編程語言編寫的計算機程序,人類可讀
例如:result = 2 + 3
- 目標代碼:計算機可直接執行,人類不可讀 (專家除外)
例如:11010010 00111011
編譯
解釋
編譯和解釋
- 編譯:一次性翻譯,之后不再需要源代碼(類似英文翻譯)
- 解釋:每次程序運行時隨翻譯隨執行(類似實時的同聲傳譯)
靜態語言和腳本語言
根據執行方式不同,編程語言分為兩類
- 靜態語言:使用編譯執行的編程語言
C/C++語言、Java語言
- 腳本語言:使用解釋執行的編程語言
Python語言、JavaScript語言、PHP語言
執行方式不同,優勢各有不同
- 靜態語言:編譯器一次性生成目標代碼,優化更充分
程序運行速度更快
- 腳本語言:執行程序時需要源代碼,維護更靈活
源代碼在維護靈活、跨多個操作系統平台
程序的基本編寫方法
IPO
程序的基本編寫方法
- I:Input 輸入,程序的輸入
- P:Process 處理,程序的主要邏輯
- O:Output 輸出,程序的輸出
理解IPO
- 程序的輸入
文件輸入、網絡輸入、控制台輸入、交互界面輸入、內部參數輸入等
- 輸入是一個程序的開始
- 處理是程序對輸入數據進行計算產生輸出結果的過程
- 處理方法統稱為算法,它是程序最重要的部分
- 算法是一個程序的靈魂
- 程序的輸出
控制台輸出、圖形輸出、文件輸出、網絡輸出、操作系統內部變量輸出等
- 輸出是程序展示運算結果的方式
編程解決問題的步驟
- 分析問題:分析問題的計算部分,想清楚
- 划分邊界:划分問題的功能邊界,規划IPO
- 設計算法:設計問題的求解算法,關注算法
- 編寫程序:編寫問題的計算程序,編程序
- 調試測試:調試程序使正確運行,運行調試
- 升級維護:適應問題的升級維護,更新完善
"溫度轉換"問題分析
溫度刻畫的兩種體系
- 攝氏度:中國等世界大多數國家使用
以1標准大氣壓下水的結冰點為0度,沸點為100度,將溫度進行等分刻畫
- 華氏度:美國、英國等國家使用
以1標准大氣壓下水的結冰點為32度,沸點為212度,將溫度進行等分刻畫
分析問題
直接將溫度值進行轉換,溫度數值需要標明溫度體系,即攝氏度或華氏度,轉換后也需要給出溫度體系。
划分邊界
- 輸入:帶華氏或攝氏標志的溫度值
- 處理:根據溫度標志選擇適當的溫度轉換算法
- 輸出:帶攝氏或華氏標志的溫度值
輸入輸出格式設計
標識放在溫度最后,F表示華氏度,C表示攝氏度,82F表示華氏82度,28C表示攝氏28度。
設計算法
根據華氏和攝氏溫度定義,利用轉換公式如下:
C = ( F – 32 ) / 1.8 F = C * 1.8 + 32
其中, C表示攝氏溫度, F表示華氏溫度
"溫度轉換"實例編寫
#TempConvert.py TempStr = input("請輸入帶有符號的溫度值: ") if TempStr[-1] in ['F', 'f']: C = (eval(TempStr[0:-1]) - 32)/1.8 print("轉換后的溫度是{:.2f}C".format(C)) elif TempStr[-1] in ['C', 'c']: F = 1.8*eval(TempStr[0:-1]) + 32 print("轉換后的溫度是{:.2f}F".format(F)) else: print("輸入格式錯誤")
程序的格式框架
代碼高亮
縮進
縮進表達程序的格式框架
- 嚴格明確:縮進是語法的一部分,縮進不正確程序運行錯誤
- 所屬關系:表達代碼間包含和層次關系的唯一手段
- 長度一致:程序內一致即可,一般用4個空格或1個TAB
注釋
不被程序執行的輔助性說明信息
- 單行注釋:以#開頭,其后內容為注釋
# 這里是單行注釋
- 多行注釋:以'''開頭和結尾
''' 這是多行注釋第一行
這是多行注釋第二行 '''
命名與保留字
變量
用來保存和表示數據的占位符號
- 變量采用標識符(名字) 來表示,關聯標識符的過程叫命名
TempStr是變量名字
- 可以使用等號(=)向變量賦值或修改值,=被稱為賦值符號
TempStr = "82F" #向變量TempStr賦值"82F"
命名
關聯標識符的過程
- 命名規則: 大小寫字母、數字、下划線和中文等字符及組合
如: TempStr, Python_Great, 這是門Python好課
- 注意事項: 大小寫敏感、首字符不能是數字、不與保留字相同
Python和python是不同變量,123Python是不合法的
保留字
被編程語言內部定義並保留使用的標識符
- Python語言有35個保留字(也叫關鍵字)
if, elif, else, in
- 保留字是編程語言的基本單詞,大小寫敏感
if 是保留字,If 是變量
數據類型
供計算機程序理解的數據形式
- 程序設計語言不允許存在語法歧義,需要定義數據的形式
需要給10,011,101關聯一種計算機可以理解的形式
- 程序設計語言通過一定方式向計算機表達數據的形式
"123"表示文本字符串123,123則表示數字123
數據類型
10,011,101
- 整數類型: 10011101
- 字符串類型: "10,011,101"
- 列表類型: [10, 011, 101]
字符串
由0個或多個字符組成的有序字符序列
- 字符串由一對單引號或一對雙引號表示
"請輸入帶有符號的溫度值: "或者 'C'
- 字符串是字符的有序序列,可以對其中的字符進行索引
"請" 是 "請輸入帶有符號的溫度值: " 的第0個字符
使用[ ]獲取字符串中一個或多個字符
- 索引:返回字符串中單個字符 <字符串>[M]
"請輸入帶有符號的溫度值: "[0] 或者 TempStr[-1]
- 切片:返回字符串中一段字符子串 <字符串>[M: N]
"請輸入帶有符號的溫度值: "[1:3] 或者 TempStr[0:-1]
數字類型
整數和浮點數都是數字類型
- 整數:數學中的整數
32 或者 -89
- 浮點數:數學中的實數,帶有小數部分
1.8 或者 -1.8 或者 -1.0
列表類型
由0個或多個數據組成的有序序列
- 列表使用[ ]表示,采用逗號(,)分隔各元素
['F','f']表示兩個元素'F'和'f'
- 使用保留字 in 判斷一個元素是否在列表中
TempStr[-1] in ['C','c']判斷前者是否與列表中某個元素相同
語句與函數
賦值語句
由賦值符號構成的一行代碼
- 賦值語句用來給變量賦予新的數據值
C=(eval(TempStr[0:-1])-32)/1.8 #右側運算結果賦給變量C
- 賦值語句右側的數據類型同時作用於變量
TempStr=input("") #input()返回一個字符串,TempStr也是字符串
分支語句
由判斷條件決定程序運行方向的語句
- 使用保留字if elif else構成條件判斷的分支結構
if TempStr[-1] in ['F','f']:#如果條件為True則執行冒號后語句
- 每個保留字所在行最后存在一個冒號(:),語法的一部分
冒號及后續縮進用來表示后續語句與條件的所屬關系
函數
根據輸入參數產生不同輸出的功能過程
- 類似數學中的函數, y = f(x)
print("輸入格式錯誤") #打印輸出 "輸入格式錯誤"
- 函數采用 <函數名>(<參數>) 方式使用
eval(TempStr[0:-1]) # TempStr[0:-1]是參數
Python程序的輸入輸出
輸入函數 input()
從控制台獲得用戶輸入的函數
- input()函數的使用格式:
<變量> = input(<提示信息字符串>)
- 用戶輸入的信息以字符串類型保存在<變量>中
TempStr = input("請輸入") # TempStr保存用戶輸入的信息
輸出函數 print()
以字符形式向控制台輸出結果的函數
- print()函數的基本使用格式:
print(<擬輸出字符串或字符串變量>)
- 字符串類型的一對引號僅在程序內部使用,輸出無引號
print("輸入格式錯誤") # 向控制台輸出 輸入格式錯誤
評估函數 eval()
去掉參數最外側引號並執行余下語句的函數
- eval()函數的基本使用格式:eval(<字符串或字符串變量>)
>>> eval('"1+2"') '1+2' >>> eval('print("Hello")') Hello >>> eval("1") 1 >>> eval("1+2") 3