一际邻、pycharm的使用和python基本語法
(一)、pycharm的使用和python環(huán)境
1老速、python以及pycharm的安裝
python 的版本選擇:3.x 版本贞绵,不要安裝2.x 版本者祖,有很多語法不一樣
如何確定自己 python 版本: cmd: python
不是內(nèi)部命令:python沒有正確安裝孵构,原因大概率是因為沒有配置環(huán)境變量(配置環(huán)境變量后重啟電腦生效)
指定 python 的安裝目錄:一般來說是安裝在 d:\python37
測試python是否安裝成功
cmd: python
cmd: pip 屁商,或者 pip3 , 有任何一個出現(xiàn)命令不存在,
額外注意:loadrunner 中也有pip颈墅,這個pip配置環(huán)境變量了之后蜡镶,python中的pip也需要配置環(huán)境變量
prcharm 的版本選擇:社區(qū)版夠用
pycharm 只是一個工具,python 才是關(guān)鍵
2恤筛、pycharm 新建項目
新建項目
file ---> New Project
退出項目
file ---> Close Project
切換項目
file ---> Open
file ---> Open Recent
3帽哑、文件、目錄叹俏、包的創(chuàng)建和管理
Project ---> 右鍵 ,可以新建文件僻族、目錄和包
4粘驰、pycharm 的基礎(chǔ)使用
python 代碼是保存到以 .py 結(jié)尾的文件當中
.py 文件又是放到各個文件夾(目錄)下面的
5、如何運行代碼:
右鍵述么,點擊 run
命令行運行:點擊底下的 Terminal
進入項目路徑
python 拼接好的路徑/python文件.py
6蝌数、安裝第三方庫
第三方庫:是別人已經(jīng)寫好的 python 代碼
第一種方法:
安裝:pip install 庫名
卸載:pip uninstall 庫名
第二種方法:pycharm :不要勾選 user's site package
第三種方法:庫放在國外的服務器上,需要用到國內(nèi)安裝源度秘,python國內(nèi)源
pip install 庫名 -i 源地址
pip install openpyxl -ihttps://pypi.tuna.tsinghua.edu.cn/simple
python國內(nèi)源: 清華:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中國科技大學 https://pypi.mirrors.ustc.edu.cn/simple/ 華中理工大學:http://pypi.hustunique.com/ 山東理工大學:http://pypi.sdutlinux.org/ 豆瓣:http://pypi.douban.com/simple/
(二)顶伞、python基本語法
1饵撑、基本語法
print 輸出
表示在屏幕上打印出(顯示出)
使用的任何的代碼,雙引號是半角唆貌,英文
print 默認輸出是換行的滑潘,不同的數(shù)據(jù)之間用逗號隔開
python注釋: 表示在 python 當中不會運行的文字(不會當成代碼), 是說明下面的代碼是什么?
# 表示單行注釋 , Ctrl + /
""" """ 表示多行注釋
''' ''' 表示多行注釋
縮進:
現(xiàn)在這個階段锨咙,所有的代碼全部頂格寫语卤,不要進行縮進。
數(shù)值
和數(shù)學中的數(shù)值表示是一樣的(注意點:數(shù)值不用加引號)
字符串
python 使用引號來表示字符串(一串文字)
變量
什么是變量:是用來存儲數(shù)據(jù)
a = 100
b = 200
c = “ hello world”
變量名的命名規(guī)范:
只能包含數(shù)字酪刀、字母粹舵、下劃線,
不能以數(shù)字開頭骂倘,
不能有關(guān)鍵字( 注意點 )
python 中所有的關(guān)鍵字: keyword.kwlist
盡量做到見名知意
盡量不要用拼音
標識符:(凡是我們自己取的名字眼滤,都是標識符。)
規(guī)范:標識符由字母历涝、數(shù)字诅需、下劃線組成,不能使用關(guān)鍵字
標識符包括:變量名睬关、函數(shù)名诱担、類名、模塊名电爹、項目名
在python中蔫仙,所有標識符可以包括英文,數(shù)字以及下劃線(_)丐箩,但不能以數(shù)字開頭摇邦。
python 中的標識符是區(qū)分大小寫的,大寫的 A 和小寫的 a 不一樣
標識符的命名風格:
下劃線命名法:
規(guī)范:單詞字母小寫屎勘,單詞之間使用下劃線連接
如:max_number 施籍,test_data
大駝峰命名法:
規(guī)范:每個單詞的第一個字母大寫
如:MaxNumber , TestData
小駝峰命名法:
規(guī)范:第一個單詞以小寫字母開始,第二個單詞的首字母大寫
如:maxNumber , testData
?
input 用戶輸入
從控制臺里面獲取一個數(shù)據(jù)概漱,獲取到的類型是字符串類型
二丑慎、python中常見數(shù)據(jù)類型
(一)、數(shù)值類型 & 運算符
1瓤摧、數(shù)值類型數(shù)據(jù)
數(shù)值類型
整數(shù)(int):整數(shù)
浮點數(shù)(float):小數(shù)
布爾值(bool):只有兩個值 True 和 False
2竿裂、python 常見運算符
算術(shù)運算符:
/
除法運算一定要注意:除數(shù)不能為0
除數(shù)如果為0,就會報錯:ZeroDivisionError: division by zero
//
整除
%
余數(shù):模運算
```
# +print(5+6)# -print(7-8)# *print(2*3)# /# 只要是進行除法運算照弥,得到的是一個 floatprint(4/3)print(4/2)# 除法運算一定要注意腻异,除數(shù)不能為 0# 除數(shù)如果為0,就會報錯:ZeroDivisionError: division by zero# 程序報錯以后这揣,就無法繼續(xù)運行# print(2/0)# print('hello world')# // 得到的是一個整數(shù)悔常。 整除print(4// 3)# % 取余數(shù) : 模運算print(4%3)# ** 冪運算 4的3次方print(4**3)
```
賦值運算符
+=
-=
*=
/=
//=
%=
**=
```
name = 'yuze'age = 18#漲一歲age = age + 1print(age)#縮寫 age += 1 ==> age = age + 1age += 2print(age)age /= 3print(age)
?
```
比較運算符: 比較運算得到的結(jié)果是一個 bool 值影斑, True 或 False
<=
>=
!=
```
> 大于print(5 > 4)# True< 小于print(6 < 3)# False>= 大于等于print(6 >= 3)# True<= 小于等于print(6 <= 3)# False!= 不等于print(6 != 3)# TrueTODO: == 才是比較運算, 一個 = 是賦值運算print(6 == 6)
```
邏輯運算 : 可以使用()提高優(yōu)先級
and
or
not
```
a =3>4print(a)b =4!=5print(b)# 運算 and# 每一個都為 Trueprint(aandb)# False# 運算 or# 只要有一個為 Trueprint(aorb)# True# 練習a =Trueb =5==4# Falsec =5!=3# Trueprint(aandborc)# Trueprint(aorbandc)# True# python 的運算有沒有優(yōu)先級机打,如何設置優(yōu)先級# 使用 () 設置優(yōu)先級print(((aandb)orc)andb)# not 取反print(not(b))# True
```
身份運算
is
is not
成員運算
in
not in
```
# inname ='yuz'print('u'inname)# Trueprint('uz'inname)# Trueprint('uai'inname)# False#TODO:in 一定是連著的矫户, yz 是一個整體print('yz'inname)# Falseprint('Y'inname)# False
```
3、隨機數(shù)模塊: random (python 官方庫)
隨機生成 0-1 之間的浮點數(shù):random.random()
隨機生成 0-100 之間的浮點數(shù):random.randint(1, 100)
```
importrandomf_num = random.random()print(f_num)num= random.randint(0,100)print(num)
```
(二)姐帚、字符串
本節(jié)問題:
問題一:python中如何表示字母吏垮,比如要將一個人的名字儲存下來?
問題二:字符串如何定義?
問題三:字符串如果要換行怎么辦罐旗?
問題四:數(shù)值類型的數(shù)據(jù)可以轉(zhuǎn)換成字符串嗎膳汪?
問題五:可以把兩個字符串組成一個嗎?
問題六九秀;如何獲取字符串中某個具體的字符遗嗽?
1、字符串的定義:
單引號鼓蜒、雙引號:定義單行字符串
三引號痹换、三雙引號: 多行字符串定義
空字符串: s=''
str():
注意點:字符串中有單引號時,外面用雙引號注意區(qū)分
```
"""字符串的定義
如何表示字符串:
- 引號表示字符串
- 單引號 ''
- 雙引號 ""
- 三引號 ''' '''
- 三雙引號 """"""
"""name1 ="yuze"print(name1)name2 ='yuze'print(name2)name3 ='''yuze'''print(name3)name4 ="""yuze"""print(name4)print(name1 == name2 == name3 == name4)# Trueprint(name1 == name2)# Trueprint(name1 == name3)# Trueprint(name1 == name4)# True
```
2都弹、字符串的切片和下標取值
1娇豫、下標索引取值
下標取值:可以正向取,也可以反向取
注意點:正向從 0 開始畅厢,反向從 -1 開始
```
name ='yuzwang'print(name[1])# uprint(name[0])# y# 獲取第3個字符print(name[2])# z# 獲取 gprint(name[6])print(name[-1])
```
2冯痢、切片: [:][::]
問題:下標取值只能獲取單個元素,現(xiàn)有字符串 str1='hello python' 框杜,如果要獲取出來 python 應該怎么做浦楣?
切片的語法: 和下標取值一樣使用中括號進行切片,有兩種用法:
[a:b] :a代表起始位置下標咪辱, b 代表終止位置下標(左閉右開)振劳;
[a: b: c] : a代表起始位置下標, b 代表終止位置下標(左閉右開)油狂,c 代表步長历恐。
```
"""字符串的切片 slice
? 獲取多個字符
? 索引獲取的公式:
? ? ? m_str[start:end:step]
? 注意:end - start 的符號 必須和 step 的符號相同才可以獲取到索引
? step 的值不能為0
"""name ='yuzwang'# 要 1 和 2print(name[1:2])# uprint(name[0:1])# y#TODO:這個才是對的#TODO:顧頭不顧腚,取頭不取尾专筷,取左不取右print(name[0:2])# yuprint(name[3:6])# wan# 什么是 step , 取完第一個索引弱贼,把索引 + 多少# step = 2print(name[3:6:2])# wnprint(name[1:5:3])# ua# step 可以為負數(shù)print(name[5:1:-3])# nzprint(name[5:1:3])# 取不到值 Noneprint(name[1:4:-2])# 取不到值 None#TODO:end - start 的符號 必須和 step 的符號相同才可以獲取到索引#TODO:step 的值不能為0,否則會報錯:ValueError: slice step cannot be zeroprint(name[1:5:0])#TODO:IndexErrorprint(name[1000000])# IndexError: string index out of rangeprint(name[1:1000000])# uzwang 不會報錯仁堪,會取到所有值name ="yuzewang"# 省略 end ,表示取到最后print(name[1:])# 省略 start ,表示從 0 開始print(name[:5])# 復制填渠,copy? 從頭到尾弦聂,#TODO:面試題:復制字符串print(name[:])name_copy = name[:]print(name_copy)# 倒序? '123456' ==> '654321'# TODO:面試題:倒序一個字符串print(name[::-1])# gnawezuy
```
3鸟辅、字符串拼接和轉(zhuǎn)義
+ 號:'hello' + 'python'
字符串轉(zhuǎn)義:
\n: 換行符
\t: 水平制表符
關(guān)閉轉(zhuǎn)義:r'hello \n python'
```
name ='yuz'family_name ='wang'print(name + family_name)print(name +' '+ family_name)字符串和數(shù)字能不能相加print('yuz'+ 7)# 字符串和數(shù)字不能直接相加,會報錯:TypeError: must be str, not intprint('yuz'+ str(7))# yuz7數(shù)據(jù)類型的轉(zhuǎn)化print(int(name))# 報錯:ValueError: invalid literal for int() with base 10: 'yuz'print(int('12'))# 12print(bool(34))# Truebool 轉(zhuǎn)化莺葫,只要是非0匪凉,非空的就是True字符串換行'\'不會分開成兩行name ="yuze ooasfjojo"\"wefwllfjlj"print(name)# yuze ooasfjojowefwllfjlj# 三引號換行,得到多行數(shù)據(jù)name ="""yuze flaljlkfjlajl
lsajllakj fjk
sjljjfljladf
aljfl
"""print(name)# 單引號中 \n 表示換行name ='kaixina lajj\nlfljajljssfjdlk\njljajs'print(name)
```
4捺檬、字符串常用方法
join : 字符串拼接
``
name ="qin er cai"# 字符串拼接print(name +'wang')# 使用 join 拼接print(name.join(['a','b','c']))# aqin er caibqin er caic# 時間 ['2020', '08', '03'] 用 / 連接起來print('/'.join(['2020','08','03']))# 2020/08/03print('2020'+'/'+'08'+'/'+'03')# 2020/08/03
``
find : 查找元素的位置
```
# find:在字符串當中查找某個字符或者字符串的位置# 會得到索引a ="wangyuze is coming"print(a.find('e'))# 7index= a.find('e')print(index)# 7# 如果找的有兩個呢再层? i,會得到第一個print(a.find('i'))# 9# 如果是一個子串呢堡纬? ngprint(a.find('ng'))# 2# 如果找不到怎么辦聂受?會得到 -1 ,這是規(guī)定print(a.find('isnot'))# -1# 如果子串不在一起烤镐,也是找不到蛋济,返回 -1print(a.find('wn'))# -1# index 約等于 find# 區(qū)別:index 找不到元素的時候,會報錯炮叶,find 找不到的時候返回-1print(a.index('ng'))# 2print(a.index('wn'))# ValueError: substring not found
```
count : 查找元素的個數(shù)
```
# count 統(tǒng)計某個字符出現(xiàn)的次數(shù)m_str ='foweofpweef'print(m_str.count('o'))# 2song ="我愛你碗旅,我喜歡你,我..."print(song.count('我'))# 3
```
replace : 替換字符
```
# replace 替換song="我愛你镜悉,我喜歡你祟辟,我..."print(song.replace('你','ta'))# 我愛ta,我喜歡ta侣肄,我...
```
split : 字符串分割
```
#split切分旧困、切割 ==》 和join相反 time_string ='2020/08/03'print(time_string.split('/')) # ['2020','08','03']
```
format : 格式化輸出
upper : 將字母大寫
```
# upper 所有字母都大寫name='yuze'print(name.upper())# YUZE
```
lower : 將字母小寫
```
# lower 所有字母都小寫name='JECK'print(name.lower())# jeck
```
strip : 去掉兩邊的特殊字符,如果什么都不傳茫孔,就是去掉空格或者換行符
```
# strip 去掉兩邊的特殊字符叮喳,如果什么都不傳,就是去掉空格或者換行符name =' yuze wang 'print(name.strip())# yuze wangprint(name) cp ="&雨澤&哈哈&"print(cp.strip('&'))# 雨澤&哈哈
```
len : 計算字符串長度
```
# len 計算字符串的長度name='yuzewang 'print(len(name))# 9
```
5缰贝、字符串格式化輸出
format 格式化輸出
format() 功能強大馍悟,該函數(shù)把字符串當成一個模板,通過傳入的參數(shù)進行格式化剩晴,并且使用 {} 作為特殊字符代替 %
format 字符串的格式化
```
?```# 現(xiàn)在需要打印下面的格式:-------------------借條借款人:yuz債權(quán)人:double king金額:500-------------------loan_name = 'yuz'rich_man = 'double king'money = 500# # 方法一:# print("---------------------")# print('借條')# print('借款人:' + loan_name)# print('債權(quán)人:' + rich_man)# print('金額:' + str(money))# print('---------------------')# # # 方法二:# {} 表示占坑符锣咒,占位符# 位置一定要匹配,不能亂填順序# print("""# -------------------# 借條# 借款人:{}# 債權(quán)人:{}# 金額:{:.2f} 萬# -------------------# """.format(loan_name, rich_man, money))# # # # 方法三:# # f-string : python3.6 以后才支持# print(f"""# -------------------# 借條# 借款人:{loan_name}# 債權(quán)人:{rich_man}# 金額:{money} 萬# -------------------# """)
```
傳統(tǒng)的格式化輸出 %
(三)赞弥、列表和元組
1毅整、列表
列表的定義
是一種數(shù)據(jù)類型,可以用來存儲多個數(shù)據(jù)
列表用 [ ] 來標識
列表內(nèi)部的元素可以是任意類型的
列表是使用最頻繁的數(shù)據(jù)類型之一
列表的常見操作
下標取值(索引取值):獲取某一個元素
切片操作:獲取多個元素
有步長的切片過程:先根據(jù)起始位置和終止位置绽左,將內(nèi)容切出來悼嫉,然后再根據(jù)步長分為若干部分,然后將每部分的第一個元素拿出來拼窥,得出結(jié)果戏蔑。
修改元素的值:可以通過下標修改指定位置的元素蹋凝。
```
# 5 個人,5個大佬 总棵, 使用列表big_boss = ['Demons','Go','EE','上善若水','summer']print(big_boss)# 元素可以是任意的數(shù)據(jù)類型big_boss = ['Demons',11,True,33.33,'summer']print(big_boss)big_boss = ['Demons',11,True,33.33, ['a','b','c']]print(big_boss)big_boss = ['Demons',11,True,33.33, ['a','b',['yuz',True]]]print(big_boss)# 索引: 獲取索引為 0 的元素print(big_boss[0])# Demonsprint(big_boss[-1])# ['a', 'b', ['yuz', True]]print(big_boss[-2])# 33.33print(big_boss[2])# True# 獲取 aprint(big_boss[-1][0])# alast_one = big_boss[-1]print(last_one[0])# a# 獲取 'yuz'print(big_boss[-1][-1][0])# yuz# 切片print(big_boss[:3])# ['Demons', 11, True]
```
列表嵌套
列表中如果有多層嵌套鳍寂,取值時需要一層一層的取值
```
lst = [ 'a', 'b', [1,2,3]]print(lst[0]) # aprint(lst[-1][1]) # 2
```
列表的方法
增:append 、insert 情龄、 extend
刪:pop 迄汛、 remove
改:通過下標修改值
查:index 、 count
其他:reverse 骤视、 sort
```
# TODO:坑dalaos = ['隨風']new_dalao = dalaos.append('利己')print(dalaos) # ['隨風','利己']#append() 返回 Noneprint(new_dalao) # None# 再添加多個鞍爱,['一罐','本本','可愛','美雪'] 添加到最后dalaos.extend(['一罐','本本','可愛','美雪'])print(dalaos)# TODO: 坑2報錯:AttributeError:'NoneType'objecthasnoattribute'append'new_dalao = dalaos.append('sfo').append('hello').append('sof')print(new_dalao)# 增加某個元素,修改的是原來的變量 lstlst = ['yuz','shanshan','rita']lst.append('裴綸')print(lst) # ['yuz','shanshan','rita','裴綸']#insert指定索引位置添加元素尚胞,不是獲取索引硬霍,不用[]lst.insert(1,'仙人球')print(lst) # ['yuz','仙人球','shanshan','rita','裴綸']#extend添加多個,可以合并2個列表lst.extend(['tiger','f2'])print(lst) # ['yuz','仙人球','shanshan','rita','裴綸','tiger','f2']lst = [1,2,3]lst.append(3)print(f"第一次嘗試{lst}") # 第一次嘗試[1,2,3,3]# lst.extend(3)#print(f"第二次嘗試{lst}") # 報錯:TypeError:'int'objectisnot iterablelst.extend([3])print(f"第三次嘗試{lst}") # 第三次嘗試[1,2,3,3,3]a= [1,2,3]b= [4,5,6]#b是作為一個整體笼裳,一個元素唯卖,添加到a當中#a.append(b)#print(a) # [1,2,3, [4,5,6]]#b是拆開里面元素,作為多個元素躬柬,添加到a當中a.extend(b)print(a) # [1,2,3,4,5,6]
```
```
"""列表的刪除-remove-delete-pop"""#remove: 在列表當中刪除指定的值big_boss = ['糖','木易','均價']big_boss.remove('木易')print(big_boss) # ['糖','均價']#delete異類:盡量不要用# del big_boss[0]#print(big_boss) # ['均價']#pop0代表索引為0big_boss.pop(0)print(big_boss) # ['均價']# 獲取索引為0的值print(big_boss[0])big_boss.append('木易')print(big_boss) # ['均價','木易']
```
```
"""列表的修改
lst[0] = 1
"""lst = [1,2,3]lst[1] ='a'print(lst)# [1, 'a', 3]lst[1],lst[2] ='c','d'print(lst)# [1, 'c', 'd']lst[1:] =5,6print(lst)# [1, 5, 6]
```
```
"""列表的方法
- index
- count
- sort
- reverse
- clear
"""lst = [4,5,6,5]# # 統(tǒng)計# print(lst.count(5)) # 2## # index 查找得到第一次出現(xiàn)的索引值# print(lst.index(5)) # 1## # sort 排序# print(lst.sort()) # None## lst.sort()# print(lst) # [4, 5, 5, 6]### # reverse 反向拜轨,倒序 ,? 相當于 [::-1]# lst.reverse()# print(lst) # [6, 5, 5, 4]# 反向排序lst.sort(reverse=True)print(lst)# [6, 5, 5, 4]# clera 清除一個列表lst.clear()print(lst)# []
?
```
2、元組
元組的定義:
元組定義在小括號中允青,元組內(nèi)部的數(shù)據(jù):它支持數(shù)字橄碾,字符串甚至可以包含元組(即嵌套)
元組的常見操作
下標取值:元組內(nèi)部的數(shù)據(jù)是有序的,可以通過下標獲取對應的元素
注意點
t = () 空元組
t = (1,) 只有一個數(shù)據(jù)的時候要注意加逗號
元組的值不可以修改颠锉,是屬于不可變數(shù)據(jù)
元組的方法
count : 查找元素的個數(shù)
index :查找元素下標
```
tuple_yuz = ('yuz','一罐',['閑人','七七','小驕傲'])# 修改的是元組的元素法牲,元組的元素是列表# tuple_yuz[2] = ['新列表']# print(tuple_yuz) # 不能修改元組的元素# 為什么這里可以改??# 元組的不可變是相對的,不是說里面所有的內(nèi)容都完全不能變# 只要看索引的前面是不是一個可變的類型tuple_yuz[2][0] = ['新列表']print(tuple_yuz)tuple_yuz = ('yuz','一罐',{'tuple':'yuze'})# 索引前面是元組琼掠,代表我們要修改的是元組的元素拒垃,不可以# tuple_yuz[2] = 'hello world'# tuple_yuz[2] 是字典,可變類型瓷蛙,可以直接修改tuple_yuz[2]['name'] = 'hello world'print(tuple_yuz)# 索引前yuz是列表悼瓮,可以改變yuz = ['yuz','一罐',('四葉草','曉峰')]yuz[2] = 'hello'print(yuz)# yuz[2]是元組,不可變yuz[2][1] = 'youxi'
```
```
tuple_demo = ()print(tuple_demo)#TODO:坑 艰猬,一個元素的元組表示横堡,不是一個元組,而是去掉括號后的原始數(shù)據(jù)類型# tuple_demo_2 = (1)# print(tuple_demo_2)# 如果想表示一個元素的元組冠桃,記得務必在元素后面加一個逗號# tuple_demo_3 = (1,)# print(len(tuple_demo_3))tuple_demo_4 = (1,3,4,5,5,)print(len(tuple_demo_4))tuple_demo_5 = 1print(tuple_demo_5)# 元組解包family_name,name = ('wang','yuze')# family_name,name = ('wang','yuze','hello') # 值要一一對應命贴,否則會報錯print(family_name)print(name)a,b = 3,4print(a)print(b)family_name,name,*other = ('wang','yuze','hello','world')print(family_name)print(name)print(*other)
?
```