第一章:Python語言程序設(shè)計(jì)

關(guān)于課程:

  • 課程作者為北京理工大學(xué)教授嵩天
  • 課程視頻連接地址為中國大學(xué)Mooc平臺
  • 課程輔助平臺為Python123
  • 學(xué)習(xí)賬號是微信賬號登陸:昵稱為coke

1-1節(jié):程序設(shè)計(jì)的基本方法

\color{blue}{Content:}

  • 計(jì)算機(jī)與程序設(shè)計(jì)
  • 編譯和解釋
  • 程序的基本編寫方法
  • 計(jì)算機(jī)編程
  • 1-1單元小結(jié)

計(jì)算機(jī)與程序設(shè)計(jì)

計(jì)算機(jī)的概念:計(jì)算機(jī)是根據(jù)指令操作數(shù)據(jù)的設(shè)備,具有功能性和可編程性。功能性:是指對計(jì)算機(jī)的操作,表現(xiàn)為數(shù)據(jù)的計(jì)算,輸入輸出的處理和結(jié)果存儲等。可編程性:根據(jù)一系列指令自動地、可預(yù)測性、準(zhǔn)確的完成操作者的意圖。
計(jì)算機(jī)的發(fā)展:參照摩爾定律發(fā)展,按照指數(shù)形式發(fā)展。計(jì)算機(jī)硬件所依賴的集成電路規(guī)模參照摩爾定律發(fā)展。計(jì)算機(jī)運(yùn)行速度因此也接近幾何級數(shù)快速增長。計(jì)算機(jī)所能高效支撐的各類運(yùn)算功能不斷豐富發(fā)展。由此可見計(jì)算機(jī)的功能和性能是交替和交織發(fā)展的。
摩爾定律:Moore's Law是計(jì)算機(jī)發(fā)展歷史上最重要的預(yù)測法則,由Intel公司的創(chuàng)始人之一戈登摩爾1965年提出:單位面積集成電路上可容納晶體管的數(shù)量約每兩年翻一番。CPU/GPU、內(nèi)存、硬盤、電子產(chǎn)品價(jià)格等都遵循摩爾定律。
程序設(shè)計(jì):程序設(shè)計(jì)是計(jì)算機(jī)可編程的體現(xiàn),亦成為編程,深度應(yīng)用計(jì)算機(jī)的主要手段。程序設(shè)計(jì)已經(jīng)成為當(dāng)前社會需求量最大的職業(yè)技能之一。很多崗位即將被計(jì)算機(jī)程序接管,程序設(shè)計(jì)將是生存技能。
程序設(shè)計(jì)語言:是一種用于交互(交流)的人造語言,又稱為編程語言,程序設(shè)計(jì)的具體實(shí)現(xiàn)方式,程序語言比自然語言更簡單、嚴(yán)謹(jǐn)、精確。主要用于人類與計(jì)算機(jī)之間的交互。同樣的代碼計(jì)算機(jī)必須只有一種理解,這是程序設(shè)計(jì)語言必須要達(dá)到的效果。此外編程語言要告訴計(jì)算機(jī)其中數(shù)據(jù)的特性及特點(diǎn),使得計(jì)算機(jī)的操作更加精確。

編譯和解釋

在了解編譯和解釋之前,我們需要率先查看程序是如何執(zhí)行在計(jì)算機(jī)之上的。
編程語言的執(zhí)行方式:
1、源代碼,采用某編程語言編寫,人類可讀,如:result = 2 + 3,將運(yùn)算結(jié)果賦值給變量result
2、目標(biāo)代碼,計(jì)算機(jī)可直接執(zhí)行,人類不可讀(專家除外),例如:11101010 01010010

下面這段執(zhí)行的過程叫做編譯,執(zhí)行編譯過程的程序稱為編譯器:編譯可以理解為一次性翻譯,之后不需要源代碼(類似英文翻譯)

編譯.JPG

下面這段執(zhí)行的過程叫做解釋,執(zhí)行解釋過程的程序稱為解釋器:解釋可以理解為每次程序運(yùn)行時隨翻譯隨執(zhí)行(類似實(shí)時的同聲傳譯)
解釋.JPG

