文章目錄
學習資源:https://www.bilibili.com/video/av4050443 python編程:從入門到實踐
環境:win10+vscode +Anaconda(python3.7)
一、遇到問題
1.CMD中無法無法查的python版本 並跳轉微軟商店
解決方法:修改環境變量 系統變量中將安裝的python優先級提前
二、學習筆記
1."與’的區別
(https://blog.csdn.net/kevindree/article/details/86796664)
兩者沒有區別,都可以用來表示一個字符串。但可以通過單雙混合使用,可以減少轉義字符
my_str1 = 'I\'m a student'
my_str2 = "I'm a student"
print(my_str1)
print(my_str2)
————————————————————下方爲輸出結果————————————————————
I'm a student
I'm a student
兩者結果都爲I'm a student
my_str1 = "Jason said \"I like you\""
my_str2 = 'Jason said "I like you"'
print(my_str1)
print(my_str2)
————————————————————下方爲輸出結果————————————————————
Jason said "I like you"
Jason said "I like you"
結果都爲 Jason said "I like you"
2.(&,|)和(and,or)之間的區別
https://blog.csdn.net/weixin_40041218/article/details/80868521
2.1數值變量
&、|分別表示按位與、按位或
1 & 2 # 輸出爲0
1 | 2 # 輸出爲3
and有0反0,無0反第二個數
or 返回第一個非0數
# 判斷變量是否爲0, 是0則爲False,非0判斷爲True,
# and中含0,返回0; 均爲非0時,返回後一個值,
2 and 0 # 返回0
2 and 1 # 返回1
1 and 2 # 返回2
# or中, 至少有一個非0時,返回第一個非0,
2 or 0 # 返回2
2 or 1 # 返回2
0 or 1 # 返回1
2.2邏輯變量
兩者基本一致
In[103]:(3>0) | (3<1)
Out[103]: True
In[104]:(3>0) and (3<1)
Out[104]: False
In[105]:(3>0) or (3<1)
Out[105]: True
In[106]:(3>0) & (3<1)
Out[106]: False
注意事項: x and y 中 ,x爲false則不會計算y 等同 |
3.python語句中的 end=’'用法
結合程序講解:
原程序
temp= input("請輸入一個整數 :")
number =int(temp)
while number:
i = number - 1
while i:
print(' ',end ='')
i = i - 1
j = number
while j:
print('*', end = '')
j = j - 1
print()
number = number - 1
————————————————————下方爲輸出結果————————————————————
請輸入一個整數 :5
*****
****
***
**
*
將print(’ ‘,end =’’)改爲 print(’ ')後 此時每個print函數在字符串末尾添加一個換行符
temp= input(" 請輸入一個整數 :")
number =int(temp)
while number:
i = number - 1
while i:
print(' ') #此處發生了變化
i = i - 1
j = number
while j:
print('*', end = '')
j = j - 1
print()
number = number - 1
請輸入一個整數 :5
*****
****
***
**
*
#若把print(' ')換成print('1') 更爲明顯
請輸入一個整數 :5
1
1
1
1
*****
1
1
1
****
1
1
***
1
**
*
end =’‘的位置 print(’ ‘,‘1’,end =’’) 並調換三者之間的關係 (無影響,但注意格式,end =’'前面加,後面加+)
print(' ','1',end ='')
————————————————————下方爲輸出結果————————————————————
請輸入一個整數 :5
1 1 1 1*****
1 1 1****
1 1***
1**
*
#其中,經過print之後顯示爲” “(空格)
即print('The quick brown fox', 'jumps over', 'the lazy dog')
爲The quick brown fox jumps over the lazy dog
print(end =''+' '+'1')
print(' ' ,end =''+'1')
————————————————————下方爲輸出結果————————————————————
均爲:
請輸入一個整數 :5
1 1 1 1*****
1 1 1****
1 1***
1**
*
print(end =''' ','1') #錯誤
print(end ='5'+' '+'1')
————————————————————下方爲輸出結果————————————————————
請輸入一個整數 :5
5 15 15 15 1*****
5 15 15 1****
5 15 1***
5 1**
*
4.字符串轉換()
浮點型轉化爲整數,直接截斷處理,去掉小數點後面的 5.99——>5
str float int 可定義爲變量 str=”“ 但完全不建議
切記int()只能轉化由純數字組成的字符串
a ="520"#字符串
b =int (a)
c=float(b)
print(b+c)
————————————————————下方爲輸出結果————————————————————
1040.0
a ="520.9" #字符串
b =int(a)#切記int()只能轉化由純數字組成的字符串
c=float(b)
print(b+c)
————————————————————下方爲輸出結果————————————————————
報錯 發生異常: ValueError
invalid literal for int() with base 10: '520.9'
a ="520.9" #字符串
c=float(a)
b =int(c)
print(b+c)
————————————————————下方爲輸出結果————————————————————
1040.9
type() 函數如果你只有第一個參數則返回對象的類型,三個參數返回新的類型對象(暫不深究)。
isinstance() 函數來判斷一個對象是否是一個已知的類型
isinstance(320.25,bool) 判斷類型是否一致
5.python運算符
https://www.runoob.com/python/python-operators.html#ysf4
注意:python2與python3存在不一樣的地方
python3中 /正常除法 10/8=1.25 “//”表示地板除法
python2中 / 地板除法 10/8 =1
3**5=3^5
-32=-(3 ** 2)=-9 3-2=3**(-2)=0.11111111111111
not or and 的優先級是不同的: not > and > or (直接用括號)
6.分支和循環(8-10)
x,y,z="五五開","white","馬飛飛"
盧本偉=x if x == y else z
print(盧本偉)
————————————————————下方爲輸出結果————————————————————
馬飛飛
#結果爲馬飛飛 if 後面的判斷句,正確爲x,錯誤爲z
assert 斷言 在其自殺前將其擊斃 可當作檢查點
Python assert(斷言)用於判斷一個表達式,在表達式條件爲 false 的時候觸發異常。
x,y,z互換 :x, y, z = z, y, x
for i in range(0, 10, 2): 從0到小於10 每次跳2 0,2,4,6,8
Python 字典 in 操作符用於判斷鍵是否存在於字典中,如果鍵在字典 dict 裏返回 true,否則返回 false。
而 not in 操作符剛好相反,如果鍵在字典 dict 裏返回 false,否則返回 true。
break continue
7.列表(11-13)
7.1列表中插入
append #每次只能加一個
member=['盧本偉','white']
print(member)
print(len(member))
member.append('五五開')
print(member)
print(len(member))
————————————————————下方爲輸出結果————————————————————
['盧本偉', 'white']
2
['盧本偉', 'white', '五五開']
3
extend #可插入列表 即[]
extend() 函數用於在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)
member=['盧本偉','white']
member.extend(['五五開',"盧本偉牛逼"])
print(member)
print(len(member))
————————————————————下方爲輸出結果————————————————————
['盧本偉', 'white', '五五開', '盧本偉牛逼']
4
insert #從指定位置或0開始 插入
insert() 函數用於將指定對象插入列表的指定位置,無返回值
list.insert(index, obj)
index – 對象 obj 需要插入的索引位置。(插完後 在index處指向obj)
obj – 要插入列表中的對象。
7.2列表中刪除
remove(‘’)查找並刪除 只刪除第一個
member=['盧本偉牛逼','盧本偉牛逼','盧本偉牛逼','五五開牛逼','五五開牛逼','痛苦呀馬飛飛']
member.remove('盧本偉牛逼')
print(member)
————————————————————下方爲輸出結果————————————————————
['盧本偉牛逼', '盧本偉牛逼', '五五開牛逼', '五五開牛逼', '痛苦呀馬飛飛']
#只刪除找到的第一個
del[] 刪除第幾個
member=['盧本偉牛逼','五五開牛逼','盧本偉牛逼','盧本偉牛逼','五五開牛逼','痛苦呀馬飛飛']
del member[2]
print(member)
del member #全部刪除
————————————————————下方爲輸出結果————————————————————
['盧本偉牛逼', '五五開牛逼', '盧本偉牛逼', '五五開牛逼', '痛苦呀馬飛飛']
pop() 取出最後一個並刪除 而且返回值
7.3列表分片
member[a:b] 從a到b且不包含b
member2=member #指針方式指向
member2=member[]
下面着重講解[]與直接賦值的區別
member=['盧本偉牛逼','五五開牛逼','盧本偉牛逼','盧本偉牛逼','五五開牛逼','痛苦呀馬飛飛']
member2= member[:]#不受member修改影響
member3= member
del member[1]#刪除
print(member2)#不受member修改影響
print(member3)#受影響
del member
print(member2)
print(member3)#此時已經沒有了member 無影響
————————————————————下方爲輸出結果————————————————————
['盧本偉牛逼', '五五開牛逼', '盧本偉牛逼', '盧本偉牛逼', '五五開牛逼', '痛苦呀馬飛飛']#member2
['盧本偉牛逼', '盧本偉牛逼', '盧本偉牛逼', '五五開牛逼', '痛苦呀馬飛飛']#member3
['盧本偉牛逼', '五五開牛逼', '盧本偉牛逼', '盧本偉牛逼', '五五開牛逼', '痛苦呀馬飛飛']
['盧本偉牛逼', '盧本偉牛逼', '盧本偉牛逼', '五五開牛逼', '痛苦呀馬飛飛']
————————————————————以地址的形式看下之間的變化————————————————————
old = [1, 2, 3, 4, 5]
new = old
print(id(new)) #2405817776456
print(id(old)) #2405817776456
old = [6]
print(id(new)) #2405817776456
print(id(old)) #2405834175048
print(new)
print(old)
————————————————————下方爲輸出結果————————————————————
2405817776456
2405817776456
2405817776456
2405834175048
[1, 2, 3, 4, 5]
[6]
由上面可得:重新賦值時,地址會發生改變
7.4列表中的比較操作符
依次比較
list1=[123,456]
list2=[234,456]
print(list1<list2)
————————————————————下方爲輸出結果————————————————————
True
列表可拼合、重複
用in判斷列表中的列表
常見列表的內置函數
list.count(a) a在list中出現了多少次
list.index (a,b,c) 在list[b,c]中第一次出現a的位置 含b不含c
list.reverse() 前後反轉
list.sort() 默認從小到大排, sort(revers=True) 反着來
list.copy() 方法更使用切片拷貝是一樣的,即地址會發生改變
list.clear() 清空列表,但列表仍存在