一、pycharm的使用和python基本语法

(一)、pycharm的使用和python环境

1、python以及pycharm的安装

python 的版本选择:3.x 版本,不要安装2.x 版本,有很多语法不一样

如何确定自己 python 版本: cmd: python

不是内部命令:python没有正确安装,原因大概率是因为没有配置环境变量(配置环境变量后重启电脑生效)

指定 python 的安装目录:一般来说是安装在 d:python37

测试python是否安装成功

cmd: python

cmd: pip ,或者 pip3 , 有任何一个出现命令不存在,

额外注意:loadrunner 中也有pip,这个pip配置环境变量了之后,python中的pip也需要配置环境变量

prcharm 的版本选择:社区版够用

pycharm 只是一个工具,python 才是关键

2、pycharm 新建项目

新建项目

file —> New Project

退出项目

file —> Close Project

切换项目

file —> Open

file —> Open Recent

3、文件、目录、包的创建和管理

Project —> 右键 ,可以新建文件、目录和包

4、pycharm 的基础使用

python 代码是保存到以 .py 结尾的文件当中

.py 文件又是放到各个文件夹(目录)下面的

5、如何运行代码:

右键,点击 run

命令行运行:点击底下的 Terminal

进入项目路径

python 拼接好的路径/python文件.py

6、安装第三方库

第三方库:是别人已经写好的 python 代码

第一种方法:

安装:pip install 库名

卸载:pip uninstall 库名

第二种方法:pycharm :不要勾选 user’s site package

第三种方法:库放在国外的服务器上,需要用到国内安装源,python国内源

pip install 库名 -i 源地址

pip install openpyxl -ihttps://pypi.tuna.tsinghua.edu.cn/simple

python国内源:
清华: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 默认输出是换行的,不同的数据之间用逗号隔开

python注释: 表示在 python 当中不会运行的文字(不会当成代码), 是说明下面的代码是什么?

表示单行注释 , Ctrl + /

“”” “”” 表示多行注释

”’ ”’ 表示多行注释

缩进:

现在这个阶段,所有的代码全部顶格写,不要进行缩进。

数值

和数学中的数值表示是一样的(注意点:数值不用加引号)

字符串

python 使用引号来表示字符串(一串文字)

变量

什么是变量:是用来存储数据

a = 100

b = 200

c = “ hello world”

变量名的命名规范:

只能包含数字、字母、下划线,

不能以数字开头,

不能有关键字( 注意点 )

python 中所有的关键字: keyword.kwlist

尽量做到见名知意

尽量不要用拼音

标识符:(凡是我们自己取的名字,都是标识符。)

规范:标识符由字母、数字、下划线组成,不能使用关键字

标识符包括:变量名、函数名、类名、模块名、项目名

在python中,所有标识符可以包括英文,数字以及下划线(_),但不能以数字开头。

python 中的标识符是区分大小写的,大写的 A 和小写的 a 不一样

标识符的命名风格:

下划线命名法:

规范:单词字母小写,单词之间使用下划线连接

如:max_number ,test_data

大驼峰命名法:

规范:每个单词的第一个字母大写

如:MaxNumber , TestData

小驼峰命名法:

规范:第一个单词以小写字母开始,第二个单词的首字母大写

如:maxNumber , testData

input 用户输入

从控制台里面获取一个数据,获取到的类型是字符串类型

二、python中常见数据类型

(一)、数值类型 & 运算符

1、数值类型数据

数值类型

整数(int):整数

浮点数(float):小数

布尔值(bool):只有两个值 True 和 False

2、python 常见运算符

算术运算符:

/

除法运算一定要注意:除数不能为0

除数如果为0,就会报错:ZeroDivisionError: division by zero

//

整除

%

余数:模运算

