1. 程式人生 > >Python基礎(不斷更新)

Python基礎(不斷更新)

導入 elif 不支持 glob width 長度 insert sep back

1.基本語法

  (1)加法的兩端只能是數字或者字符串

   如 print( ‘kkk‘ + 12 + ‘kkk‘ ) 是錯誤的,可修改為 print( ‘kkk‘ + str(12) + ‘kkk‘ ) 。類似 str() 的函數還有 int(),float()。

print(str(0))    #輸出字符串的0

print(int(33))

print(int(3.26))  #輸出3

print(float(3.402))

print(float(23))   #輸出23.0

print(int(input()))

  (2)在用於條件時,0、0.0、和 ‘ ‘ (空字符串) 被當作False

,其他值被當作 True,如

name = ‘‘
while not name:    #只有輸入有效的名字才跳出循環
    name = input()
print(your name: + name)

name = 0
while not name:
    name = int(input())
print(最終結果: + str(name))   #輸入非0整數結束

2.數學操作符

  • 指數:**。如 2 ** 3 = 8。
  • 整除://。如 6 // 4 = 1。
  • 除法:/。如 6 / 4 = 1.5。
  • * 操作符表示乘法,但是當 * 和字符串連用時,表示將字符串復制的操作。如
 print(‘Jack‘ * 2) #輸出JackJack。同時註意 只能同整數配套使用
  • 其他操作同 C 語言一致。

3.布爾操作符

  and,not,or 代替了 C 語言的 && 和 ||

4.控制流

  (1)if-else 關鍵是通過控制代碼塊的縮進距離,Python沒有花括號,如

name = Jack
age = 2
if(name == Jack):
    print(Hello,Jack)
    if(age > 10):
        print(>10)
    
else: print(<10) else: print(Who are you?)

  (2)while 循環

age = 5
while age < 9:
    age += 1  #不支持 age++
    print(age:  + str(age))
    if(age == 7):
        break
print(end)

sum = 0
while True:
    if sum == 3:
        print(錯誤次數超過三次!)
        break
    else:
        name = input()
        if name != 11:
            sum += 1
            print(用戶名錯誤,重新輸入用戶名:)
            continue
        else:
            print(用戶名正確,輸入密碼:)
            pwd = input()
            if pwd != 11:
                print(密碼錯誤,重新輸入用戶名:)
                sum += 1
                continue

  

  (3)for 循環。range(開始,停止【不包括它】,步長)

i = 0
for i in range(0,10,2):    
    print(i)    #0,2,4,6,8

  

5.字符串

   (1)字符串相等否,可直接用 == 或者 != 判斷

a = q
s = qq
if a != s:
    print("yes")
