Python基礎知識以及字符串——第一、二天

1.對Python的理解

  • 解釋型語言:
    執行一句代碼生成一段字節碼(與平臺無關的中間碼)代碼在python解釋器裏執行,轉換成目標平臺(cpu)命令,再到cpu裏執行。
  • 編譯型語言: 是一次性將代碼全部生成機器語言,再到指定cpu裏執行,編譯型語言是要到其他cpu中運行,代碼需要重新編譯。
  • 兩者區別:
    解釋型語言執行一句生成一段,編譯型語言是一次性生成的;解釋型語言有虛擬機,編譯型語言無虛擬機;解釋型語言可以在多平臺運行,編譯型在制定平臺運行。
  • 定義理解:
    (1)Python是解釋型語言,開發過程中沒有編譯環節。
    (2)Python是交互式語言,可以在提示符>>>後直接執行代碼
    (3)Python是面嚮對象語言,支持面向對象的風格或代碼封裝在對象的編程技術,通過組合(類裏寫類)和派生(繼承)來定義類。
    (4)Python是動態語言,在創建新的變量時,不去指定變量的類型。
  • Python的特點
    (1)易於學習:關鍵字較少,結構簡單,明確定義的語法。
    (2)易於閱讀:代碼定義更清晰。
    (3)易於維護:代碼相當易於維護。
    (4)庫豐富:庫豐富,跨平臺,在UNIX、Widows、MCAC的兼容性都很好。
    (5)可移植、可擴展(加入C/C++程序)、可嵌入(將Python程序嵌入到C/C++)
    (6)編碼快,但運行速度慢
    (7)應用廣泛,適用於網絡應用、數據建模、大數據應用、自動化等。
    (8)縮進很重要、很重要、很重要。

2.Python2和Python3的區別
暫時省略
可以同時下載兩個版本的python,配置兩個環境變量使用
編輯器pycharm備註多行代碼快捷鍵Ctrl+/。

3.變量組成規則
(1)變量由字母、數字下劃線組成。
(2)不能以數字開頭。
(3)不能使用關鍵字(保留字)作爲變量。
(4)儘量讓變量命名變的有意義。

4.頭部加入編碼:

#!/usr/bin/python
# -*- coding:utf-8 -*-.
前兩行固定,否則不生效,1字節=8位。

5.Python的註釋

(1)單行註釋:以#開頭
(2)多行註釋:用多個#,或者三個單引號 ‘’‘ “”“或者三個雙引號“”“ ”“”,無論用什麼都是成對出現的。

6.if條件語句舉例

if weather==30print("簡直熱死個人")
elif weather==20print(“溫度剛剛好”)
elif weather==-30print(“凍成冰棍了”)
elseprint(“今天沒看天氣預報”)

注意:
縮進的空格是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數,否則會報錯。
if語句支持嵌套。Python的if後面是冒號,不和Java一樣是括號。

7.將一行語句分爲多行顯示

(1)用 \ 將一行的語句分爲多行顯示,語句中如果有[] 、{}、()就不需要多行連接符。

totol = one + \
           two + \
           three

(2)還可以在一行顯示多條語句,用分號隔開i

import sys; x = a+b;a=1,b=1; print(x)

8.數字類型以及標準數據類型
有四種數字類型:
(1)int(整型):如1,python3中沒有long。
(2)bool(布爾類型):True、False。
bool爲false的幾種情況:None、“”、()、[]、{}、0
(3)float(浮點型):如1.23。
(4)complex(複數類型):如1+2j。
六種數據類型:
(1)Number(數字型)
(2)String(字符串)
(3)List(列表):列表是寫在方括號 [] 之間、用逗號分隔開的元素列表。
(4)Tuple(元組):寫法類似list。
(5)Set(集合):創建一個空集合用 set()。
(6)Dictionary(字典):字典用 { } 標識,它是一個無序的 鍵(key) : 值(value) 的集合。
不可變數據:Number、String、Tuple。
可變數據:List、Dictionary、Set。

9.字符串
(1)用+將字符串連接在一起,用*重複。
(2)\ 可以用來轉義,使用 r 可以讓 \ 不發生轉義。如 r"this is a line with \n" 則\n會顯示,並不是換行。
(3)Python中的字符串有兩種索引方式,從左往右以0開始,從右往左以-1開始。
(4)字符串一旦創建不可修改,一旦修改,會重新生成字符串

10.切片範圍

說明:逗號“,”分隔各個維度,“:”表示各個維度內的切片,只有:表示取這個維度的全部值,從0開始,第一位是x[0],-1爲倒數第一位。