靜態(tài)語言和腳本語言:靜態(tài)語言是指使用編譯執(zhí)行的編程語言,C/C++語言、Java語言(一次性生成目標(biāo)代碼,優(yōu)化更充分,程序運(yùn)行速度更快)。腳本語言是指使用解釋執(zhí)行的編程語言,Python語言、PHP語言、JavaScript語言(執(zhí)行程序時需要源代碼,維護(hù)更加靈活,跨多個操作系統(tǒng)平臺)。

程序的基本編寫方法

IPO編程規(guī)范

I:input輸入,程序的輸入;P:press處理,程序的主要邏輯;O:output輸出,程序的輸出;
首先,需要理解IPO,輸入是什么?輸出是什么?如何從輸入達(dá)到輸出。
程序的輸入:文件輸入、網(wǎng)絡(luò)輸入、控制臺輸入、交互界面輸入、內(nèi)部參數(shù)輸入等。輸入是一個程序的開始
程序的輸出:經(jīng)過處理后,程序?qū)⒔Y(jié)果通過控制臺輸出、圖形輸出、文件輸出、網(wǎng)絡(luò)輸出、操作系統(tǒng)內(nèi)部變量輸出等。輸出是程序展示預(yù)算結(jié)果的方式
程序的處理:處理是程序?qū)斎霐?shù)據(jù)進(jìn)行計(jì)算產(chǎn)生輸出結(jié)果的過程;處理方法統(tǒng)稱為算法,它是程序最重要的部分,算法是一個程序的靈魂。

編程問題的解決步驟(計(jì)算為主,IPO編寫方法為輔):


IPO與解決示例問題的關(guān)聯(lián).JPG

關(guān)于算法的需求分析(計(jì)算為主,IPO編寫方法為輔):


關(guān)于算法的需求分析.JPG

完成上述步驟之后,才真正的設(shè)計(jì)到編寫程序:


編寫程序的后半部分步驟.JPG

最終呢,嵩天老師將編程的步驟凝練縮減為簡單的三步驟:


程序編寫的3個精簡步驟.JPG

計(jì)算機(jī)編程

編程能夠訓(xùn)練思維,編程體現(xiàn)了一種抽象交互關(guān)系,自動化執(zhí)行的思維模式,編程能夠\color{red}{增進(jìn)認(rèn)識},編程不是單純的求解問題,還要思考用戶體驗(yàn),執(zhí)行效率,編程能夠幫助程序員加深用戶行為及社會和文化認(rèn)識,編程能夠\color{red}{帶來樂趣},編程能夠提供展示自身思想和能力的舞臺,讓世界增加新的顏色、讓自己變得更酷、提升心里滿足。在信息空間里思考創(chuàng)新、將創(chuàng)新變位現(xiàn)實(shí)。編程能夠\color{red}{提高效率},能夠更好的利用計(jì)算機(jī)解決問題,顯著的提高工作、生活和學(xué)習(xí)效率,也是為理想的實(shí)現(xiàn)提供一種借助計(jì)算機(jī)的高效手段。編程帶來\color{red}{工作機(jī)會}程序員是信息時代最重要的崗位之一,國內(nèi)外對程序員崗位的缺口在百萬以上規(guī)模,計(jì)算機(jī)已經(jīng)滲透于各個行業(yè),就業(yè)前景非常廣闊。

計(jì)算機(jī)思維:區(qū)別邏輯思維(數(shù)學(xué)為代表)和實(shí)證思維(物理為代表)之外的第三種思維模式。

學(xué)習(xí)計(jì)算機(jī)編程的誤區(qū):


編程的誤區(qū).JPG

1-1單元小結(jié)

單元小結(jié),通過這部分內(nèi)容讓大家建立計(jì)算機(jī)、程序設(shè)計(jì)以及程序設(shè)計(jì)價(jià)值這樣一些基礎(chǔ)的認(rèn)識,為我們進(jìn)一步學(xué)習(xí)做好鋪墊:


總結(jié).JPG

1-2節(jié):Python開發(fā)環(huán)境配置(略)

1-3節(jié):示例1:溫度轉(zhuǎn)換

