第一講 計算方法和計算思惟的一些基本原則python
這一整門課程將教大家怎樣進行計算機編程,怎樣發送計算機可以理解的指令,更重要的是讓大傢俱備計算思惟。算法
事實上計算機只作兩件事情:計算和記錄結果,以備後用。shell
每一臺計算機都能作一系列簡單的基本運算,咱們稱爲內置運算。它們是由製造商提供給計算機使用的基本元素。整個課程中一件關鍵的事情是學會如何創造咱們本身的計算方法。如何像計算機及同樣思考,也就是計算思惟。計算機很快,但一樣須要設計好的算法。計算機也有不能解決的問題。編程
計算思惟是什麼意思?→什麼是計算?→什麼是知識?→編程語言
知識細分爲兩個部分:函數
陳述性知識: 咱們能夠認爲是事實描述,並不總能幫助咱們找到新信息學習
程序性知識(操做方法): 給了咱們找到新信息的方法,方法即作某件事的一系列機械步 驟。程序性知識是那種指導咱們去找尋東西的方法和說明書操作系統
計算內任何計算僅需6種原語就夠了任何擁有這種屬性的計算機,解釋器,咱們叫作
圖靈完備的,那意味着任何你能夠用某種編程語言來計算的東西。並且任何東西只要對某一種語言是可計算的,對其餘任何語言也是可計算的 翻譯
陳述性知識雖然是許多知識的基石,但不是咱們須要的。咱們的目標就是獲取程序性知識,將問題分解爲機械性的步驟,而後想辦法將這些轉換成機械或計算機可以理解的東西,
以便計算機爲咱們執行這些步驟設計
創造「方法」是什麼意思:任何編程語言都提供一套原語集。它們是預先定義好的,是ALU中讓計算機工做的組件,因此咱們要在這些的基礎之上來構建。與此相似,任何編程語言都提供一種方法或者機制來將原語組合造成更加複雜但合法的表達式
咱們的目標是想要學習編程語言中的語法和語義。那些是構造合法的程序而且讓它們作有趣事情的詳細內容。可是咱們真正想要作的是學會如何使用那些基本元素,將咱們解決問題的"方法"翻譯成計算機可以真正用來爲咱們工做的形式。咱們想讓計算機來計算出感興趣的問題的答案,咱們想提供算法(步驟序列)使之成真。咱們想經過遵循咱們編程語言的語法和語義的構建方式來作這件事,而後把這些都組合起來,咱們就獲得了能讓它真正工做起來的概念。
咱們須要以聰明的方式進行些運算,因此那種計算式的思惟模式,將問題描述分解成"方法",即步驟的序列,這將很是有價值。
第二講 python 基礎知識
咱們想要將計算思惟應用於實踐中,將一個問題分解成一系列機械步驟,好讓咱們推導出問題的解決方案。並且咱們想將這樣的描述經過某種方式轉化成計算機也能夠工做的形式,從而爲咱們服務。那表示咱們須要一種描述這些步驟的方法,所以,編程語言便應運而生。編程語言定義了語法和語義,從而將計算的想法翻譯成爲機械步驟。語法描述瞭如何將合法表達式
組合在一塊兒。而語義描述了咱們如何從那些表達式中推導出相關的含義,從而解決那些咱們想解決的問題。
本門課程選擇了python做爲編程語言。這是一種解釋性語言。
程序:會包含一系列定義和命令
shell:shell只是一個程序,它容許用戶在其中輸入命令,這些命令會被計算機的操做系統直接執行
定義:定義是那些被計算和存儲的東西
命令:它們是指示解釋器去作某事的東西
本質上每一個程序都會操做一個數據對象,每一個數據對象都有一個類型,它定義了程序能夠對這個對象作的事情。咱們將看到,一般數據對象要麼是不可分割的標量或者是非標量,擁有一個能夠訪問的內部結構。
Python中有3種不一樣的標量對象:
整數,用來表示咱們所熟知的所有數字
浮點數,用來表示實數,即那些有一個小數點的數。
布爾的對象,一般也被稱做bool,它表示真和假。
type(object) 這是一個函數,用於獲取對象的類型
type(3) <type 'int'>
type(3.0) <type 'float'>
表達式由操做符和對象——數據對象——構成。它們能夠組合起來,發出指令作一些不一樣於它們自己的事情。
操做符:+, -, *, /, %, >, <, >=, <=, ==, !=, and , or, not
+:將兩個數相加,或將兩個字符串鏈接起來
-:將兩個數相減
/:將兩個數相除,兩邊都爲整數時結果爲整數(商),只要一邊爲浮點數結果是準確的
%:取餘數
() :能夠改變運算優先級
< :小於符號,比較兩個數,返回布爾值True或者Flase
> :大於符號,比較兩個數,返回布爾值True或者Flase
>=:大於等於符號,比較兩個數,返回布爾值True或者Flase
<=:小於等於符號,比較兩個數,返回布爾值True或者Flase
==:等於符號,比較兩個數是否相等,返回布爾值True或者Flase
!= :不等於符號,比較兩個數是否不相等,返回布爾值True或者Flase
and: 與操做,兩邊都爲真就返回真,其餘返回假
or:或操做,兩邊都爲假就返回假,其餘返回真
not:取反,右邊爲真返回假,右邊爲假返回真
類型(對象):將對象轉換成某種類型
例:int(3.9),將3.9轉換成整型 結果爲3
抽象化(賦值):經過一個名字把表達式的值存儲下來,而後在任何咱們須要的時候使用這個名字來獲得
=:用於賦值,將變量和值綁定起來
例 pi = 3.14159
radius = 11.2
area = pi * r * r
非標量的對象是一種複合物,也是咱們能得到的組成成分或組件。
字符串:str(string)類型的對象,字符串放在一對雙引號(" ")或單引號(' ')之中
例: 'abc'
'123'也是字符串和整型不捅
字符串操做:
3 * 'a' 返回的是 'aaa'
'ab + 'cd' 返回的是 'abcd' 字符串使用+號進行鏈接
'a' + str(123) 返回的是 'a123' 字符串只能和字符串鏈接
這裏的+的用法就是操做符重載,即便用相同的操做符對不一樣的對象作不一樣的事情
len(objec) 獲取對象的長度
例: len('abc') 返回3
索引
索引從0開始計數
'abc'[0] 返回字符串中的第一個字符 'a'
'abc'[2] 返回字符串中的第三個字符 'c'
'abc'[3] 若是超過字符串的長度就會報錯error
索引也能夠逆向查找
'abc'[-1] 返回字符串中的最後一個字符'c'
切片技術(Slicing)
'abc'[start:end]包含頭不包含尾
例 'abc'[1, 3] 返回 'bc''
python使用文件執行
在shell中直接輸入,會給咱們返回數據,可是從文件導入是不會返回的,文件中須要明 確指定輸出
print() 輸出語句:在shell中輸出括號內的東西(python3須要括號,爲了兼容儘可能加 上括號),在輸出前會計算好括號內的東西
例:print('abc') 輸出 abc
print('your name is' + name)
print(3+4) 輸出7
input()輸入語句: 在shell中讓用戶輸出數據,並返回用戶輸入的數據的字符串形式,可 以在括號中指定輸入提示
例:name = input("what is your name? > ) 會在shell中打印what is your name ? > 並 讓你輸入數據,輸入的數據會存入name中
若是須要輸入數字,須要作類型轉換int() 或者 float()
#:表示註釋,#後面的都是註釋
控制流:
經過條件判斷程序執行,語法:
if 表達式1:
elif 表達式2:
.....
else:
elif和else能夠省掉,根據需求添加,若是表達式1爲真就執行if下面的代碼塊不然 就跳過if的代碼塊判斷表達式2,若是表達式2爲真則執行elif下的代碼塊不然就跳 過elif,以此類推,若是全部表達式都爲假則執行else的代碼塊,執行完當前代碼塊 後就會結束條件判斷執行下一條指令。條件判斷語句中能夠嵌套條件判斷語句。
注:python中採用縮進與冒號搭配的形式來肯定代碼塊的從屬關係
例:
if x >2 :
print('x>2') #從屬if的代碼塊
print('....') #從屬if的代碼塊
elif x>1:
print('1<x<2') #從屬elif的代碼塊
else:
ptint('x<1') #從屬else的代碼塊
print('if end') #單獨的語句,條件判斷語句執行完後從這裏開始執行