1.一維數組

(1)x[n]:表示獲取第n+1個字符內容

(2)x[i:j] :表示獲取a[i]到a[j-1]

(3)x[:n]:輸出前n個字符

(4)x[:-n]:去掉最後n個字符

(5)x[n:]:輸出從第n+1位開始的所有字符

(6)x[-n:]:取最後n個字符

(7)x[i:j:k]這種格式呢,i,j與上面的一樣,但k表示步長(就是一組k個),默認爲1時,和x[i:j]相同。

(8)x[::-1]是從最後一個元素到第一個元素複製一遍(反向)

2.二維數組
(1)x[:,0]取所有行的第0個數據,第二維下標位0的所有數據,第0列(從0開始)

(2)x[:,1] 取所有行的第1個數據

(3)x[:,1:]第一維全部取,即所有行,列上從第一列開始取,不要第0列

(4)x[1,:]是取第1維中下標爲1的元素的所有數據,第1行(從0開始)

(5)x[:2,1:]第一維取下標2之前的,即第2行之前(0,1兩行),列上從第一列開始取,不要第0列

3.三維數組

(1)x[1,1,2]表示第一維取1,第二維取1,第三維取2

(2)x[:,1,2]表示第一維全取,第二維取1,第三維取2

(3)x[:,1:,2]表示第一維全取,第二維取1及1之後的所有值,第三維取2

(4)x[:,1:,:2]表示第一維全取,第二維取1及1之後的所有值,第三維取2之前的值(0,1)

切片例子:
在這裏插入圖片描述
11.導入文件

import或者from...import

12.數值運算

運算 符號
+
-
*
/
取商 //
取餘 %
乘方 **
&
l
異或(相同爲0,不同爲1) ^
取反 ~

13.循環語句
(1)break:在執行過程中終止循環,並且跳出整個循環。
(2)continue:在執行過程中終止當前循環,跳出該次循環,執行下一次循環。
(3)pass:pass爲空語句,是爲了保護程序結構的完整性。
(4)for循環
rang

for 變量名 in 字符串:
     print(變量名)   #可以把所有的字符串輸出來
     
for i in range(0,10,1):
    print(i)            
         
  #輸出結果:1 2 3 4 5 6 7 8 9


for i in range(10,0,-1):
    print(i)
    
#輸出結果:10 9 8 7 6 5 4 3 2 1

14.in與not in
in只能跑哪判斷單個字符或者連續的字符在不在其中,不能判斷間隔1、3位置上的字符。

15.魔法字符串
(1)7個必須要背會的方法
join
split
find
strip
upper
lower
replace
(2)4個必須會的灰魔法
len
for循環
索引
切片
(3)魔法的解釋加例子

1、capitalize () ——魔法:將字符串的首字母大寫
2、casefold()——魔法:可以將未知的字符串對應的關係也變小寫,即字符串中的所有字符變小寫,比lower()更厲害
3、lower()——魔法:將字符串中的大寫字母變小寫
4、upper()——魔法:將字符串全部變大寫
5、center(self,width,fillchar=None)——魔法:將字符串居中顯示。width後面必須要帶一個值,指字符串的長度,self可忽略,sub表示字符串的子序列,”None“的可填可不填,fillchar指的是可以用什麼填充

test="hhhhh"
test1=test.center(20,"*")
print(test1)

輸出結果:*******hhhhh********

6、ljust(width,fillchar=none)——魔法:在左側填充字符
7、rjust(width,fillchar=none)——魔法:在右側填充字符

8、count(self,sub,start=None,end=None)——魔法:計算一個指定的字符出現了幾次,可以是多個字符
9、endwith(self, suffix, start=None, end=None)——魔法:以什麼結尾,判斷結果爲true或者flase

10、startswith(self, prefix, start=None, end=None)——魔法:以什麼開始,判斷結果爲true或者flase
11、find(self, sub, start=None, end=None) ——魔法:從開始往後找,找到第一個字符後,獲取其位置,如果找不到,則返回-1。
12、index(self, sub, start=None, end=None)——魔法:和find作用相同,但區別是找不到,直接報錯
13、format()——魔法:格式化字符串,將字符串中的佔位符替換成指定的值

test = "i am {name},age {a}"
v = test.format(name='小明',a='10')
print (v)

#輸出結果:i am 小明,age 10

*format()如果用字典的方式傳進去,得加**纔可以*
test = "i am {name},age {a}"
v = test.format(**{"name":"小明","a":10})
print (v)