\color{blue}{Content:}

  • 溫度的兩種體系
  • 溫度轉(zhuǎn)換的需求分析
  • 問題分析
  • 設(shè)計(jì)算法
  • 輸入輸出
  • 舉一反三

溫度的兩種體系

1、攝氏度,中國等大多數(shù)國家使用,以1標(biāo)準(zhǔn)大氣壓下水的結(jié)冰點(diǎn)為0度,沸點(diǎn)為100度,將溫度進(jìn)行等分刻畫。
2、華氏度,美、英國等國家使用,以1標(biāo)準(zhǔn)大氣壓下水的結(jié)冰點(diǎn)為32度,沸點(diǎn)為212度,將溫度進(jìn)行等分刻畫。

溫度轉(zhuǎn)換的需求分析

1、將攝氏度轉(zhuǎn)換為華氏度
2、將華氏度轉(zhuǎn)換為攝氏度

問題分析

針對問題的計(jì)算部分進(jìn)行分析并理解,最終確定:
1、理解一:直接將溫度進(jìn)行轉(zhuǎn)換
2、理解二:將溫度信息發(fā)布的聲音或圖像形式進(jìn)行理解和轉(zhuǎn)換(例如將電視或者其他音頻媒介獲取到溫度的值,利用程序處理該場景的溫度轉(zhuǎn)換)
3、理解三:監(jiān)控溫度信息發(fā)布渠道,實(shí)時獲取并轉(zhuǎn)換溫度值(該理解需要與網(wǎng)絡(luò)的通信、爬蟲及很多的信息處理相結(jié)合)
這里我們采用理解1:直接將溫度值進(jìn)行轉(zhuǎn)換;

  • 溫度數(shù)值需要標(biāo)明溫度體系,及攝氏度或華氏度
  • 轉(zhuǎn)換后也需要給出另外的溫度體系標(biāo)明

在分析問題的基礎(chǔ)上,這里我們進(jìn)行IPO的\color{red}{邊界劃分},按照編程規(guī)范重構(gòu)該問題。

  • 輸入:攜帶攝氏或華氏的溫度值
  • 處理:根據(jù)溫度標(biāo)志選擇適當(dāng)?shù)臏囟绒D(zhuǎn)換算法
  • 輸出:攜帶攝氏或華氏的溫度值
    這樣我們就完成了IPO的邊界劃分,針對輸入輸出的格式這里需要設(shè)計(jì)并聲明一下,標(biāo)示放在溫度最后,F(xiàn)標(biāo)示華氏度,C標(biāo)示攝氏度,例如:82F表示華氏82度,28C表示攝氏28度

設(shè)計(jì)算法

根據(jù)華氏和攝氏的定義,利用轉(zhuǎn)換公式如下:

C=(F-32)/1.8
F=C*1.8+32+32

\color{red}{ 從問題的輸入輸出——到中間的處理過程,我們已經(jīng)分析清楚了,下面讓我們開始編程吧!}

#TempConvert.py
TempStr = input("請輸入帶有符號的溫度值")
if TempStr[-1] in ['f','F']:
    C = (eval(TempStr[0:-1]) - 32)/1.8
    print("轉(zhuǎn)換后的溫度是{:.2f}C".format(C))
elif TempStr[-1] in ['c','C']:  
    F = 1.8*eval(TempStr[0:-1]) + 32
    print("轉(zhuǎn)換后的溫度是{:.2f}F".format(F))
else:
    print("輸入格式錯誤")

舉一反三:

  • 輸入輸出的改變
    溫度數(shù)值與溫度標(biāo)示之間的關(guān)系設(shè)計(jì)可以改變:
    1、標(biāo)示改變放在數(shù)值之前:C82,F(xiàn)28
    2、標(biāo)示字符改變?yōu)槎鄠€字符:82Ce、28F
  • 計(jì)算問題的擴(kuò)展
    溫度轉(zhuǎn)換問題是各類轉(zhuǎn)換問題的代表性問題:
    1、貨幣轉(zhuǎn)換、長度轉(zhuǎn)換、重量轉(zhuǎn)換、面積轉(zhuǎn)換...
    2、問題不同,但是程序代碼是相似的

1-4Python元素語法分析

  • 輸入輸出
  • 數(shù)據(jù)類型
  • 語句與函數(shù)
  • 代碼分析
  • 1-4單元小結(jié)

