Python【系列教程】之基礎學習筆記

一、python安裝及第一個python程序

(1)官網下載最新版的python 64位安裝包並進行安裝

(2)配置環境變量

在安裝的時候,直接勾選Add  Python 3.7 to Path,單擊Customize installation可以在安裝時指定自定義的安裝路徑 單擊該選項即

可開始安裝。在接下來 安裝界面中只 改變 Python 安裝路徑(建議安裝在指定盤符的根路徑下 ,比如安裝在 D:\Python\目錄下), 其他地方使用默認選項即可。

安裝完成之後,打開cmd 面板,輸入python 看到如下輸出說明安裝成功!

C:\Users\段朝旭>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

輸入以下代碼進行測試

>>>  print("hello world")

hello world

>>> 1 + 2
3
>>> 5.3 + 2.3
7.6
>>> 1.3-2.4
-1.0999999999999999
>>> 1.3 * 2
2.6
>>> 3.5 / 3
1.1666666666666667
>>> 3.5 // 3
1.0
>>> 3.5 ** 2
12.25
>>> 5 ** 3
125
>>> import math
>>> math.sin(1.57)
0.9999996829318346
>>> math.cos(0.78)
0.7109135380122773
>>> math.tan(math.pi / 4)
0.9999999999999999

二、python基礎知識

(1)單行註釋和多行註釋

# 代表單行註釋
#print("hello,world")

