1. 程式人生 > 實用技巧 >Python基礎筆記(一)

Python基礎筆記(一)

Python程式設計學習筆記

目錄

0.0 Hello World!

按照國際慣例,輸出Hello World!

print("Hello World!")
Hello World!

1.1基礎資料型別

1.1.1 變數

Python中對變數的使用是不需要提前進行定義和宣告的,可以直接進行賦值操作。

massage = "Hello Juprter"
print(massage)
Hello Juprter

在Python程式編寫的過程中可以隨時對變數進行修改

massage = "Hello World!"
print(massage)
massage = "Hello Python! Hello Jupyter!"
print(massage)
Hello World!
Hello Python! Hello Jupyter!

在Python中命名變數名應儘量使用小寫英文字母命名
當所編寫的程式存在錯誤時,Python直譯器會給出traceback
*在Jupyter中使用的是Ipython

#演示錯誤
massage = Hello!
print(masage)
  File "<ipython-input-4-6aa5afa64467>", line 2
    massage = Hello!
                   ^
SyntaxError: invalid syntax

1.1.2 字串

字串型別是python語言的基本資料型別之一,一般用雙引號或單引號括住
以下是字串型別的定義和對字串字母型別的幾個基本操作。

name = "Zhang san"
print(name.title()) #首字母大寫
print(name.upper()) #所有字元大寫
print(name.lower()) #所有字元小寫
Zhang San
ZHANG SAN
zhang san

字串型別的其他基本操作

first_name = "Zhang"
last_name = "San"
full_name = first_name+" "+last_name # "+" 可以直接連線字串
print(full_name)
Zhang San
language1 = "   Python"
language2 = "C++    "
print(language1+"\t"+language2+"\n") #控制字元
print(language1.lstrip())            
print(language2.rstrip())
print(language1.strip()+language2.strip())
#去除多餘空格 lstrip() rstrip() strip()
#l/r means left or right
   Python	C++    

Python
C++
PythonC++

1.1.3 數字

在Python當中可以直接使用數字進行計算,但在某些時候需要對數字型別進行適當的處理,將其轉化為字串的形式或保持其int的整型型別
例如下面的這個示例:

age = 23
message = "Happy "+age+"rd Birthday"
print(message)
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-8-e9469db08d10> in <module>
      1 age = 23
----> 2 message = "Happy "+age+"rd Birthday"
      3 print(message)


TypeError: can only concatenate str (not "int") to str

這樣的編寫方式會出現報錯,因為Python直譯器會將23預設為int型別,而在print語句當中,我們將它以字串型別寫入語句,
所以會出現報錯現象,在這樣的情況下我們應該使用str()函式對int型別的資料進行處理,將其轉換成字串型別進行輸出。

age = 23
message = "Happy "+ str(age)+"rd Birthday"
print(message)
Happy 23rd Birthday

在python程式編寫過程中,python語言的發明者Tim Peters也提出了避繁就簡的原則,如果在python當中引用this庫
就會看到以下內容(一個小彩蛋)。

import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

2.1列表

2.1.1 列表簡介

列表是由一系列的元素構成的一個有特定順序的元素集合,在某用意義上類似於C/C++當中的陣列。

在Python當中,我們用“[ ]”來表示列表,用逗號隔開元素,列表內的元素可以是一類事物,也可以是之間毫無聯絡的元素。

players = ["Messi","Ronaldo","Neymar","Mbappe",5]
print (players)
['Messi', 'Ronaldo', 'Neymar', 'Mbappe', 5]

同時,我們也可以通過訪問列表的方式來訪問陣列當中的元素,這樣我們可以精確的選擇訪問特定的元素,得到的形式也更加的友好。

需要注意的是,對列表中元素的訪問,序號排列是從0開始的,這也和C/C++當中的陣列的訪問方式相同。

但是在python當中還有另外的一種訪問方式,就是使用例如“-1”這樣的序號進行訪問元素,這樣的負數序號代表訪問從後往前數的第幾個元素。

我們也可以對列表內的元素直接進行相關的操作,或者新的資訊的拼接。

players = ["Messi","Ronaldo","Neymar","Mbappe",5]
print(players[0])
print(players[-3].upper())
print(players[0]+" is the best football player in the world")
Messi
NEYMAR
Messi is the best football player in the world
players = ["Messi","Ronaldo","Neymar","Mbappe",5]
print(players[0].upper())
MESSI

2.1.2 修改、新增和刪除元素

修改特定位置的元素,只需要對元素地址重新賦值即可。

players = ["Messi","Ronaldo","Neymar"]
print(players)
players[1] = "Wulei"
print(players)
['Messi', 'Ronaldo', 'Neymar']
['Messi', 'Wulei', 'Neymar']

在列表中新增元素,分為以下兩種情況

  1. 在列表末尾新增元素
    使用 append() 方法,將想要新增的元素新增進列表當中。
  2. 在列表中的位置插入元素
    使用 insert() 方法,將想要新增的元素插入特定位置。
players = ["Messi","Ronaldo","Neymar"]
print(players)
players.append("Mbappe") #append()內的引數為(插入內容),插入位置預設為佇列尾
print(players)
players.insert(1,"Wulei") #insert()內的引數為(插入位置,插入內容)
print(players)
['Messi', 'Ronaldo', 'Neymar']
['Messi', 'Ronaldo', 'Neymar', 'Mbappe']
['Messi', 'Wulei', 'Ronaldo', 'Neymar', 'Mbappe']

