目錄
1.浮點數不精確問題
2.字串型別定義
3.資料型別轉換
4.中文編碼宣告注釋
5.python的輸入:input()函式
6.python中的運算子
7.程式的組織結構
8.物件的布林值
9.pass陳述句
10.內置函式range()
11.與else陳述句搭配使用的三種情況
12.回圈的嵌套
13.串列
1.浮點數不精確問題
- 在使用浮點數計算時,會出現小數位數不確定的情況,
a=1.1
b=2.2
print(a+b) #輸出3.3000000000000003
- 這種情況下,我們需要匯入decimal包來解決,
from decimal import Decimal
print(Decimal('1.1')+Decimal('2.2')) #輸出3.3
2.字串型別定義
- 單引號和雙引號定義的字串必須在一行
- 三引號定義的字串可以分布在連續的多行
str1='hello world!'
str2="hello world!"
str3='''hello
world!''' #單引號的三引號
str4="""hello
world!""" #雙引號的三引號
3.資料型別轉換
- int(),從str、float型別轉換到int型別
- float(),從int、str型別轉換到float型別
- str(),從int、float型別轉換到str型別
4.中文編碼宣告注釋
#coding:gbk
注意:要寫在開頭,標識本py檔案的存盤格式,python3默認utf-8
5.python的輸入:input()函式
- input函式的回傳值型別為str,當需要讀入整數時,需要用int()進行型別強轉
name=input("請輸入您的姓名:") #輸入的str型別的值直接賦給變數name
age=int(input("請輸入您的年齡:") #輸入的str型別的值經過int()賦給變數age
6.python中的運算子
- 算術運算子:+、-、*、/、%、**(冪運算子)
print(11//2) #5,整除運算
print(11/2) #5.5,除法運算
print(11%2) #1,求余運算
print(3**2) #9,3的2次方,冪運算
難點:(一正一負整除,向下取整;一正一負取余要公式,余數=被除數-除數*商)
- 賦值運算子:+=、-=、*=、/=、//=、%=
a,b,c=20,30,40 #支持系列賦值,指向不同塊記憶體空間
a=b=c=20 #支持鏈式賦值,指向同一塊記憶體空間
交換兩個變數的值,不需要中間變數(tql)
a,b=b,a
- 比較運算子:>、<、>=、<=、!=、==、is、is not(物件的id比較)
a,b=10,20
print('a>b嗎?',a>b) #False
a=10
b=10
print(a==b) #True
print(a is b) #True
list1=[11,22,33,44]
list2=[11,22,33,44]
print(list1==list2) #True
print(list1 is list2) #False
- 布爾運算子:and、or、not、in、not in
s='hello world'
print('w' in s) #True
print('k' not in s) #True
- 位運算子:&、|、<<(左移位運算子:高位溢位舍棄,低位補0)、>>(右移位運算子:低位溢位舍棄,高位補0)
print(4&8) #按位與,0
print(4|8) #按位或,12
print(4<<1) #左移移位,8,相當于乘以2
print(4>>1) #右移一位,2,相當于除以2
- 運算子優先級:算術運算>位運算>比較運算>布爾運算
7.程式的組織結構
- 順序結構
- 選擇結構
#多分支結構
score=int(input('請輸入一個成績'))
#判斷
if 90<=score<=100: #在python中可以這樣寫,tql
print('A級')
elif score>=80 and score<=89:
print('B級')
else:
print('C級')
#條件運算式
num_a=int(input('請輸入第一個整數'))
num_b=int(input('請輸入第二個整數'))
print(str(num_a)+'大于等于'+str(num_b) if num_a>=num_b else str(num_a)+'小于'+str(num_b))
- 回圈結構:while 和 for -in
#如果在回圈體中不需要使用到自定義變數,可將自定義變數寫為"_"
for _ in range(5):
print('人生苦短,我用Python')
#練習題
#輸出100到999之間的水仙花數
#舉例:153=1*1*1+5*5*5+3*3*3
for i in range(100,999):
if i==(i//100)**3+((i%100)//10)**3+(i%100%10)**3:
print(i) #最終輸出153、370、371、407
8.物件的布林值
- python一切皆物件,所有物件都有一個布林值
- 獲得物件的布林值,使用內置函式bool()
- 布林值為False的物件:Fasle、數值0、None、空字串、空串列、空元組、空字典、空集
- 其他物件的布林值均為True
print(bool([])) #空串列,False
print(bool(list())) #空串列,False
print(bool(())) #空元組,False
print(bool(tuple())) #空元組,False
print(bool({})) #空字典,False
print(bool(dict())) #空字典,False
print(bool(set())) #空集合,False
9.pass陳述句
- 什么都不做,只是一個占位符,用到需要寫陳述句的地方
10.內置函式range()
- 用于生成一個整數序列
- 創建range物件的三種方式
range(stop) #創建一個(0,stop)之間的整數序列,步長為1
range(start,stop) #創建一個(start,stop)之間的整數序列,步長為1
range(start,stop,step) #創建一個(start,stop)之間的整數序列,步長為step
r=range(10)
print(r) #range(0,10)
print(list(r)) #用于查看range物件中的整數序列
- 回傳值是一個迭代器物件
- range()函式優點:不管range物件表示的整數序列有多長,所有range物件占用的記憶體空間都是相同的,因為僅僅需要存盤start、stop、step,只有當用到range物件時,才會去計算序列中的相關元素
- in與not in判斷整數序列中是否存在(不存在)指定的數
11.與else陳述句搭配使用的三種情況
- 與 if 搭配,if 條件運算式不成立時執行 else
- 與 while 搭配,沒有碰到 break 時執行 else
- 與 for 搭配,沒有碰到 break 時執行 else
for item in range(3):
pwd=input('請輸入密碼:')
if pwd=='8888':
print('密碼正確')
break
else:
print('密碼不正確')
else:
print('對不起,三次密碼均輸入錯誤')
12.回圈的嵌套
- 輸出一個三行四列的矩形
#輸出一個三行四列的矩形
for i in range(1,4):
for h in range(1,5):
print('*',end='\t') #不換行輸出
print() #打行
- 輸出九九乘法表
#輸出九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print(str(i)+'*'+str(j)+'='+str(i*j),end='\t')
print()
- 二重回圈中的 break 和 continue 用于控制本層回圈
13.串列
- python中的串列相當于其他語言中的陣列
- index():獲得串列中指定元素的索引,如果串列中存在N個相同元素,只回傳相同元素中的第一個元素的索引;不存在,則拋出ValueError
lst=['hello','world','98','hello']
print(lst.index('hello')) #輸出0
#指定起始和結束位置進行查找
print(lst.index('hello',1,4)) #輸出3
- 可以正向索引和逆向索引:正向索引從0到N-1,逆向索引從-N到-1,指定索引不存在,拋出IndexError
- 獲取串列中的部分資料(切片)
lst=[10,20,30,40,50,60,70,80]
#start=1,stop=6,step=1
print(lst[1:6:1])
print(lst[1:6]) #輸出結果同上,默認步長為1
print(lst[1:6:]) #同上
print(lst[1:6:2]) #步長為2
print(lst[:6:2]) #默認start為0
print(lst[1::2]) #默認stop到最后一個元素
#step也可以是負數,此時從start開始往前計算切片
#此時start默認是串列的最后一個元素
#stop默認是串列我的第一個元素
print(lst[::-1]) #相當于串列逆序,tql
- 遍歷串列中的物件
lst=[90,80,70,60,50,40,30,20,10]
for item in lst:
print(item)
- 串列元素的增加操作:append()、extend()、insert()、切片(覆寫)
lst=[]
lst.append(100) #在串列的末尾添加一個元素
lst2=[90,80]
lst.extend(lst2) #在串列的末尾至少添加一個元素,可以用于兩個串列合并
lst.insert(1,30) #在串列的任意位置添加一個元素
lst3=[10,20,30,40]
lst[1:]=lst3 #把lst從第二個元素到最后一個元素替換為了lst3
- 串列元素的洗掉操作:remove()、pop()、切片、clear()、del
lst=[10,20,30,40,50,60,30]
lst.remove(30) #從串列中移除一個元素,如果有重復元素只移第一個
#lst.remove(100) #不存在,拋出ValueError例外
lst.pop(1) #洗掉一個指定索引位置上的元素,指定索引不存在,拋出IndexError,不指定默認洗掉串列中最后一個元素
#切片操作,洗掉至少一個元素,將產生一個新的串列物件
new_lst=lst[1:3]
#不產生新的串列物件,而是洗掉原串列中的內容
lst[1:3]=[]
#clear()清除串列
lst.clear()
#del洗掉串列
del lst
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/266437.html
標籤:python
上一篇:PyTorch 影像識別實戰