輸入輸出

  • input()從控制臺獲得用戶的輸入
    1、input()函數(shù)的基本使用格式
    <變量> = input(<提示信息字符串>)
    2、輸入信息的格式
    用戶輸入的信息以字符串類型保存在<變量>中,如:TempStr = input("請輸入")#TempStr保存用戶輸入的信息

  • print()以字符形式向控制臺輸出結(jié)果的函數(shù)
    1、print()函數(shù)的基本使用格式
    print(<擬輸出字符串或字符串變量>)
    2、字符串類型的一對引號僅在程序內(nèi)部使用,輸出無引號
    如:print("輸入格式錯誤")#向控制臺輸出 輸入格式錯誤
    3、print()格式化的操作方法
    如:print("轉(zhuǎn)換后的溫度是{:.2f}C".format(C))#{:.2f}大括號標(biāo)示槽,后續(xù)變量填充到槽中


    輸出函數(shù)格式化.JPG
  • 除輸入輸出函數(shù)外,這里還有一個eval()評估函數(shù)

1、這個函數(shù)很有趣,功能為:去掉函數(shù)最外側(cè)引號并執(zhí)行余下語句的函數(shù)
2、


評估函數(shù).JPG

根據(jù)該10行代碼對Python語法元素進(jìn)行理解,清楚理解這10行代碼將能夠快速入門Python語言,接下來讓我們參考框架、逐行分析、逐詞理解:

1、下列代碼中的顏色,是編程的色彩輔助體系,不是語法要求;
2、縮進(jìn)是一行代碼開始前的空白區(qū)域,表達(dá)程序的格式框架;
3、 “#注釋”用于提高代碼可讀性的輔助文字,不被執(zhí)行;
4、命名與保留字,TempStr、C、F,這些字符成為變量,程序中用于保存和表示數(shù)據(jù)的占位符號,可以使用等號(=)向變量賦值或修改值,=被成為賦值符號 。比如TempStr=“82F”#向變量TempStr賦值“82F”。

關(guān)于命名需要注意以下問題:

  • 為變量關(guān)聯(lián)標(biāo)識符的過程叫做命名,命名規(guī)則:大小寫字母、數(shù)字、下劃線和漢字等字符及組合,如:TempStr,Python_Great,這是門Python好課
  • 注意事項(xiàng):大小寫敏感、首字符不能是數(shù)字、不與保留字相同,Python與python是不同變量,123python是不合法的變量命名。
  • 保留字,被編程語言內(nèi)部定義并保留使用的標(biāo)識符,Python一共33個保留字,比如:if,else,elif,in如果是大寫的IF可以作為變量使用,但是if不可以當(dāng)做變量使用,我們學(xué)習(xí)一門語言,至少需要了解涉及哪些單詞,下列的保留字就是python語言中的33個單詞:


    Python的33個保留字.JPG

數(shù)據(jù)類型

關(guān)于數(shù)據(jù)類型,比如10,111,101:

  • 首先如果不去定義該數(shù)字,可以標(biāo)示為二進(jìn)制也可以表示為十進(jìn)制,甚至是一段字符,計(jì)算機(jī)語言是一門精確的表達(dá)語言,因此我們需要用不同的方式指定想要表達(dá)的數(shù)據(jù)類型
  • 如果想要表達(dá)為字符串類型:“10111101”或者‘10111101’
  • 如果想要表達(dá)為整數(shù)類型:10111101
  • 如果想要表達(dá)為列表類型:[10,111,101]

