Python學習第一周

2016.11.21-2016.11.26學習完《編程小白的第一本Python入門書》
這本書將很簡單基礎的必要理論知識與進階的實踐練習結合起來,易讀懂,易上手。尤其是第七章將類的概念與可口可樂的生產類比,形象地介紹了子類、繼承,實例等概念。下面從理論知識與實戰技巧兩方面,對這一周的學習做一個小結。

變量與字符串

因為之前有過短暫的Java編程經歷,對這兩個概念的理解并不吃力,但關于字符串的分片與索引,有如下認識:

| name = | M | y | | | n | a | m | e | | i| s | M | i | k | e|
|:-------------:|:-------------:| :-----:|:-----:|:----:|
| A | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |11| 12 |13 |14|
| B | -15 | -14 | -13 | -12 | -11 | -10 | -9| -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1|
注:name為一個字符串型變量示例,=為其賦值,A行代表該值的正向索引,B行代表該值的反向索引。
name[0]=name[-15]='M';
name[11:14]表示截取的編號從第11個字符開始,到位置14但不包含第14個字符結束,即'Mik';
name[5:]代表從編號為5的字符到結束的字符串分片,即'me is Mike';
name[:5]則代表從編號為0的字符開始到編號為5但不包含第5 個字符,即'My na'.
python中是嚴格區分大小寫的,空格也是占位的。
由于python是面向對象的語言,所以它會有一些方法(method),這節我學到的關于字符串比較實用的方法有:
'!!!'.find('') 找到'!!!'中''的第一個字節所在索引并返回int型該索引值
'!!!'.replace('','###')將'.......'.中的''用'###'替換
'!!{}!!{}!'.format('###','&&')將'!!{}!!{}!'中的{}按順序替換為'###'和'&&'
還了解到python中幾個使用很頻繁的函數:
type() 查看變量的類型
len() 括號內的參數限定為字符串,返回字符串字節的個數,為int型整數值
int() 將字符串類型的數字轉換為整數類型
file = open(' filepath', 'w') 打開位于' filepath'處的文件,若沒有則創建一個
file.write('$$$')往該文件中輸入內容'$$$'

函數

def Function(arg1, arg2) :
do something
return something#
python中用縮進量的不同來表示代碼的執行等級,處于同一縮進量的代碼行是同一級,但執行起來完全按照行序從上至下進行,
代碼塊:具有相同縮進量的代碼是在共同完成相同層面的事情
這節學到的小技巧有:
a**b 以a為底,b為指數的運算;
單行代碼屏蔽:在想要屏蔽的代碼行前加‘#’,如果想注釋某一行也可用‘#’,在其后寫上注釋;為避免中文注釋導致的報錯問題,輸入一行‘#coding: utf-8’
一段代碼行屏蔽:在代碼段的上端和下端均輸入‘"'’即三個在英文輸入法下的單引號;
abs() 該函數會返回輸入參數的絕對值;
字符串首尾取法name[0],name[-1]比較巧妙,不用知道字符串整體長度。

邏輯判斷與控制

布爾類型(Boolean Type)其實就是兩類True和False,對于計算機來說True=1,False=0, 因此它們可以用于計算和比較大小
在Python中,任何對象都可以判斷其布爾值,除了0,None和所有空的序列、集合、列表、字典,其布爾值為False,其余的均為True.
運算符有
1.Membership operator 表示歸屬關系: in, not in
2.Identity operator 進行身份比對:is, is not
3.Boolean Operator判斷真假:not x, x and y, x or y
4.條件控制 if condition :
do something
elif condition:
do something
else:
do something
其中,else后面不用再跟條件,跟多個條件的話,用if, elif,...
5.循環(loop) for item in iterable :
do something
6.嵌套循環(Nested Loop) for i in iterable :
for j in iterable :
do something
7.while 循環 while condition :
do something
要警惕條件永遠為True死循環(Infinite loop),要確認循環過程中可以制造某種使循環停止的條件或可改變循環成立的條件
本節有兩道只有提示的綜合題目,我跑出來的代碼如下

  • 第一道綜合題代碼
import random
def roll_dice( numbers = 3, points = None): 
   print('<<<<< GAME STARTS ! >>>>>')  
      if points is None:    
          points = []  
      while numbers > 0 :    
          point = random.randrange(1, 7)    
          points.append(point)     
          numbers = numbers - 1  
   return points 
def roll_result(total) :  
    if 3 <= total <= 10 :    
        isSmall = 'Small'    
        return isSmall  
    elif 11 <= total <= 18 :    
        isBig = 'Big'    
        return isBig
def start_game(money):  
    points = roll_dice()  
    total = sum(points)  
    your_choice = input('Big or Small :')  
    your_bet = input('How much you wanna bet ? - ')  
    if your_choice in ['Big','Small'] :    
      you_win = your_choice == roll_result(total)    
      if you_win:        
         print('The points is {}, You win'.format(points))        
         money = money + int(your_bet)        
         print('You gained {}, you have {} now'.format(your_bet, money))    
      else :       
         print('The points is {}, You lose'.format(points))        
         money = money - int(your_bet)        
         print('You lost {}, you have {} now'.format(your_bet, money))  
    else :    
      print('Invalid words')    
      start_game(money)  
      return money