"""代表多行註釋
"""
this is a duo hang de zhu shi
"""

(2)變量

Python 是弱類型語言 ,弱類型語言有兩個典型特徵

  • 變量無須聲明即可直接賦值 對一個不存在的變量賦值就相當於定義了一個新變量。
  • 變量的數據類型可以動態改變:同一個變量可以一會兒被賦值爲整數值,一會兒被賦值爲 字符串。

type()函數返回 傳入數據的數據類型

>>> type("hello")
<class 'str'>
>>> type(1)
<class 'int'>

print()函數用法

user_name = "Charlie"
user_age = 8
#打印時默認的間隔符是空格
print("用戶姓名",user_name,"用戶年齡",user_age)
#使用sep參數將默認的間隔符修改爲|
print("用戶姓名",user_name,"用戶年齡",user_age,sep="|")
#print函數默認會換行,因爲end參數默認是\n,我們可以指定爲空字符串,打印的時候就不會換行了
print(40,"\t",end="")
print(60,"\t",end="")
#可以直接輸出內容到一個文件中
f=open("D:\\open.txt","w")
print("鋤禾日當午",file=f)

輸出結果:

用戶姓名 Charlie 用戶年齡 8
用戶姓名|Charlie|用戶年齡|8
40 	60 	

(3)python的關鍵字和內置函數                                        

False None True and as
assert break class continue def
del elif else except finally
for from global if import
in is lambda nonlocal not
or pass reise return try
while with yield    

 使用keyword 查看 python的關鍵字

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

 python的內置函數

abs() all() any()

basestring()

bin()

bool()

bytearray() callable() chr() classmethod()
cmp() compile() complex() delattr() dict()
dir() divmod()

enumerate()

eval()

execfile()

file() filter() float() format() frozenset()
getattr() globals() hasattr() hash() help()
hex() id() input() int()

isinstance()

issubclass() 

iter()  len()  list() locals()
long() map() max() memoryview() min()
next()

object()

oct()

open()

ord()

pow()

print()

property()

range()

raw_input()

reduce()

reload() repr()

reversed()

zip()
round() set() setattr() slice() sorted()

staticmethod()

str()

sum()

super()

tuple()
type()

unichr()

unicode() vars()  xrange()
Zip()

__import__ ()

apply() buffer() coerce()
intern        

以上python內置的關鍵字以及內置的函數不應該作爲標識符。

(4)Python 整型數值有4種 表示形式

  • 十進制形式 最普通的整數就是十進制形式的整數
  • 二進制形式:以 Ob OB 開頭的整數就是 進制形式的整數
  • 八進制形式:以Oo或00 開頭的整數就是八進制形式的整數(第 二個字母是大寫或小寫的O)
  • 十六進制形式:Ox或 ox 開頭 整數就是十六進制形式的整數,其中 10 ~15 分別以a~f(此處的a~f不區分大小寫)來表示
>>> 0x13
19
>>> 0XaF
175
>>> 0b111
7
>>> 0B101
5
>>> 0o54
44
>>> 0O17
15

 (5)浮點型

浮點型數值用於保存帶 數點的數值, python 浮點數有兩種表示形式。

  • 十進制形式:這種形式就是平常簡單的浮點數,例如 5.12 512 0.512 。浮點數必須包含 一個小數點,否則會被當成整數類型處理。
  • 科學計數形式 例如 5.12e2 (即 5.12 *10^2 )、 5.12E2 (也是 5.12*10^2)必須指出的是,只有浮點型數值纔可以使用科學計數形式表示。例 51200 個整型值,但

512E2 則是浮點型值.

(6) 複數 

導入cmath模塊,例如:3 + 0.2j

(7) repr和字符串

sl ”這本書的價格是
p = 99.8 
#字符串直接拼接數值,程序報錯
print(sl + p) 
#使用 str()將數值轉換成字符串
print(sl + str(p)) 
#使用 repr()將數值轉換成字符串
print (sl+repr(p))

 str() 和 repr()函數都可 將數值轉換成字符串,其 str 本身是 Python 類型( 和int float 一樣〉,而 repr()則 只是 個函數 ,此外, repr 還有 一個功能, 它會以 Python 表達式 形式來表示 值。對 比如下兩行粗體 碼。

st = "i will play my life";

print (st)

print(repr(st))

上面代碼中 st 本身就是 個字符串 但程序依然使用了 repr() 對字符串進行轉換。運行上面程 序,可以看到下輸出結果。

I will play my fife

I will play my fife

 通過上面的輸出結果可以看出,如果直接使用print()函數輸出字符串 將只能看到字符串的內容, 沒有引號,但如果先使用 repr()函數對字符串進行處理,然後再使用 print() 執行輸出,將可以 看到帶引號 字符串一一 就是字 Python的表達式形式。

(8)使用input()函數獲取用戶輸入

python3中input()函數用於向用戶生成一條提示,然後獲取用戶輸入的內容,由於input()函數總會將用戶輸入的內容放入字符串中,因此用戶可以輸入任何內容,input()函數總是返回一個字符串

msg = input("請輸入你的值:")
print("您輸入得值是:",msg, "值的類型是:",type(msg))
請輸入你的值:2
您輸入得值是: 2 值的類型是: <class 'str'>

請輸入你的值:1.2
您輸入得值是: 1.2 值的類型是: <class 'str'>

請輸入你的值:Hello
您輸入得值是: Hello 值的類型是: <class 'str'>

 (9)長字符串

myPhone = """這是一個長字符串"""
print(myPhone)

myPhone ="這是一個" \
"長字符串"
print(myPhone)

num = 20+3/4+ \
2*3
print(num)

(10)原始字符串

由於字符串中的反斜線都有特殊的作用,因此當字符串中包含反斜線時,就需要對其進行轉義。 比如寫一條 Windows 的路徑 G:\publish\codes\02\2.4 ,如果在 Python 程序中直接這樣寫肯定 是不行的,需要寫成: G:\\publish\codes\\02\\2.4 ,這很煩人,此時可藉助於原始字符串來解決這個 問題 ,原始字符串以“r ”開頭, 原始字符串不會把反斜線當成特殊字符。因此,上面的 Windows 路徑可直接寫成 r' G:\publish\codes\02\2.4

url = "D:\\sadasda\\asdsadasd"
url = r"D:\sadasda\asdsadasd";
print(url)

 (11) 字節串bytes

#創建一個空的bytes
bttes1 = bytes()
print(bttes1)
#創建一個空的bytes
bttes2 = b''
print(bttes2)
#通過前綴指定hello是bytes類型的值
b3 = b'hello'
print(b3)
print(b3[0])
print(b3[2:4])
# 調用bytes方法將字符串轉換成bytes對象
b4 = bytes('我愛kxm',encoding='utf-8')
print(b4)
# 利用字符串的encode()方法編碼成bytes,默認使用UTF-8字符集
b5 = "我愛kxm".encode('utf-8')
print(b5)
# 將bytes解碼成字符串
b5str = b5.decode("utf-8")
print(b5str)

(12)字符串格式化

price = 108 
print ("the book ’s price is %s" % price)

格式化字符串中的“ %s ”被稱爲轉換說明符(Conversion Specifier),其作用相當於一個佔位符, 它會被後面的變量或者 表達式的 值代替。 %s 指定將變量或值使用 str () 函數轉換爲字符串。 如果格式 字符串 包含多個“%s ”佔位符,第三部分也應該對應地提供多個變量,並且使 用圓括號將這些變量括起來。 如下代碼:

print("the book price is %s %s" % ("我","是一個粉刷匠"))

 

轉換說明符

說明

d, i

轉換爲帶符號的十進制形式的整數

o

轉換爲帶符號的八進制形式的整數

x

轉換爲帶符號的十六進制形式的整數

X

轉換爲帶符號的十六進制形式的整數
e

轉化爲科學計數法表示 的浮點數( e小寫)

E

轉化爲科學計數法表示 的浮點數( E大寫

f,F 轉化爲十進制形式的浮點數

g

智能選擇使用 f或者e格式

G

智能選擇使用 f或者e格式

C

轉換爲單字符(只接受整數或者單字符字符串

r 使用repr()將變量或者表達式轉換爲字符串
s 使用str () 將變量或者表達式轉換爲字符串

(13)序列相關方法

# 希望kxm能夠快點好起來
test = "希望kxm能夠快點好起來"
# 獲取test 從右邊開始,索引爲4的字符
print(test[-4])
# 獲取test從2開始到結束的字符串
print(test[2:])
# 獲取test 從索引爲2到4的字符串
print(test[2:4])
# 獲取test從索引 -6到-3的字符串
print(test[-6:-3])
# 使用in關鍵字判斷 test 是否包含 very 字符串
print('very' in test)
print('kxm' in test)
# 獲取test字符串的長度
print(len(test))
# 獲取test字符串中的最大字符
print(max(test))
# 獲取test字符串中的最小字符
print(min(test))

(14)大小寫相關方法

dir() : 列出指定類或模塊包含的全部內容(包括函數、方法、類、變量等)。

help(): 查看某個函數或方法的幫助文檔。

str類中與大小寫相關的常用方法如下:

test = " abC jkL"
# 將每個單詞首字母改爲大寫
print(test.title())
# 將整個字符串改爲大寫
print(test.upper())
# 將整個字符串改爲小寫
print(test.lower())

print(dir(str))
print(help(str.lower))
# 刪除字符串前後的空白
print(test.strip())
# 刪除字符串前面(左邊)的空白
print(test.lstrip())
# 刪除字符串後面(右邊)的空白
print(test.rstrip())
#判斷字符串是否 以指定子串開頭
print(test.startswith(" "))
print(test.endswith("l"))
#查找指定子串在字符串中出現的位置,如果沒有找到指定子串 ,則返回-1
print(test.find("a"))
#查找指定子串在字符串中出現的位置,如果沒有找到指定子串 ,則引發 ValueError錯誤。
print(test.index("a"))
#使用指定子串替換字符串中的目標子串
print(test.replace("jk","mk"))
#定義翻譯映射表
table = {97:945 , 98:946 , 116: 964}
print(test.translate(table))
"""str的translate()方法需要根據翻譯映射表對字符串進行查找、替換。在
上面程序中自己定義了一個翻譯映射表,這種方式需要開發者能記住所有字符的編碼 ,這顯然
不太可能 爲此, Python 爲由類提供了一個 maketrans ()方法,通過該方法可以非常方便地創建翻
譯映射表"""
table1 = str.maketrans("ab","OP")
print(test.translate(table1))


myStr = "my.org is a good site"
#使用空白對字符串進行分割
print(myStr.split())
#使用空白對字符串進行分割,最多隻分割前兩個單詞
print(myStr.split(None,2))
#使用點進行分割
print(myStr.split("."))
mylist = myStr.split()
#使用 /作爲分割符,將 mylist 連接成字符串
print("/".join(mylist))
#使用 ,作爲分割符,將 mylist 連接成字符串
print(",".join(mylist))

(15) 運算符

# 連續賦值
a = b = c = 20
print(a, b, c)
x = - 5.0
x = -x
print(x)
y = -5.0
y = +y
# n 個字符串拼接起來
s3 = 'crazy'
print(s3 * 5)
"""“/表示普通除法,使用它除出來的結果與
平常數學計算的結果是相同的(即除不盡時,會產生小數部分);而“//”表示整除,使用它除出
來的結果只有整數部分,小數部分將會被捨棄。"""
print(19 / 4)
print(19 // 4)
"""%:求餘運算符 Python要求求餘運算符的兩個操作數都是整數, Python 的求餘運算符完全
支持對浮點數求餘。求餘運算的結果不一定總是整數,它是使用第一個操作數來除以第二個操作數,
得到一個整 結果後剩下的值就是餘數。"""
print(5 % 3)
print(5.2 % 3.1)
# ** 乘方/ 開方運算
print('5的2次方:', 5 ** 2)  # 25
print('4的3次方', 3)  # 64
print('4的開平方:', 4 ** 0.5)  # 2.0
print('27的開3次方', 27 ** (1 / 3))  # 3.0

"""
& : 按位與 
0 0 0  (兩個數都是0,所以結果纔是0)
0 1 0  (兩個數只有一個爲1,所以結果是0)
1 1 1  (兩個數結果都是1,所以結果纔是1)