“`

+print(5+6)# -print(7-8)# print(23)# /# 只要是进行除法运算,得到的是一个 floatprint(4/3)print(4/2)# 除法运算一定要注意,除数不能为 0# 除数如果为0,就会报错:ZeroDivisionError: division by zero# 程序报错以后,就无法继续运行# print(2/0)# print(‘hello world’)# // 得到的是一个整数。 整除print(4// 3)# % 取余数 : 模运算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)

比较运算符: 比较运算得到的结果是一个 bool 值, True 或 False




>=

!=

大于print(5 > 4)# True= 大于等于print(6 >= 3)# True

逻辑运算 : 可以使用()提高优先级

and

or

not

a =3>4print(a)b =4!=5print(b)# 运算 and# 每一个都为 Trueprint(aandb)# False# 运算 or# 只要有一个为 Trueprint(aorb)# True# 练习a =Trueb =54# Falsec =5!=3# Trueprint(aandborc)# Trueprint(aorbandc)# True# python 的运算有没有优先级,如何设置优先级# 使用 () 设置优先级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、随机数模块: random (python 官方库)

随机生成 0-1 之间的浮点数:random.random()

随机生成 0-100 之间的浮点数:random.randint(1, 100)

importrandomf_num = random.random()print(f_num)num= random.randint(0,100)print(num)

(二)、字符串

本节问题:

问题一:python中如何表示字母,比如要将一个人的名字储存下来?

问题二:字符串如何定义?

问题三:字符串如果要换行怎么办?

问题四:数值类型的数据可以转换成字符串吗?

问题五:可以把两个字符串组成一个吗?

问题六;如何获取字符串中某个具体的字符?

1、字符串的定义:

单引号、双引号:定义单行字符串

三引号、三双引号: 多行字符串定义

空字符串: s=''

str():

注意点:字符串中有单引号时,外面用双引号注意区分

“””字符串的定义

如何表示字符串:

  • 引号表示字符串

  • 单引号 ”

  • 双引号 “”

  • 三引号 ”’ ”’

  • 三双引号 “”””””

“””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、切片: [:][::]

问题:下标取值只能获取单个元素,现有字符串 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 可以为负数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、字符串拼接和转义

+ 号:'hello' + 'python'

字符串转义:

n: 换行符

t: 水平制表符

关闭转义:r'hello n python'

name =’yuz’family_name =’wang’print(name + family_name)print(name +’ ‘+ family_name)字符串和数字能不能相加print(‘yuz’+ 7)# 字符串和数字不能直接相加,会报错:TypeError: must be str, not intprint(‘yuz’+ str(7))# yuz7数据类型的转化print(int(name))# 报错:ValueError: invalid literal for int() with base 10: ‘yuz’print(int(’12’))# 12print(bool(34))# Truebool 转化,只要是非0,非空的就是True字符串换行”不会分开成两行name =”yuze ooasfjojo””wefwllfjlj”print(name)# yuze ooasfjojowefwllfjlj# 三引号换行,得到多行数据name =”””yuze flaljlkfjlajl

lsajllakj fjk

sjljjfljladf

aljfl

“””print(name)# 单引号中 n 表示换行name =’kaixina lajjnlfljajljssfjdlknjljajs’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 ,这是规定print(a.find(‘isnot’))# -1# 如果子串不在一起,也是找不到,返回 -1print(a.find(‘wn’))# -1# index 约等于 find# 区别:index 找不到元素的时候,会报错,find 找不到的时候返回-1print(a.index(‘ng’))# 2print(a.index(‘wn’))# ValueError: substring not found

count : 查找元素的个数

count 统计某个字符出现的次数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() 功能强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用 {} 作为特殊字符代替 %

<br>


format 字符串的格式化


“`# 现在需要打印下面的格式:——————-借条借款人:yuz债权人:double king金额:500——————-loan_name = ‘yuz’rich_man = ‘double king’money = 500# # 方法一:# print(“———————“)# print(‘借条’)# print(‘借款人:’ + loan_name)# print(‘债权人:’ + rich_man)# print(‘金额:’ + str(money))# print(‘———————‘)# # # 方法二:# {} 表示占坑符,占位符# 位置一定要匹配,不能乱填顺序# print(“””# ——————-# 借条# 借款人:{}# 债权人:{}# 金额:{:.2f} 万# ——————-# “””.format(loan_name, rich_man, money))# # # # 方法三:# # f-string : python3.6 以后才支持# print(f”””# ——————-# 借条# 借款人:{loan_name}# 债权人:{rich_man}# 金额:{money} 万# ——————-# “””)