money = 1000
while money > 0:  
    money = start_game(money)
print('GAME OVER')
  • 第二道綜合題代碼:
def number_in():    
    number = input('Enter your number')    
    dense = number[:11]  
    account = len(str(number))    
    if account != 11:        
        print('Invalid length, your number should be in 11 digits')        
        number_in()    
    return dense
def  number_sure():    
    dense = number_in()    
    dense_1 = dense[:3]    
    dense_2 = dense[:4]    
    if  int(dense_2 )== 1705 or \                    int(dense_1) in [134, 135, 136, 137, 138, 139, 150, 151, 152, 157, 158, 159, 182, 183, 184, 187, 188,                                147,                                178]:        
       print('Operator : China Mobile', 'We \' are sending verification code via text to your phone:{}'.format(dense),              sep='\n')    
    elif int(dense_2)== 1709 or \                int(dense_1)in [130, 131, 132, 155, 156, 185, 186, 145, 176]:        
       print('Operator China Union', 'We are sending verification code via text to your phone: {}'.format(dense),              sep='\n')    
    elif dense_1 in [153, 180, 181, 189, 177, 133] or dense_2 == 1700:        print('Operator : China Telecom', 'We are sending verification code via text to your phone :{}'.format(dense),              sep='\n')    
    else:        print('No such operator')        
       number_sure()
number_sure()

最大的體會:想清楚自己要實現的功能具體是什么,將其分解成幾個步驟,給每個步驟創建一個子函數。

數據結構Data Structure

python的四種數據結構表示方法
1.列表 list = [ val1, val2, val3, val4...]
2.字典 dict = {key1 : val1, key2 : val2, key3 : val3, ...}
3.元組 tuple = (val1, val2, val3,...)
4.集合 set = {val1, val2, val3, val4...}
數據結構的掌握需要一個長期且系統的學習過程。這里,我們需要定性地知道他們的一些基本特征和相區分的概念
1.列表,元素可變,按順序排列,可通過索引查找,修改,增減;
2.字典,key-value所謂鍵值對,是共生的,不存在沒有鍵的值或沒有值的鍵,原則上說,鍵一旦生成就不可更改,而值是可變的。
3.元組,穩固版的列表,不可修改,只能查看
4.集合,和數學里集合的概念類似,可以增減元素,但不能計算,元素不可重復,非常適合用集合來判斷從屬關系,消除數據結構中的重復元素。
了解到與數據結構有關的一些函數:
1.sorted([...]) 按照長短、大小、英文字母的順序給列表中的每個元素排序,但不會改變原列表本身。sorted([...], reverse = True) 逆序

 for a, b in zip ( [...], [...]) :
              do something

3.推導式(list comprehension) ,又稱列表的解析式

b = [ i for i in range(1, 11)]
字典的推導式:
'''
d = {i : i+1 for i in range(4)}
f = {i : j for i, j in zip([,,,], [,,,])}
'''
4.python獨有的函數enumerate() 對列表生成兩個列表,其中一個為其索引值
eg :

 letters = ['a','b','c']
 for num, letter in enumerate(letters):
                print(letter, 'is', num+1)

控制臺輸出:

                     a is 1
                     b is 2
                     c is 3

5.import string #導入內建庫
string.punctuation 為各種標點符號,運用'..'.split(string.punctuation )可刪除字符串中的非文本類符號
6.range() 內置函數,range(n)表示從0到n-1; range(i,i+n)表示從i到i+n-1
import random #導入隨機函數庫
random.range(i, i+n)生成[i,i+n)區間的隨機數

類與可口可樂

類:一系列有共同特征和行為事物的抽象概念的總和。
對于入門者來說,用可口可樂,屬于我的可口可樂,你買的可口可樂來說明類與實例的關系,用可口可樂的配方與無糖可口可樂的配方來說明類的繼承與覆蓋的概念,很好理解,但因為這個概念比較高階,不是一本入門級讀物能完全教會的,同樣需要持續學習。有三點需要掌握的:
1.類的形式:

class CocaCola :
      formula  = ['caffeine', 'sugar', 'water','soda']

formula代表變量,為類的屬性(class attribute)
2.實例instance: 在‘=’左邊創建一個變量,右邊寫上類的名稱,即為類的實例化;
3.Python中類的屬性引用機制是自外向內的,先看實例中有沒有,實例中沒有再看類中有沒有,類中沒有就報錯。
4.生成器(generator) :可自動執行某種操作,如random.range()自動生成隨機數,創建一個函數,在其任意一個循環(loop)中使用yield返回結果即可達到該效果。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,786評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,986評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,964評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,354評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,554評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,106評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,918評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,093評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,342評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,839評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,107評論 2 375

推薦閱讀更多精彩內容