從列表中刪除元素,有下列的集中情況

  1. 只刪除列表中元素,而不要求有返回值(也就是說不要求知道所刪除元素的值(value))
    使用del語句,可以刪除特定位置的元素

  2. 刪除列表中的元素,但要求有返回值(也就是說需要知道所刪除的內容)
    使用 pop() 方法
    注意:pop()方法預設刪除最後一個元素,但也可以通過傳入引數自行定義刪除特定位置的元素。

  3. 根據值(value)刪除元素
    使用 remove() 方法

players = ["Messi","Ronaldo","Neymar","Mbappe","Wulei"]
#del for delete
del players[2]
print(players)

#pop for delete
pop_players = players.pop(-1)
print(pop_players)
print(players)

#remove for delete
players.remove("Messi")
print(players)
['Messi', 'Ronaldo', 'Mbappe', 'Wulei']
Wulei
['Messi', 'Ronaldo', 'Mbappe']
['Ronaldo', 'Mbappe']

2.1.3 列表的排序或整理

在列表的定義過程中,隨著我們對列表內元素的新增、刪除、修改等操作,列表內的元素可能是雜亂無序的,如果我們對列表內的元素整潔度有需求,
或者有時需要一個有序的形式輸出,我們就需要對列表內的元素進行排序操作。

  1. 列表的永久性排序 sort()方法
    sort()方法會將列表內的元素位置發生實際的調換,所以這樣的排序操作後,原本的元素順序將無法恢復。
  2. 列表的臨時排序 sorted()函式
    sorted()函式是將排序後的列表作為函式的返回值,而原本的列表中元素的順序並未發生改變。
players = ["Messi","Ronaldo","Neymar","Mbappe","Wulei"]
print(players)
players.sort()
print(players)
['Messi', 'Ronaldo', 'Neymar', 'Mbappe', 'Wulei']
['Mbappe', 'Messi', 'Neymar', 'Ronaldo', 'Wulei']
players = ["Messi","Ronaldo","Neymar","Mbappe","Wulei"]
print(players)
print(sorted(players))
print(players)
['Messi', 'Ronaldo', 'Neymar', 'Mbappe', 'Wulei']
['Mbappe', 'Messi', 'Neymar', 'Ronaldo', 'Wulei']
['Messi', 'Ronaldo', 'Neymar', 'Mbappe', 'Wulei']

如果我們結束了一系列的元素輸入工作,我們沒有對列表內元素按字典序排序的需求,但我們需要得到一個目前列表內元素的倒序,
這個時候我們需要將整個列表內的元素位置反轉。也就用到了reverse()方法
reverse()和sort()類似,都是直接對列表內元素的位置進行改變,但因為操作的型別不同,導致特性有些許不同,
reverse()是導致操作,所以一個列表連續做偶數次的reverse()方法就可以恢復到原有的順序,
但一個無序列表一旦執行了sort()方法,它的原有順序是無法再次恢復的

players = ["Messi","Ronaldo","Neymar","Mbappe","Wulei"]
print(players)
players.reverse()
print(players)
['Messi', 'Ronaldo', 'Neymar', 'Mbappe', 'Wulei']
['Wulei', 'Mbappe', 'Neymar', 'Ronaldo', 'Messi']

Tips Python中對語句、方法和函式的辨析

我們在學習python的過程中會發現,我們所用到的程式設計方法,在相關書籍的表達當中,會有表達上的不同。
我們常用的操作,有的被稱之為語句,有的被稱之為函式,還有一些被稱之為方法。
這三者實際上是有很大的不同的。
語句
語句是我們學習Python最先接觸到的,print("Hello World!")當中的print就是語句,語句在程式編寫過程中可以直接被使用,相對來說不容易被混淆。
方法
方法一般是對某一資料型別進行的直接操作,會直接改變被操作物件,如sort()就屬於方法,它直接改變了列表中元素的順序,在Python當中,我們想要使用方法,需要用這樣的形式進行編寫list.sort(),最明顯的特徵就是變數名+“.”+方法名()
函式
函式是我們在C/C++中就接觸過的解決問題的操作方式,在Python中,函式會對被操作物件進行操作後將操作結果作為返回值返回,這個返回值可以直接被 賦值給另一個變數,這整個操作過程中並不會改變原本的被操作變數本身,例如sorted(list),函式的最明顯特徵是方法名(變數名)


本文所在系列:Python基礎筆記


寫在文末的話

這是我第一次嘗試著寫長篇的部落格,本文的講解也忽略了一些比較基礎的名詞的解釋,如果有問題或發現錯誤可以回覆或私信博主,講述的順序主要是參照了圖靈圖書的《Python程式設計:從入門到實踐》,推薦大家購買正版的紙質或電子版書籍。
本文主要採用Jupyter notebook編寫,剛開始使用Jupyter notebook還在學習中, 日後有機會會寫一篇有關程式設計工具的推薦部落格或相關教程,如果對各位有幫助感謝點贊收藏。
轉載請註明出處。