| :按位或  
0 0 0  (兩個數都是0,所以結果是0)
0 1 1  (兩個數只要其中一個是1,結果就是1)
1 1 1  (兩個數都是1,所以結果是1)

^ : 按位異或。 
0 0 0   (相同爲0,不同爲1)
0 1 1
1 1 0

~ : 按位取反。(0變成1,1變成0)
0 0
1 1 
<<: 左位移運算符:左移運算符是將操作數的二進制碼整體左移指定位數,左移後右邊空出來的位以0來填充
0010101 << 2 
1010100
>>: 右位移運算符: Python 右移運算符爲 >>。對於“>>”運算符而言,把第一個操作數的二進制右移指定
位數後,左邊空出來的位以原來的符號位來填充。即 :如果第一個操作數原來是正數,則 左邊補 0;
如果第一個操作數是負數,則 邊補 o
1010011 >>2
1010000
必須指出的是,位移運算符只適合對整型數進行運算

"""
a = 'abcdefghijklmn'
# 獲取索引2到索引8的子串,步長爲3
print(a[2:8:3])  # 輸出cf
# 獲取索引2到索引8的子串,步長爲2
print(a[2:8:2])  # 輸出ceg

a = 3
b = a
# 判斷兩個變量所引用的對象是否相同,
print(a is b)
# 判斷兩個變量所引用的對象是否不相同.
print(a is not b)
# 使用id()獲取所引用的對象的內存地址
print(id(a))
print(id(b))
# 布爾值也可以進行運算
print(True + False)
print(False - True)
print(-True)
print(-False)
# ==只比較兩個變量的值,但 is要求兩個變量引用同一個對象。
import time

a = time.time()
b = time.time()
print(a == b)  # 輸出True
print(a is b)  # 輸出False
# 邏輯運算符 and  or not

a = "book"
if a.startswith("b") and len(a) > 2:
    print(True)
else:
    print(False)

a = 75
b = 60
st = a if a > b else b
print(st)

小練習:

(1)

num1, num2 = int(input("請輸入第一個整數:")), int(input("請輸入第二個整數:"))
print(num1 // num2)
print(num1 / num2)
print(num1 + num2)
print(num1 - num2)
print(num1 * num2)

輸出結果:

 請輸入第一個整數:10
請輸入第二個整數:2
5
5.0
12
8
20

(2) 

# 打印一個字串在一個字符串中出現的次數
string, sub_string = input("請輸入字符串:"), input("請輸入子串:")
count = 0
subLen = len(sub_string)
print(range(len(string) - 1))
for i in range(len(string) - 1):
    if string[i:i + subLen] == sub_string:
        count += 1
print("子串出現的次數是 %s" % count)

輸出結果: 

請輸入字符串:abcabcabc
請輸入子串:ab
range(0, 8)
子串出現的次數是 3

(3)

num1 = int(input("請輸入一個整數:"))
print("十進制:%d" % num1)
print("八進制:%s" % oct(num1))
print("十六進制(大寫):%s" % hex(num1))
print("二進制:%s" % bin(num1))

輸出結果: 

請輸入一個整數:50
十進制:50
八進制:0o62
十六進制(大寫):0x32
二進制:0b110010

 (4)

string, sub_string = input("請輸入字符串:"), input("請輸入子串:")
list = sub_string.split(" ")
index,repStr = list[0],list[1]
tem = string[int(index)]
#方法一
print(string.replace(tem,repStr,1))
#方法二
str_new = string[:int(index)] + repStr + string[int(index)+1:]
print(str_new)

請輸入字符串:ab.ccc
請輸入子串:3 p
ab.pcc
ab.pcc

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