Python基礎

Python基礎

變量定義

變量的概念基本上和初中代數的方程變量是一致的,只是在計算機程序中,變量不僅可以是數字,還可以是任意數據類型。
變量在程序中就是用一個變量名錶示了,變量名必須是大小寫英文、數字和_的組合,且不能用數字開頭,比如:

a = 1

字符串的格式化

格式化有兩種方法:
利用百分號(%)
利用format函數

利用百分號格式化

在字符串中,利用%表示一個特殊的含義,表示對字符進行格式化%d: 此處應該放入一個整數%s: 表示此處應該放入一個字符串:

print("I love %s"%"C++")

輸出結果爲:I love C++

format函數格式化字符串

直接用format函數進行格式化- 推薦使用這種方法。
在使用上,以{}和.代替%號,後面用format帶參數完成format函數格式化字符串。

s = "I love {}".format("Python")
print(s)
s = "Yes, i am {1} years old, I love {0} and i am {1} years old".format("Python", 18)
print(s)

運算符

算數運算符

# +,-跟正常算術運算符一模一樣
a = 9+3-2
print(a)
# 乘號用星號(*)代替
a = 9 * 4
print(a)
# 除號用斜槓(/)代替
# 在Python2.x 和python3.x 中,除號(/)結果可能不一致,此處以3系列爲準
a = 9/4
print(a)
# % 取餘運算
# 兩個數字相除應該有商數有餘數
# % 只會得到餘數
a = 9 % 4
print(a)
# // 表示取商運算,也叫地板除
a = 9 // 4
print(a)
# ** 表示冪運算
a = 9 ** 4
print(a)

賦值運算符

# = , 賦值
a = 0
c = a = 4
# +=, 是縮寫,
a = 0
a += 7 # a = a+ 7 的縮寫
print(a)

邏輯運算符

and 邏輯與
or 邏輯或
not 邏輯非

a = True
b = False
c = True
# 以下式子等價於 d = 1 * 0 + 1
d = a and b or c
print(d)
d = a or b and a
print(d)

成員運算符號-用來檢測某一個變量是否是另一個變量的成員

in
not in

l = [1,2,3,4,5]
a = 7
b = a in l
print(b)
a = 4
print(a in l)
print(a not in l)

輸出結果爲:
False
True
False

身份運算

is: 用來檢測兩個變量是否是同一個變量
語法就是 var1 is var2
is not: 兩個變量不是同一個變量

a = 9
b = 9
print( a is b)

a = "I love Python"
b = "I love Python"
print( a is b)

輸出結果爲:
True
False

三大結構

順序
分支
循環

分支

分支的基本語法

 if 條件表達式:
    語句1
    語句2
    語句3
#案例
score = 59
if  score < 60:
    print("恭喜你")
    print("高數不及格")
print("finished")

輸出結果爲:
恭喜你
高數不及格
finished

雙向分支