<pre><code class="line-numbers">传统的格式化输出 %

<div class="image-package">
<div class="image-container" style="max-width: 537px; max-height: 152px;">

<div class="image-view" data-width="537" data-height="152"><img src="/wp-content/uploads/2020/12/frc-a5eaaa07d391d7167f72263f54b20d27.png"></div>
</div>
<div class="image-caption"></div>
</div>

(三)、列表和元组

1、列表

列表的定义

是一种数据类型,可以用来存储多个数据

列表用 [ ] 来标识

列表内部的元素可以是任意类型的

列表是使用最频繁的数据类型之一

列表的常见操作

下标取值(索引取值):获取某一个元素

切片操作:获取多个元素

有步长的切片过程:先根据起始位置和终止位置,将内容切出来,然后再根据步长分为若干部分,然后将每部分的第一个元素拿出来,得出结果。

修改元素的值:可以通过下标修改指定位置的元素。

</code></pre>

<h1>5 个人,5个大佬 , 使用列表big_boss = ['Demons','Go','EE','上善若水','summer']print(big_boss)# 元素可以是任意的数据类型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]</h1>

<pre><code class="line-numbers">列表嵌套

列表中如果有多层嵌套,取值时需要一层一层的取值

</code></pre>

lst = [ 'a', 'b', [1,2,3]]print(lst[0]) # aprint(lst[-1][1]) # 2

<pre><code class="line-numbers">列表的方法

增:append 、insert 、 extend

删:pop 、 remove

改:通过下标修改值

查:index 、 count

其他:reverse 、 sort

<div class="image-package">
<div class="image-container" style="max-width: 535px; max-height: 364px;">

<div class="image-view" data-width="535" data-height="364"><img src="/wp-content/uploads/2020/12/frc-7fcf76b3bb2a23ca09a555b6d3b255ce.png"></div>
</div>
<div class="image-caption"></div>
</div>

</code></pre>

<h1>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]</h1>

<pre><code class="line-numbers"></code></pre>

"""列表的删除-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) # ['均价','木易']

<pre><code class="line-numbers"></code></pre>

"""列表的修改

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]

<pre><code class="line-numbers"></code></pre>

"""列表的方法

<ul>
<li>index</p></li>
<li><p>count</p></li>
<li><p>sort</p></li>
<li><p>reverse</p></li>
<li><p>clear</p></li>
</ul>

<p>"""lst = [4,5,6,5]# # 统计# print(lst.count(5)) # 2## # index 查找得到第一次出现的索引值# 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)# []

<pre><code class="line-numbers">2、元组

元组的定义:

元组定义在小括号中,元组内部的数据:它支持数字,字符串甚至可以包含元组(即嵌套)

元组的常见操作

下标取值:元组内部的数据是有序的,可以通过下标获取对应的元素

注意点

t = () 空元组

t = (1,) 只有一个数据的时候要注意加逗号

元组的值不可以修改,是属于不可变数据

元组的方法

count : 查找元素的个数

index :查找元素下标

</code></pre>

tuple_yuz = ('yuz','一罐',['闲人','七七','小骄傲'])# 修改的是元组的元素,元组的元素是列表# tuple_yuz[2] = ['新列表']# print(tuple_yuz) # 不能修改元组的元素# 为什么这里可以改??# 元组的不可变是相对的,不是说里面所有的内容都完全不能变# 只要看索引的前面是不是一个可变的类型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'

<pre><code class="line-numbers"></code></pre>

tuple_demo = ()print(tuple_demo)#TODO:坑 ,一个元素的元组表示,不是一个元组,而是去掉括号后的原始数据类型# 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,<em>other = ('wang','yuze','hello','world')print(family_name)print(name)print(</em>other)

“`

文章来源于互联网,如有雷同请联系站长删除:python接口自动化测试之python基础语法

发表评论