初識Python
什么是Python
Python是1門程序設計語言。在開發者眼里,語言可以分為3類:
- 自然語言:人能聽懂的語言,例如漢語,英語,法語等等。
- 機器語言:機器能聽懂的語言,機器只能聽懂0和1。
- 程序設計語言:機器能夠聽懂,人能聽懂的語言,例如Python,C,C++ 、C# 、Java等等。
同樣的,在開發者眼里還可以分為高級程序設計語言和低級程序設計語言。越接近于人類的語言越高級,例如Python;越接近于機器語言越低級,例如匯編就屬于低級程序員設計語言。
簡而言之,python是一門高級的編程語言,而且隨著人工智能的興起,python在編程領域所占的權重是越來越大了,現在市場份額排名第一,未來的發展潛力也是巨大的,非常得到學習
編程市場份額排行榜:https://www.tiobe.com/tiobe-index/
Python的特點
Python的特點主要有語法簡潔、類庫強大、膠水語言(調用其他語言的類庫)、代碼量較少等特點
Python 運行機制
程序運行主要有兩種機制:編譯型和解釋型。
編譯型:是將代碼(源文件)通過編譯器,編譯成機器碼文件,當運行的時候直接執行機器碼文件,例如C語言;
解釋型:是將源文件通過解釋器,逐行進行翻譯并運行
編譯型和解釋型語言各有優缺點:
- 解釋型:
缺點:執行慢
優點:可以跨平臺(操作系統)
- 編譯型:
缺點:不能跨平臺
優點:執行快
很顯然,python是解析型語言,因為我們運行python的時候,Python 程序在執行時不需要預先編譯成機器語言代碼
什么是字面量
在代碼中,被寫下來的固定的值(數據),叫做字面量
簡單點說就是代碼寫下來你就知道它是代表什么,比如10 代表整數? true 代表布爾類型等等;想python中的基本數據類型都可以看作是字面量
"abcd"
1
3.6
?python中的基本數據類型
數值型(Number)
# 1 數字類型 整數,浮點數,復數,布爾四個類型
# 定義一個整數
a = 100
#浮點數
b = 99.9
#復數(必須是以j結尾)
c=3+4j
#boolean類型
d = True
字符串(string)
# 2 字符串
#單引號
e = '6666'
#雙引號
f = "8888"
#三引號 三引號也可以當多行注釋來使用
g = """99999"""
#常用方法
# 獲取字符串長度
print(len(f))
string = " Hello, World! "
print(string.strip()) # 輸出:Hello, World!
string = "Hello, World!"
words = string.split(", ")
print(words) # 輸出:['Hello', 'World!']
list_val = ['www','baidu','com']
str_val = '.'.join(list_val)
print(str_val) # www.baidu.com
?字符串格式化(模板字符串)
# 三種常見的字符串的格式化 ,前二種開發中常用
# 1.%-formatting
name = 'Aaron'
login_time = 10
cost = 258.88
print('你好%s,歡迎登錄!這是您登錄的第%d次。您本次消費%.2f元' % (name,login_time,cost))
# 2.f-string
name = 'Aaron'
login_time = 10
cost = 258.8890
print(f'你好{name},歡迎登錄!這是您登錄的第{login_time}次。您本次消費{cost:.2f}元。')
# 3.str.format()
name = 'Aaron'
login_time = 10
cost = 258.8890
print('你好{},歡迎登錄!這是您登錄的第{}次。您本次消費{:.2f}元。'.format(name,login_time,cost))
列表(list)
類似于java中的arraylist集合
# 3 列表 類似于java的list集合 但python中沒有泛型的概念
#定義一個空列表
h = []
i = list()
#定義一個有數據的列表
j = [666,888,'9999']
j.append(999)
# print(j)
元組(tuple)
# 4 元組 類似于java中的數組
#特點:1 不能直接修改元組的內容,否則直接報錯 2 可以修改元組中列表的內容 3 元組只有一個數據,這個數據后面要添加逗號
#定義一個空原組
k = ()
l = tuple()
#定義非空元組
m = (6666,888,'999')
n = (66666,9999,[1,2,3])
n[2][0]=10
# print(n)
集合(set)
# 5 set 和java的set集合類似,無序不可重復
#定義一個空集合
p = set()
#定義一個有數據的集合
q = {666,888,999,666}
# print(q)
xxx = len(q)
# print(xxx)
print(max(q))
print(min(q))
字典(dictionary)
# 6 dict字典 與java中的map集合類似 key:value的結構
# 定義一個空字典
r = {}
s = dict()
#定義有數據的字典
t = {'name':'李四','age':18,'hobby':('籃球','跑步','聽歌')}
t['gender'] = '男'
print(t)
print(t['name'])
?序列
# 7 序列
# 特點:1 序列不是一種數據類型,而是一種特殊的數據結構
# 2 序列是指:內容連續、有序,可使用下標索引的一類數據容器
# 3 列表、元組、字符串,均可以可以視為序列
# 得到列表序列的切片
# 序列[起始下標:結束下標:步長]
# 表示從序列中,從指定位置開始,依次取出元素,到指定位置結束,得到一個新序列
u =[1,2,3,4,5]
v = u[1:4]
# print(v) #[2, 3, 4]
# 得到元組的序列切片
w = (1,2,3,4,5)
x = w[0:3]
print(x) #(1, 2, 3)
# 得到字符串的切片
y = "123456"
z = y[3:-1]
print(z) #45
變量
什么是變量
變量:在程序運行時,能儲存計算結果或能表示值的抽象概念。
簡單的說,變量就是在程序運行時,記錄數據用的?
變量的格式
變量名? =? 類型
python常用的內置函數?(重點)
print函數
結構:print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
?objects:要打印輸出的數據
sep=' ':表示以引號內的內容作為分隔符,默認是空格
end='\n':用于控制是否換行,默認是換換行
file:必須是一個具有 write(string) 方法的對象;如果參數不存在或為 None,則將使用 sys.stdout
flush=False:輸出是否緩存通常取決于 file,但如果 flush 關鍵字參數為 True,輸出流會被強制刷新
?print后的括號中如果是數學表達式,則打印結果為表達式最終運算的結果
print(1+2+3+4+5) #15
print(2*4) #8
type()函數
我們可以通過type()語句來得到數據的類型
語法:type(被查看類型的數據)
?
運行結果
int函數,float函數,str函數
?類型轉換注意事項:
1.?任何類型,都可以通過str(),轉換成字符串
2.?字符串內必須真的是數字,才可以將字符串轉換為數字
input()函數
??使用?input()?語句可以從鍵盤獲取輸入
??使用一個變量接收(存儲)?input?語句獲取的鍵盤輸入數據即可
??要注意,無論鍵盤輸入什么類型的數據,獲取到的數據永遠都是字符串類型
name = input("請輸入你的名字:")
age = input('請輸入你的年齡:')print(f'用戶名: {name} 年齡: {age}')print(type(name))
print(type(age))
?
Python語句(重點)
判斷語句
if語句
語法:
if? ?判斷條件:
? ? ? ? 執行語句
- 當判斷條件成立時,會執行執行語句的代碼
- 判斷條件可以加括號也可以不加,但后面的冒號不能省略
if ....else....語句
?語法:
if 判斷條件 :
? ? ? ? 滿足條件執行的語句
else:
? ? ? ? 不滿足條件執行的語句
??if?和其代碼塊,條件滿足時執行
??else?搭配?if?的判斷條件,當不滿足的時候執行
?if elif else語句
?語法:
if 條件一:
? ? 滿足條件一的執行語句1
? ? 滿足條件一的執行語句2
? ? ...省略...
elif 條件二:
? ? 滿足條件二的執行語句1
? ? 滿足條件二的執行語句2
? ? ...省略...
elif 條件三:
? ? 滿足條件三的執行語句1
? ? 滿足條件三的執行語句2
? ? ...省略...
else:
? ? 不滿足條件的執行語句1
? ? 不滿足條件的執行語句2
? ? ...省略...
year = input("請輸入一個年份: ")
year = int(year)if year % 4 == 0 and year % 100 != 0:print("%d 是一個普通閏年" %(year))
elif year % 400 == 0:print("%d 是世紀閏年" % (year))
else:print("%d 不是閏年" % (year))
?語句嵌套:
就是在if 語句里面也可以嵌套if..else..或者if ..elif...else,同理在if..else里面也可以嵌套if 和if ..elif...else
age = 18
university = None
total_score = 700
if age > 16:if total_score > 680:print('你可以選擇c9大學')university = '北京大學'if university is None:print('很遺憾,你沒有考上大學')else:print(f'恭喜你啦,成功考上了 {university}')elif total_score > 600:print('你有機會上211')elif total_score > 500:print('你有機會上一本')elif total_score > 380:print('你有機會上二本')else:print('很遺憾,你的選擇很有限,只能上專科和技校')
Python的循環語句
while循環 (和java的用法幾乎一樣)
語法:
while 條件:
? ? 執行語句1
? ? 執行語句2
? ? ...省略...
- 執行順序: 判斷條件? ?——》 條件成立? -》 執行語句1 -》執行語句2 ->在重新判斷條件
- ?每次進入循環后,將執行語句全部執行完畢后再次來到判斷,如果條件依然成立,則繼續進入循環,以此類推,直到條件不成立,跳出循環
注意:
??條件需提供布爾類型結果,?True?繼續,?False?停止
??空格縮進不能忘
??請規劃好循環終止條件,否則將無限循環
?
for循環(用法和java有點區別)
語法:
for? 臨時變量? in 迭代數據集:
? ? ? ? 執行語句
java版: for (int i = 0 ;i<100;i++){執行語句}?
迭代數據集可以只字符串,也可以列表,字典,元組等
# 打印99乘法表
for i in range(1,10):for j in range(1,i+1):print(str(j)+"*"+str(i)+"="+str(i*j)+" ",end="\t")print()
?
continue
continue關鍵字用于:中斷本次循環,直接進入下一次循環
continue可以用于:????for循環和while循環,效果一致
break
?可以直接跳出本次循環
函數(重點)
什么是函數?
函數其實就是一段為了實現特定功能且可以重復使用的代碼塊
語法
?def 函數名 (參數):
?????函數體
? ? ?return 返回值
?注意:
- ?參數如不需要,可以省略
- ?返回值如不需要,可以省略
- ?函數必須先定義后使用
- 如果函數沒有定義返回值類型,默認返回None這個類型
# 定義函數
def sum(num1,num2):return num1+num2# 使用函數
print(sum(6,8))
?知識擴展:
Python中有一個特殊的字面量:None,其類型是:<class 'NoneType'>
無返回值的函數,實際上就是返回了:None這個字面量
None表示:空的、無實際意義的意思
函數返回的None,就表示,這個函數沒有返回什么有意義的內容。
也就是返回了空的意思。
函數的說明文檔
簡單點說就是函數的說明文檔,表明函數如何使用,有怎么左右,鼠標懸停時可以看到的內容
通過多行注釋的形式,對函數進行說明解釋
# 定義帶說明文檔的函數
def calculate(num1,num2,operation):"""num1: 數字1 (一個number類型)num2: 數字2 (一個number類型)operation: 字符串操作類型,支持 + - * / 這四種類型retuen: 返回一個計算結果"""result = Noneif operation == '+':result = num1+ num2if operation == '-':result = num1- num2if operation == '*':result = num1* num2if operation == '/':result = num1/ num2return resultprint(calculate(6,6,'-'))
?
?
變量的作用域(重點):
變量的作用域:簡單說就是變量可以被訪問的范
注意:變量的作用域這個其實是非常重點的,難度也不低,需要注意的地方很多,細節也很多,需要自己不斷積累的;不管是哪一門編程語言,我們都應該對變量的訪問范圍有清晰的認知,這樣我們才可以更好的掌控程序
局部變量
所謂局部變量是定義在函數體內部的變量,即只在函數體內部生效
局部變量的作用:在函數體內部,臨時保存數據,即當函數調用完成后,則銷毀局部變量
細節:python中有一個特點,就是定義在函數中的變量在整個函數內都是可以被訪問到的,這個和java有點不一樣,java的變量的訪問范圍受修飾符(publish,private...)和塊決定
try{
int? xx = 100
// 可能會發生異常的邏輯 throw new Exception();
}
catch(IOException e){
? ? ? ?system.out.println(xx)? ?//在這里是無法訪問xx的
// 發生IOException時,執行此代碼塊
}
全局變量
?所謂全局變量,指的是在函數體內、外都能生效的變量
在python中,全局變量其實就是定義在腳本最外層的變量(類似于java中的類屬性)
?
?就近原則:當全局變量和局部變量發生沖突時,優先使用局部變量?
global?關鍵字
使用?global關鍵字?可以在函數內部聲明變量為全局變量,?如下所示
?若不聲明,則num = 100 因為:?當全局變量和局部變量發生沖突時,優先使用局部變量