if…else…語句 `

if 條件表達式:
      語句1
      語句2
      ...
else:
      語句1
      語句2
      .....

多路分支

if  條件表達式:
      語句1
      ....
  elif 條件表達式:
      語句1
      ...
  elif 條件表達式:
      語句1
      ...

  .....
  else:
      語句1
      ....

循環語句

分類:
for循環
while循環

for循環

for 變量 in 序列:
      語句1
      語句2
      ...
# 打印學生列表姓名
for name in  ['zhangsan', 'lisi', 'wangwu','jingjing']:
    print(name)

輸出結果爲:
zhangsan
lisi
wangwu
jingjing

range函數

# range練習
# 打印從1-10的數字
# 注意,一般在python中,如果由表示數字範圍的兩個數,一般是包含左邊數字不包含右邊數字
# range函數在python2 和 python3中有嚴重區別(2生成列表,3生成迭代器)
for i in range(1,11):
    print(i) 

輸出結果:
1
2
3
4
5
6
7
8
9
10

for-else語句

當for循環結束的時候,會執行else語句
else語句是可選語句

for name in  ['zhangsan', 'lisi', 'wangwu','jingjing']:
    print(name)
    if name == "jingjing":
        print("{0}同學高數不及格".format(name))
    else:
        print("{0}同學高數ok".format(name))
else:
    print("沒有其他同學的高數成績了")

輸出結果爲:
zhangsan
zhangsan同學高數ok
lisi
lisi同學高數ok
wangwu
wangwu同學高數ok
jingjing
jingjing同學高數不及格
沒有其他同學的高數成績了

函數

定義

# 定義一個函數
# 只是定義的話不會執行
# 1. def關鍵字,後跟一個空格
# 2. 函數名,自己定義,起名需要遵循便令命名規則,約定俗成,大駝峯命名只給類用
# 3. 後面括號和冒號不能省,括號內可以由參數
# 4. 函數內所有代碼縮進
def func():
    print("我是一個無情的函數")
print("我結束了")

輸出結果爲:
我結束了

# 函數的調用
# 直接函數名後面跟括號
func()

輸出結果爲:
我是一個無情的函數

函數的參數與返回值

參數: 負責給函數傳遞一些必要的數據或者信息
形參(形式參數): 在函數定義的時候用到的參數沒有具體值,只是一個佔位的符號,成爲形參
實參(實際參數): 在調用函數的時候輸入的值
返回值: 函數的執行結果使用return關鍵字
如果沒有return,默認返回一個None函數
一旦執行return語句,則無條件返回,即結束函數的執行

def hello(person):
    print("{0},你好".format(person))
    print("{0},再見".format(person))
  
p = 1
hello(p)

1,你好
1,再見

# return語句的基本使用
# 函數打完招呼後返回一句話
def hello(person):
    print("{0},你好".format(person))
    print("{0},再見".format(person))
    return "我已經跟{0}打過招呼了".format(person)
  
p = "小明"
rst = hello(p)
print(rst)

小明,你好
小明,再見
我已經跟小明打過招呼了

參數詳解

參數分類
普通參數
默認參數
關鍵字參數
收集參數

def stu(name, age, addr):
    print("I am a student")
    print("我叫 {0}, 我今年 {1}歲了, 我住{2}".format(name, age, addr))
    
    
n = "jingjing"
a = 18
addr = "我家"

# 普通參數,只按照位置傳遞,容易出錯
stu(a, n, addr)

def stu_key(name="No name", age=0, addr="No addr"):
    print("I am a student")
    print("我叫 {0}, 我今年 {1}歲了, 我住{2}".format(name, age, addr))
    
    
n = "jingjing"
a = 18
addr = "我家"

# 關鍵字參數,不容易出錯
stu_key(age=a, name=n, addr=addr)

輸出結果爲:
I am a student
我叫 18, 我今年 jingjing歲了, 我住我家
I am a student
我叫 jingjing, 我今年 18歲了, 我住我家

收集參數

把沒有位置,不能和定義時的參數位置相對應的參數,放入一個特定的數據結構中

def func(*args):
      func_body
      按照list使用方式訪問args得到傳入的參數

  調用:
  func(p1, p2, p3, .....)

參數名args前需要由星號收集
參數可以和其他參數共存

# 收集參數代碼
# 函數模擬一個學生進行自我介紹,但具體內容不清楚
# args把他看做一個list
def stu( *args):
    print("Hello 大家好,我自我介紹以下,簡答說兩句:")
    # type函數作用是檢測變量的類型
    print(type(args))
    for item in args:
        print(item)

stu("小明", 18, "北京", "小芳", "單身")
stu("小明")

輸出結果爲:
Hello 大家好,我自我介紹以下,簡答說兩句:
<class ‘tuple’>
小明
18
北京
小芳
單身
Hello 大家好,我自我介紹以下,簡答說兩句:
<class ‘tuple’>
小明

收集參數之關鍵字收集參數

把關鍵字參數按字典格式存入收集參數

 def func( **kwargs):
      func_body

  # 調用:
  func(p1=v1, p2=v2, p3=v3........)

# 收集參數案例
# 自我介紹
# 調用的時候需要使用關鍵字參數調用
def stu( **kwargs):
    # 在函數體內對於kwargs的使用不用帶星號
    print("Hello 大家好,我先自我介紹一下:")
    print(type(kwargs))
    # 對於字典的訪問,python2 和python3有區別
    for k,v in kwargs.items():
        print(k, "---", v)
stu(name="小明",  age=19, addr="北京", lover="小芳", work="程序員")
print("@" * 50)
stu(name="小明")

Hello 大家好,我先自我介紹一下:
<class ‘dict’>
name — 小明
age — 19
addr — 北京
lover — 小芳
work — 程序員
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Hello 大家好,我先自我介紹一下:
<class ‘dict’>
name — 小明

收集參數的解包問題

把參數放入list或者字典中,直接把list/dict中的值放入收集參數中

# 收集參數的解包問題
def stu(*args):
    print("哈哈哈哈哈")
    # n 用來表示循環次數
    # 主要用來調試
     n = 0
    for i in args:
        print(type(i))
        print(n)
        n += 1
        print(i)
li = ["小明","小芳"]
stu(*li)

輸出結果爲:
哈哈哈哈哈
<class ‘str’>
0
小明
<class ‘str’>
1
小芳

同理,dict類型收集參數一樣可以解包,但是¶對dict類型進行解包需要用兩個星號進行解包

局部變量爲全局變量

使用global

def fun():
    global b1
    b1 = 100
    print(b1)
    print("I am in fun")
    # a2的作用範圍是fun
    b2 = 99
    print(b2)

#print(b2)
fun()
# print(b1)如果在函數調用上面,則不好使,報錯,爲什麼???
print(b1)

輸出結果爲:
100
I am in fun
99
100

Python內置數據結構

列表

# 1, 創建空列表
l1 = []
print(l1)
# 2. 創建帶值的列表
l2 = [100]
print(l2)
# 3. 使用list()
l3 = list()
print(type(l3))
print(l3)

列表常用操作

訪問
# 下標訪問列表
l = [3,2,1,4,6,3,2]
print(l[3])

輸出結果爲:
4

切片
# 切片操作
# 注意截取的範圍,包含左邊的下標值,不包含右邊的下標值
print(l[1:4])
# 下標值可以爲空,如果不寫,左邊下標值默認爲0, 右邊下標值爲最大數加一,即表示截取到最後一個數據
print(l[:])
print(l[:4])
print(l[2:])

輸出結果爲:
[2, 1, 4]
[3, 2, 1, 4, 6, 3, 2]
[3, 2, 1, 4]
[1, 4, 6, 3, 2]

print(l)
# 切片可以控制增長幅度,默認增長幅度爲1
print(l[1:6:1])
# 打印從下標1開始的數字,每次隔一個
print(l[1:6:2])

輸出結果爲:
[3, 2, 1, 4, 6, 3, 2]
[2, 1, 4, 6, 3]
[2, 4, 3]

# 切片之負數下標
print(l)
# 下面顯示的是爲空,因爲默認分片總是從左向右截取
# 即正常情況,分片左邊的值一定小於右邊的值
print(l[-2:-4])
print(l[-4:-2])
# 如果分片一定左邊值比右邊大,則步長參數需要使用負數
# 此案例爲一個list直接正反顛倒提供了一種思路
print(l[-2:-4:-1])

輸出結果爲:
[3, 2, 1, 4, 6, 3, 2]
[]
[4, 6]
[3, 6]

刪除列表中的值
# del 刪除
a = [1,2,3,4,5,6]
del a[2]
print(a)

輸出結果爲:
[1, 2, 4, 5, 6]

其他操作
# 使用加號鏈接兩個列表
a = [1,2,3,4,5]
b = [5,6,7,8,9]
d = ['a', 'b', 'c']
c = a + b + d
print(c)

輸出結果爲:
[1, 2, 3, 4, 5, 5, 6, 7, 8, 9, ‘a’, ‘b’, ‘c’]

# 使用乘號操作列表
# 列表直接跟一個整數相乘 
# 相當於把n個列表接在一起
a = [1,2,3,4,5]
b = a *3
print(b)

[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章