第一章 Game over 代替 hello world
1.1 python語言的特點:
,易于使用
,功能強大
,面向物件
,免費且開源
,膠水語言,可以和c等良好配合
1.2 Game over 代替 hello world
1.2.1 經典的print陳述句
1 print ("Game over") 2 3 input ("press enter key to exit")
注意:python語言是區分大小寫的,因此print寫成Print或PRINT,python語言是報錯的,同理,變數abd和ABC對python來說是兩個不同的變數,
input()陳述句提供了用戶互動的功能,
1.2.2 使用注釋:注釋是讓程式清晰易讀的重要方法,"#"開頭的是單行注釋,用"""三個雙引號或單引號包括的是多行注釋.
1 # GAME OVER
2 #演示print()的用法
3 print ("Game over")
4
5 input ("press enter key to exit")
第二章 型別、變數簡單的互動
- 三重引號字串,轉義序列
- 數學運算
- 計算機記憶體中存盤資料
- 變數訪問和處理資料
- 獲得用戶輸入的資訊并構建出簡單的互動程式
2.1使用引號和字串
2.1.1 三重引號和雙重引號一樣,引號中包括起來的內容將解釋為字串型別,引號的使用不區分引號或雙引號,但是雙重引號所包括的內容是不能跨越多行的,在這種情況下,要使用三重引號來定義需要的內容,
1 #game_over - version 2 2 #演示引號在字串中的用法
#在引號中使用引號,只有字串中的引號顯示.最外的引號僅起到括定字串的作用. 3 print ("Program 'Game Over' 2.0") 4 5 print ("same","message","as before") # 一次性傳遞給print()多個值,各個值間用,分開,可以一次性列印出來.print()默認各值之間用空格分隔 6 7 print ("Just", 8 "a bit", 9 "bigger") 10 11 print ("here",end=" ")# end= " ",指定print的行結束符是用空格,這個陳述句執行完后,不換行,列印一個空格.默認的行結束符是換行符.也可以指定其他的字符. 12 print ("it is ...") 13 14 print (""" 15 16 ________ ________ _____ ______ _______ 17 |\ ____\|\ __ \|\ _ \ _ \|\ ___ \ 18 \ \ \___|\ \ \|\ \ \ \\\__\ \ \ \ __/| 19 \ \ \ __\ \ __ \ \ \\|__| \ \ \ \_|/__ 20 \ \ \|\ \ \ \ \ \ \ \ \ \ \ \ \_|\ \ 21 \ \_______\ \__\ \__\ \__\ \ \__\ \_______\ 22 \|_______|\|__|\|__|\|__| \|__|\|_______| 23 24 25 26 ________ ___ ___ _______ ________ 27 |\ __ \|\ \ / /|\ ___ \ |\ __ \ 28 \ \ \|\ \ \ \ / / | \ __/|\ \ \|\ \ 29 \ \ \\\ \ \ \/ / / \ \ \_|/_\ \ _ _\ 30 \ \ \\\ \ \ / / \ \ \_|\ \ \ \\ \| 31 \ \_______\ \__/ / \ \_______\ \__\\ _\ 32 \|_______|\|__|/ \|_______|\|__|\|__| 33 34 38 """) 39 40 input ("\n\npress enter key to exit")
運行結果如下

2.2 轉義字符
轉義序列(escape sequence)是可以在字串中使用的特殊字符,由一個"\"和緊跟其后的一個字符組成.它使客戶能夠更靈活的控制文本顯示,
| 序列 | 說明 |
| \\ | 列印一個反斜杠 |
| \' | 列印一個單引號(即使已用做字串括號) |
| \" | 列印一個雙引號(即使已用做字串括號) |
| \a | 讓電腦蜂鳴器鳴一聲 |
| \t | 列印一個制表符 |
| \n | 執行一個換行操作 |
1 #演示轉義序列 2 print ("\t\t\tFancy Credits") 3 4 print ("\t\t\t \\ \\ \\ \\ \\ \\ \\ \\ ") 5 print ("\t\t\t by") 6 print ("\t\t\tMichael Dawson") 7 print ("\t\t\t \\ \\ \\ \\ \\ \\ \\ \\ ") 8 print ("\nSpecial thanks goes out to:") 9 print ("My hair stylist,Henry \'The Great,\'who never says \"can\'t.\"") 10 11 print ("\a") #響一下電腦蜂鳴器 12 13 input ("\n\n 請按下回車鍵結束")
2.2 字串的連接和重復
2.2.1 字串的連接,指的是將多個字串拼接成一個新的字串,使用‘+’運算子,兩個字串拼接后,之間不會有空格或別的分隔符,如“loong”+“cool”的結果是“loongcool”
2.2.2 使用行繼續符"\",如果一行陳述句很長,可以在一行未尾加\然后換行來分隔陳述句,對于計算機來說,仍然是一條陳述句,但是對人來說是提升了程式的易讀性,
2.2.3 重復輸出字串,使用"*"運算子,如 print ("pie"*5) 輸出結果是 peipeipeipeipei
2.3 使用數字
python為程式員提供了多種數字型別,最常見的是整數和浮點數,整數:指沒有小數部分的數字,如1,27,-101,0等,浮點數就是帶有小數部分的數字如2.34,7.88,-345,2等,
2.3.1數學運算子
//整數除法:除法的結果永遠是整數,小數部分自動忽略,
%取余除法:求模運算,用于求取整數除法運算式的余數,
1 print ("python 語言中數字運算子的應用") 2 print ("2000-100+200=",2000-100+200) 3 print ("真除法 10/3=",10/3) 4 print ("取整除法 10//3=",10//3) 5 print ("取余除法 10%3=",10%3)
執行結果 :
Python 3.8.10 (/usr/bin/python3) >>> %cd '/home/loong/檔案/thonny_pyprogram/game-py/chat2' >>> %Run creeter.py python 語言中數字運算子的應用 2000-100+200= 2100 真除法 10/3= 3.3333333333333335 取整除法 10//3= 3 取余除法 10%3= 1
常見數學運算子
| 運算子 | 說明 | 范例 | 求值結果 |
| + | 加 | 7+3 | 10 |
| - | 減 | 7-3 | 4 |
| × | 乘 | 7×3 | 21 |
| / | 除(真除法) | 7/3 | 2.333333 |
| // | 取整除法 | 7//3 | 2 |
| % | 求模(取余) | 7%3 | 1 |
2.4 變數
程式員可以利用變數對資訊進行存盤和操作,變數提供了一種標記和訪問資訊的手段,使得編程人員無須記憶某個資訊在計算機記憶體中的位置,值得注意的是資訊并不是存盤在變數內,資訊是存盤在某個記憶體地址中,然后程式員創建的變數會指向該記憶體地址,從而通過變數名來參考該地址的值,既變數對值只是參考(而不是存盤)
2.4.1 創建變數
name = “lily" 叫做賦值陳述句,它創建了一個name的變數,并給它賦了一個值,這樣name就指向了"lily"這個字串,如果變數不存在,python就會先創建一個變數,然后再進行賦值操作,從下面的陳述句中可以清楚的看出來,id()陳述句可以讀出變數值所在記憶體中的地址,對變數“name”和“na”賦了同一個值字串loong,可以看出,系統中值的地址是一個,而不是創建了兩個,各自存在變數名中,說明了系統中,變數對值只是參考而不是存盤,
>>> name = "loong" >>> id (name) 140610209958000 >>> type (name) <class 'str'> >>> na = "loong" >>> id (na) 140610209958000 >>>
2.4.2 變數命名
- 變數名不能以數字開頭
- 變數名只能含有數字、字母 、下劃線
- 選擇具有描述性的名字,
- 保持一致,high_score下劃線風格
- 避開語言的保留字,另外不能用_下劃線開頭,由下劃線開頭的名稱在python中是有特殊含義的,
- 命名不要太長,避免難以理解和拼寫時出現錯誤,原則:保持在15個字符
2.5 獲取輸入
有了變數,可以對程式做更靈活的和互動性更好的設計,實作更多的功能 ,
2.5.1 Personal Greeter 程式,演示獲取用戶輸入
程式中會要求用戶輸入一個資訊,并使用一個變數來呼叫用戶輸入的資訊來顯示一個歡迎資訊,而非是程式中固定的資訊,這樣不同的用戶都可以看到系統對自己的歡迎資訊,
1 #2.7 獲取用戶輸入 2 #讓用戶輸入自己的名字,并在計算機上顯示 3 name = input ("你好,請問你叫什么\n") 4 5 print ("\n你的名字真好聽,",name) 6 print("bye!",name) 7 input ("退出請按回車鍵")
執行結果如下
你好,請問你叫什么 andi 你的名字真好聽, andi bye! andi 退出請按回車鍵
2.5.2使用input()函式
name = input ("你好,請問你叫什么\n")
程式通過這個賦值陳述句來獲取用戶的輸入,左側的name是創建了一個變數,對變數name的賦值是通過右側的input()函式呼叫來獲得,
input()函式用于從用戶處獲取一些文本,input()函式,括號中的引數就是對用戶的提示資訊,在本程式中是“你好,請問你叫什么”,然后
input()會等待用戶的輸入,當用戶按下enter鍵后,用戶輸入的資訊會以字串的形式回傳系統,然后執行賦值陳述句,將值賦給變數name
注意:input()函式獲得的任何資料都會處理成字串格式,既使是用戶輸入的一個數字,也是做為字串型別輸入系統,因此當我們需
要獲取用戶輸入的數字進行數值運算時,要對資料型別進行轉換,
2.6 學習使用字串
功能的實作是以字串變數呼叫字串處理方法來實作的,如下所示的 quote.upper() ,這里必須要跟上變數名,只寫成upper()是無 意義的,這被叫做方法呼叫,其格式如下:
變數名.方法名(引數) (引數是可選的)如upper()就沒有引數,replace(原字符,替換字符,次數)就是有可選的引數,
#轉換字串練習 #quotation manipulation quote = ("I think there is a world market for maybe five computers.") print ("original quote:\n",quote) print ("\nIn uppercase:") print (quote.upper()) print ("\nIn lowercass:") print (quote.lower()) print ("\nas a title:") print (quote.title()) print ("\nwith a minor Replacement:") print (quote.replace("five","millions of")) print ("original quote is still:\n") print (quote) input ("press enter key to exit")
original quote: I think there is a world market for maybe five computers. In uppercase: I THINK THERE IS A WORLD MARKET FOR MAYBE FIVE COMPUTERS. In lowercass: i think there is a world market for maybe five computers. as a title: I Think There Is A World Market For Maybe Five Computers. with a minor Replacement: I think there is a world market for maybe millions of computers. original quote is still: I think there is a world market for maybe five computers. press enter key to exit
常用字串的方法

2.7 轉換值的型別
前面說過對于input()函式獲取的值,python默認是做為一個字串型別記錄的,當我們想要將用戶的輸入做為數字型別來處理時,就要進行值的轉換,
1 car = input ("how money for your car:") 2 car = int (car) 3 type (car) 4 5 #等于car = int (input("how money for your carL"))
在python中執行的結果
Python 3.8.10 (/usr/bin/python3) >>> car = input ("how money for your car:") how money for your car:3500 >>> type (car) <class 'str'> >>> car = int(car) >>> type(car) <class 'int'>
從中可以看出,初始輸入的car的資訊3500,是做為字串型別“str”存入計算機的,用int()轉換后,成為int整型數,這樣就可以進行的正常的數學運算了,

2.8 復合運算子
在編程時經常會對變數的原始值做一些運算后得到的值再重新賦值回去,這樣就產生了復合運算子的寫法,

第三章 條件分支、while回圈及程式策劃
程式不可能只是處理一種情況的順序模式,為了解決實際的問題,必須讓程式可以按照不同的條件來執行不同的陳述句,有時也要讓程式自動的重復執行一個功能,計算機最大的特點和長處就是可以不知疲倦的年重復執行一個運算,而且速度極快,
- 了解randint()和randrange()生成亂數
- 學習if陳述句
- 學習if陳述句的else子句
- 學習elif子句根據多個條件來作出選擇
- 了解while回圈,回圈執行和終止回圈
- 利用偽碼對程式進行策劃
3.1 引入庫和生成亂數
3.1.1 引入random模塊
python中默認提供了許多的模塊(module),含有可供程式使用的各種代碼檔案,以用簡單的方案實作不同的功能,但是,這些模塊并不是每次撰寫程式都要必須用到的,沒有必要每次都加載到記憶體中,并且也不經濟,因此,就要具體編程時,根據程式功能的需要,實時的加載所需的模塊,這就是python中的引入模塊的操作,這里程式要參考的是random模塊,是有關生成亂數和隨機結果的各種函式,
引入模塊的陳述句的寫法是 import 模塊名
這次要引入的是random模塊,寫做 import random
3.1.2使用randint()和randrange()函式
randint()和randrange()都是random模塊下的兩個函式,
randint()的作用是產生隨機整數,randrange()的作用是產生指定范圍內的一系列亂數,
3.1.2.1randint()的呼叫
import random die1 = random.randint(1,6)
因為randint()函式是屬于random模塊,因此對于randint()函式的使用要通過random模塊來呼叫,寫成 random.randint(1,6) 的形式,這稱為點標記法(dot notation),表示random模塊的randint()函式,這里有兩個引數1,6,表示將回傳整數1到6之間的隨機整數,
3.1.2.2randrange()
import random die2 = random.randrange(6)
給randrange()一個正整數引數,函式會回傳一個0(包括)到引數值(不包括)之間的隨機引數,上面的程式中會回傳一個0,1,2,3,4,5之間的數,既引數6表示,從0開始算起的6個數,這樣,die2的數字就沒有上個die1產生的1和6了,可以寫成die2 = random.randrange(6)+1的形式,讓其亂數加1來解決.
3.2條件分支陳述句之if陳述句,陳述句的分塊縮進創建代碼塊
if陳述句格式
if 條件運算式(或布林值):
執行陳述句塊(注意:此處要有縮進,表明是上條if陳述句的一部分;2上面陳述句條件判斷為真時或布林值為真時,執行,否則就跳過)
elif 條件運算式(或布林值): (如果if陳述句后條件不成立時,檢查此條件成立否.可以有0到多個,可以滿足多個分支的要求)
執行陳述句(elif部分條件為真時執行,為假就跳過.)
else : (可選陳述句)
執行陳述句(if和elif條件都不成立時執行陳述句)
if陳述句中,不論有多少個子陳述句(elif陳述句存在),總是從代碼塊首開始判斷條件是是否成立,不成立則繼續下條陳述句判斷,成立則立刻執行對應的陳述句并立刻結束if陳述句體,不考慮其后是否還有成立的條件,
編程實體
1 #演示亂數模塊和if陳述句 2 #隨機顯示心情指數 3 4 import random 5 happy_num= random.randint(1,3) 6 print ("讓我們看看你現在的心情\n") 7 if happy_num == 1: 8 print ("oh,nice.\(^o^)/ \n") 9 elif happy_num == 2: 10 print ("oh,no!⊙︿⊙\n") 11 else: 12 print ("oh,你入定了. ^*(- -)*^\n") 13 14 input ("\n好了,就到這里吧.再會!")
3.3 創建一個while回圈
while在英語中有當...的時侯的意思.while回圈,就是當指定條件成立時,就回圈(執行一段陳述句),直到給定條件不滿足時退出.
3.3.1 設定哨兵變數
3.3.2 避免無限回圈
3.3.3 把值解釋為布林值
3.3.4 無限回圈和break和continue的作用
3.3.5 與或非邏輯運算
3.4規劃程式的步驟
3.5挑戰:
3.5.1 用程式規劃的方法寫一個模似抽簽的程式,每次隨機顯示出五條靈符中的一個靈符的內容
1 ''' 2 程式規劃 3 生成簽號對應的5條資訊 4 引入random模塊 5 歡迎用戶 6 執行一個回圈 7 while ture: 8 詢問用戶是否要抽簽,輸入yorn 9 if 要y 10 生成一個1~5的亂數給簽號 11 判斷是幾號簽 12 列印簽號對應的內容 13 countiu 14 elif 否: 15 break 16 else: 17 提示輸入錯誤,重新回圈 18 感謝用戶參與 19 提示按回車鍵退出 20 ''' 21 #簽號對應內容 22 tarot1 = "你現在的情況還是蠻不錯的,在你看來只要堅持下去就是希望滿滿的節奏" 23 tarot2 = "別想到啥就做啥,還有如果你想學好,至少短期內勤奮點,少偷懶玩了," 24 tarot3 = "在學習上更建議你還是專一點認真點化心思和時間下去,別總是走神到無關緊要的事情上" 25 tarot4 = "這份作業就是與你對沖,即使再好的機會到你手里也會變坑" 26 tarot5 = "如果你選擇走這條路,選擇這個作業,未來里至少兩三個月的時間里你會是非常累并且要做非常多的付出" 27 #引入亂數模塊 28 import random 29 tarot = 0 30 #程式開始 31 print ("歡迎您來到塔羅星座屋") 32 while True: 33 choos = input ("\n現在要開始抽牌么?Y開始,N結束\n") 34 if choos == "y" or choos=="Y": 35 tarot = random.randint(1,5) 36 if tarot ==1: 37 print (tarot1) 38 elif tarot ==2: 39 print (tarot2) 40 elif tarot == 3: 41 print (tarot3) 42 elif tarot ==4: 43 print (tarot4) 44 elif tarot ==5: 45 print (tarot5) 46 elif choos == "n" or choos=="N": 47 break 48 else: 49 print ("輸入錯誤,請輸入\"Y\"或\"N\"\n") 50 continue 51 print ("感謝您來到星座塔羅小屋,再會\n") 52 input ("按回車鍵退出")
試一下,要是把(if choos == "y" or choos=="Y")這條陳述句寫成(if choos == "y" or "Y"),程式能運行么.這個也能運行,但是會進入一個死回圈.因為這個運算式中,會計算choos=="y"得到一個真或假的布林值,這個布林值接著會or "Y",這就成了一個布爾型數值和一個字符型資料進行or運算,結果就是這個字符本身.在python中除了空值和零值外,其他的值都歸于布林值的真值,所以回圈的結果總是成立,變成了一個死回圈.不論用戶輸入什么.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/298497.html
標籤:Python