else:
    print("no")

  

  (2)字符串的截取。同 C 語言的差別就是標號的不一致,如下圖(https://www.runoob.com/python3/python3-data-type.html)

  技術分享圖片

  如上圖所示,即 ‘abcdef’ 的下表是 0~5 或者 -6~-1。同時規則也常用:前閉後開。

str = abcdef
print(str[0] + str[2])  #ac
print(str[-6] + str[-1]) #af
print(str[0:]) #abcdef
print(str[-3:]) #def
print(str[0:3]) #abc
print(str[3:2])  #無結果  不能逆序
print(str[1:-1])  #bcde
print(str[-6:2])  #ab
print(str[:2]) #ab
print(str[:]) #abcdef

  (3)同樣可使用 in 和 not in 操作符

str = 12345ddd6789

print(ddd in str) #True
print(012 not in str)  #True

  

  (4)數組是可變的,如append、insert、del等,但是字符串是 “不可變” ,如 str[0] = ‘d‘ ,改變的方式是通過切邊方式,如

str = 123456789

str2 = str[0:2] + add + str[6:8]
print(str2)  #12add78

6.函數

  (1)函數定義 def + 函數名(傳參),如

def hello(name):    #傳遞的參數
    print(你輸入了: + name)

i = 0
for i in range(0,3,1):
    hello(input())

import random   #導入函數

def getNumber(j):
if j == 1:
print(‘隨機數:‘ + str(j))
return ‘A‘
elif j == 2:
print(‘隨機數:‘ + str(j))
return ‘B‘
else:
print(‘隨機數:‘ + str(j))
return ‘C‘

i = 0
for i in range(0,3,1):
r = random.randint(1,3) #random.randint函數是產生 1<=*<=3 的整數
print(getNumber(r))

  

  (2)print() 函數。print() 函數返回值為None。

temp = print(測試返回值)
if temp == None:
    print(yes,str(temp))

  print() 函數輸出形式:

print(1,2,3) #空格自動分割

print(1, end=‘‘)
print(2)   # print 函數自動會加入換行符,end = ‘‘ 就制止

print(1,2,3,sep=..)  #輸出通過 ‘..’ 分割

  (3)global 語句。同 C 語言中一致,Python 中也分局部和全局變量,如果想通過局部函數修改全局變量,可以通過 global 函數。

def k1():
    global  t   
    t = 已經修改1

def k2():
    t = 已經修改2

t = 原始
print(t)  #原始
k2()
print(t)  #原始
k1()
rint(t)p  #已經修改1

  Python 中一個變量只能是局部或者全局變量,如

def k():
    print(egg)  #調用 K() 函數時,egg此句是全局變量,但在下一句中 egg 被重新聲明被認為是局部變量。報錯
    egg = 123

egg = 444
k()

  (4)try...except.. 函數。

def k(divide):
    try:
        return 32 / divide
    except:
        return 報錯

print(k(3))
print(k(2))
print(k(0))

7.數組

  (1)用 len() 取得列表長度。直接通過下表修改值

a = [12, ‘dd‘, 2]
print(len(a))
a[0] = ‘ppp‘
print(a)

  

  (2)數組的連接、復制、刪除

a = [12, ‘dd‘, 2]
b = [‘14‘]
d = b
c = b + a
e = b * 3
print(d,c,e,sep=‘.....‘) #[‘14‘].....[‘14‘, 12, ‘dd‘, 2].....[‘14‘, ‘14‘, ‘14‘]
del a[0] #刪除操作
print(a) #[‘dd‘, 2]

  (3)數組循環

catName = []
while True:
    print(請輸入第 + str(len(catName) + 1) + 只貓名字)
    name = input()
    if name == ‘‘:  #直接敲回車
        break
    catName += [name]

print(+ str(len(catName)) + 只貓)
for name in catName:   #沒有使用range
    print(  + name)
catName = [fdas,fd,ioo,wew,dfs]

for i in range(0,len(catName),2):  #常用 range(len(catName)) 遍歷整個數組
    print(  + catName[i]) #fdas  ioo   dfs

  (4)某個值是否在數組中用,in 和 not in 判斷

import random

catName = [1,2,3,4,5]
i = 0
for i in range(0,4,1):
    t = random.randint(1,10)
    if(str(t) in catName):
        print(str(t),)
    if(str(t) not in catName):
        print(str(t),不在)

  

  (5)多重賦值

name = [1,2]
t,a = name
print(t,a) #輸出 1 2

  

  (6)index() 方法,append(),insert(),remove(),sort()。

name = [1,2,1,999]

print(name.index(1))  #返回在數組中第一個出現的下標  0
name.append(4)   #在列表中添加新值
print(name)         #[‘1‘, ‘2‘, ‘1‘, ‘999‘, ‘4‘]
name.insert(1,999)  #在下標 1 處添加新值
print(name)         #[‘1‘, ‘999‘, ‘2‘, ‘1‘, ‘999‘, ‘4‘]
name.remove(999)   #刪除在數組中第一次出現的999,若不存在999則報錯
print(name)         #[‘1‘, ‘2‘, ‘1‘, ‘999‘, ‘4‘]
del name[0]
print(name)         #[‘2‘, ‘1‘, ‘999‘, ‘4‘]
name.sort(reverse=True)  #排序操作ASCII碼進行排序,可直接name.sort()
print(name)      #[‘999‘, ‘4‘, ‘2‘, ‘1‘]

8.元組

  (1)元組和數組十分類似,主要區別有兩點如下:

  • 元組輸入時使用 () 而非 [ ]
a = (1,2,3)
print(a) #輸出 (1,2,3)
print(a[2]) #3
  • 元組中的值不能修改,和字符串類似。所以 Python 可以以更優化的方式對待元組。同時,元組中如果之後一個值,通過加逗號來標識其是元組。(否則Python認為你只是普通括號)
a = (1,)  #不加逗號,下句出錯.當元組長度只為1時使用
print(a[0])

  (2)用 list 和 tuple 函數來轉換類型。常用於返回元組或者列表形式。

str = 1234
print(list(str)) #[‘1‘, ‘2‘, ‘3‘, ‘4‘]
print(tuple(str)) #(‘1‘, ‘2‘, ‘3‘, ‘4‘)

str2 = (12,dd)
print(list(str2)) #[‘12‘, ‘dd‘]

9. 引用

  (1)Python 中關於引用的知識點同 C 語言中十分類似,C 語言中如:int a = 3,實際上 a 形參是通過地址找到存儲 3 整個數字的 “格子技術分享圖片

  而數組 a[1,2,3] 則直接技術分享圖片這和 Python 幾乎一致。所以在 Python 中,普通類型的復制如 b = a 復制值,而數組之間復制,復制的是引用(即地址)。同樣,如果在傳遞給函數時,傳遞的參數是數組,則會改變原數組,傳遞的是一般數據類型,則不會修改原值,如:

def test(str):
    str += g

def test2(name):
    del name[0]

str = ddd
test(str)
print(str)  #ddd 未修改

name = [1,2,3]
test2(name)
print(name) #[2, 3]  #[2, 3] 修改

  (2)在處理列表時,傳入的是引用,如果只想傳入值,即修改了數組而不影響原有函數,通過 copy() 實現。如果要復制的列表中還包含列表,使用 deepcopy() 。

import copy

name = [1,2,3,[1,2,3]]

a = name
b = copy.copy(name)
c = copy.deepcopy(name)

a.append(aaa)wuxiao
print(name)  #[1, 2, 3, [1, 2, 3], ‘aaa‘]

b.append(bbb)
print(name)  #[1, 2, 3, [1, 2, 3], ‘aaa‘]    說明對列表有效

b[3].append(444)
print(name)  #[1, 2, 3, [1, 2, 3, ‘444‘], ‘aaa‘]  說明對列表中的列表有效

c.append(555)
print(name)   #[1, 2, 3, [1, 2, 3, ‘444‘], ‘aaa‘]  說明無效

10. 字典

  (1)字典即 Map ,由鍵值對組成。字典不同於列表,字典中表項是不排序的,如(字典不能排序

t = [1,2,3]
e = [2,1,3]
print(t == e)  #False

g = {k:j, kk:jj}
h = {kk:jj, k:j}
print(g == h)  #True

print(‘k‘ in g) #True  判斷 key 是否存在

  (2)keys() 方法,values() 方法,items() 方法。

g = {k:j, kk:jj}

for v in g.keys():  #key
    print(v)

for t in g.values():  #value
    print(t)

for b in g.items():  #key-value
    print(b)        #輸出元組
  print(list(b)) #輸出列表

for v,t in g.items():     #多重賦值
print(‘Key:‘,v,"Value",t)

  

  (3)get() 方法。如果通過 key 值取值,存在 key 不存在的風險,get() 函數可以設置一個默認返回值,避免錯誤。

g = {name:Tom, age:12}
print(Welcom, g.get(name‘, ‘Jack‘), he lives in, g.get(home,shanghai))

  

  (4)setdefault() 方法。該方法可以設置默認 key 對應的 value。如果該 key 已經存在,則無效,如:

g = {r:rr,b:bb}

g.setdefault(k, kk)
print(g)  #{‘r‘: ‘rr‘, ‘b‘: ‘bb‘, ‘k‘: ‘kk‘}  修改有效

g.setdefault(k,mm)
print(g)  #{‘r‘: ‘rr‘, ‘b‘: ‘bb‘, ‘k‘: ‘kk‘}   修改無效

  有一個較實用的場景,統計字符:

msg = fadfasfasdfadsfs
count = {}
for v in msg:
    count.setdefault(v, 0)   #很關鍵 設置為0,而不是1
    count[v] += 1
print(count)

  

Python基礎(不斷更新)