#輸出結果:i am 小明,age 10

如果中括號裏面什麼都不寫,寫{0} {1} {2},代表第一個佔位符,第二個佔位符,第三個佔位符。下面就不用再寫name=啥了,默認對應的,直接寫值就行了,寫3個值,就對應上面3個佔位符,依次從左向右。

test = "i am {0} age {1} weight {2}"
v = test.format('小明','10','40kg')
print (v)


#輸出結果:i am 小明 age 10 weight 40kg

14、format_map({})——魔法:format_map也是格式化,傳入的值必須是這樣的格式{ “name”: ‘小明’,“a”: 10 },這個格式就是一個字典格式

test = "i am {name} age {a}"
v = test.format_map({ "name": '小明',"a": 10 })
print (v)


#輸出結果:i am 小明 age 10

15、isalnum(self)——魔法:判斷字符串中只能由字母和數字,不能有特殊符號
16、isalpha(self)——魔法:判斷字符串中是否都是字母(漢字也可以)
17、isdecimal(self)——魔法:判斷字符串是否爲數字(工作中常用)
18、isdigit()——魔法:判斷字符串是否只包含數字,比isdecimal更厲害一些,特殊數字也可以,例如 ①
19、isnumeric()——魔法:判斷是否是數字,比上兩個更厲害,不僅可以識別特殊數字,還可以識別中文
20、isprintable()——魔法:判斷是否可打印(\t,\n肉眼不可見的,爲false)
21、isspace()——魔法:判斷字符串是否是空格,一個或多個都返回true,“”爲空或其他則返回false
22、istitle()——魔法:判斷字符串是否是標題(標題的首字母大寫,支持中文)
title()——魔法:將字符串轉換成標題
23、isupper()——魔法:判斷字符串是否都是大寫字母(支持中文和數字)
upper()——魔法:轉換成大寫字母
24、islower()——魔法:判斷是否都是小寫字母(支持中文和數字)
lower()——魔法:轉換成小寫字母
25、join(self, iterable)——魔法:連接字符串,一般形式爲“ ”join(字符串),“ ”裏面填充什麼都行

S = "今天是2019年11月7日"
v1 = " ".join(S)
v2 = "*****".join(S)
print (v1)
print(v2)


#輸出結果:
今 天 是 2 0 1 91 17 日
今***************2*****0*****1*****9**********1*****1**********7*****

26、strip()——魔法:去除左右空白
27、lstrip()——魔法:去除字符左邊的空格(包括\t \n),還可以去除指定的字符串,還可以移除指定字符的,如下

S = "gdhhhgertet"
v = S.lstrip('g')
print (v)                           

去除左邊的g
#輸出結果:dhhhgertet

28、rstrip()——魔法:去除字符串右邊的空格 (包括\t \n)還可以去除指定的字符串,也可以去除右邊的指定字符
29、maketrans(“A”,“B”) ——魔法:A和B作置換,配合translate一起使用

a = "fshfskjgjgfsghh"
b = a.maketrans("fs","22")
c =  a.translate(b)
print(c)

#輸出結果:22h22kjgjg22ghh

30、partition(self, sep)——魔法:找到指定的字符,保留分割字符串,以分隔符將原字符串分成三部分,以()形式輸出,如下

a = "hsdhgjghsgfsf"
print(a.partition("jg"))

#輸出結果:('hsdhg', 'jg', 'hsgfsf')

31、rpartition()——魔法:從字符串右邊開始以指定的字符分割符進行分割
32、split(“”,n)——魔法:以指定字符進行分割,進行分割n次操作,以數組形式輸出

a = "hsdhgjghsgfsf"
print(a.split("s",3))

#輸出結果:['h', 'dhgjgh', 'gf', 'f']

33、rsplit()——魔法:從字符串右邊開始,以指定字符進行輸出,但是還是從左往右輸出的
34、splitlines()——魔法:只能根據換行符\n進行分割,裏面可填寫true/false,true時\n保留
35、swapcase()——魔法:大小寫轉換
36、replace(“A”,“B”,n)——魔法:將A替換成B,替換n次
37、isidentifier()——魔法:是否符合標識符規則
38、expandtabs(tabsize)——魔法:字符串加空格,與\t結合使用,加\n會變成表格

a = "fsdjsg\tggdgdf\nfsdjsg\tggdgdf\n"
b = a.expandtabs(10)
print(b)


#輸出結果:
fsdjsg    ggdgdf
fsdjsg    ggdgdf
發佈了17 篇原創文章 · 獲贊 55 · 訪問量 4438
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章