\color{red}{字符串類型}
字符串的序號有兩種表示方式,正向遞增序號和反向遞減序號(用于字符串的索引和切片操作)

  • 索引:返回字符串中單個字符 <字符串或者字符串變量的后面>[M],其中M書寫為數(shù)值,不同數(shù)值代表不同含義
    例如:\color{green}{''請輸入帶有符號的溫度值:[0]'’}或者 TempStr[-1],其中[0]代表獲取數(shù)值,[-1]代表獲取溫度的標(biāo)示符號
  • 切片:返回字符串中一段字符子串 <字符串或者字符串變量的后面>[M:N]
    例如:\color{green}{''請輸入帶有符號的溫度值:[1:3]'’}或者TempStr[0:-1],[1:3]表示取出字符串中的第1、2個字符,但是不到第3個字符。[0:-1]表示從0開始但是不到字符串的最后一位,也就是剔除了字符串的最后一位,代碼中利用TempStr[0:-1]來截取用戶輸入的82F中的數(shù)值:82

字符串的表示方法.JPG

\color{red}{整數(shù)類型}

代碼中的數(shù)字例如32、1.8,32為整數(shù)類型(整數(shù)包含正整數(shù)和負(fù)整數(shù),如32、-32),1.8則是浮點(diǎn)數(shù)類型(浮點(diǎn)數(shù)是數(shù)學(xué)中的實(shí)數(shù),帶有小數(shù)部分,如1.8、-1.8、 -1.0):


Python的數(shù)據(jù)類型.JPG

\color{red}{列表類型}

列表類型.JPG

語句與函數(shù)

  • 賦值語句
  • 分支語句
  • 函數(shù)

賦值語句

首先我們先觀察這段代碼,其中有三行代碼都有賦值符號的產(chǎn)生,由賦值符號構(gòu)成的代碼,我們稱為賦值語句,用來給變量賦予新的數(shù)據(jù)值:
比如這行代碼:C = (eval(TempStr[0:-1]) - 32)/1.8#將右側(cè)的運(yùn)算結(jié)果賦值給變量C

語句與函數(shù)

分支語句

由判斷條件決定程序運(yùn)行方向的語句稱之為分支語句


分支語句.JPG
  • 代碼中if TempStr[-1] in ['f','F']:#這行代碼結(jié)尾處以冒號結(jié)尾,代表如果條件判斷為True則執(zhí)行冒號后的語句
  • 每個保留字所在行最后存在一個冒號(:),冒號屬于語法的一部分,不能省略
  • 冒號及后續(xù)縮進(jìn)用來表示后續(xù)語句與條件的所屬關(guān)系

何為函數(shù)

根據(jù)輸入?yún)?shù)產(chǎn)生不同輸出的功能過程

  • Python使用的函數(shù)類似數(shù)學(xué)的函數(shù),y=f(x)
    print("輸入格式錯誤")#打印函數(shù)輸出”輸入格式錯誤“
  • Python函數(shù)采用<函數(shù)名>(<參數(shù)>)方式使用
    (eval(TempStr[0:-1])#這里TempStr[0:-1]是函數(shù)的參數(shù)

代碼分析

#這是單行注釋
···
這是多行注釋
這是多行注釋
···
#TempConvert.py,這是一行注釋
#使用input函數(shù)從控制臺獲取一個信息,以字符串形式賦值給變量TempStr
TempStr = input("請輸入帶有符號的溫度值")
#保留字表達(dá)分支語句,用保留字in判斷最后一個字符是否在列表中
if TempStr[-1] in ['f','F']:
#將TempStr字符串去除最后一位符號并使用eval評估運(yùn)算后轉(zhuǎn)換為數(shù)字類型,從而參與公式運(yùn)算并將結(jié)果賦值給變量C
    C = (eval(TempStr[0:-1]) - 32)/1.8
#將變量C的結(jié)果格式化為保留小數(shù)點(diǎn)后兩位后輸出
    print("轉(zhuǎn)換后的溫度是{:.2f}C".format(C))
#關(guān)鍵字elif是分支語句,用保留字in判斷用戶輸入的信息是否在列表內(nèi)
elif TempStr[-1] in ['c','C']:  
#將TempStr字符串去除最后一位符號并使用eval評估運(yùn)算后轉(zhuǎn)換為數(shù)字類型,從而參與公式運(yùn)算并將結(jié)果賦值給變量F
    F = 1.8*eval(TempStr[0:-1]) + 32
    print("轉(zhuǎn)換后的溫度是{:.2f}F".format(F))
#根據(jù)以上兩個分支語句判斷,如不符合以上分支的初始華條件,說明無法正常獲取溫度范圍,則給予錯誤提示
else:
    print("輸入格式錯誤")

1-4單元小結(jié)

1-4單元小結(jié).JPG
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容