当前位置: 首页 > article >正文

python从基础到UnitTest框架-python基础语法

1.python环境配置

python解释器:将书写的代码转换为二进制;

pycharm:是python的IDE(集成开发环境)之一,用来写代码,运行/调试代码;

vscode,IDEA,记事本...

2.语法使用

(1)打印输出:print()

(2)输入数据:input()

(3)注释:单行(#;选中多行,按快捷键:ctrl + /),多行(3 对 双引号或者 3 对 单引号)

(4)cmd终端运行python代码:python 代码文件的名字

(5)变量:变量名 = 数据值 (命名规范:必须由字母 数字和下划线组成, 并且不能以数字开头 ,不使用关键字)

(6)数据类型:数字类型:整型(int),浮点型(float),布尔类型(bool);非数字类型:字符串(str),列表(list),元组(tuple),字典(dict);type(变量):可获取变量的类型

(7)格式化输出:%d:整型;%f:浮点型;%s:字符串(可任意类型)

# 小数默认显示 6 位, 如果想要指定显示小数点后几位,  %.nf , n 需要换成具体的整数数字,即保留小数的位置
# %0nd n 需要换成具体的整数数字, 表示整数一共占几位
# 某次考试的及格率为 90%, 如果在 格式化中需要显示%, 在书写的使用 需要使用 两个 %% 才可以:print('某次考试的及格率为 %d%%' % num)
# 在字符串中想要输出换行 \n (转义字符)
​
例子:print('我的名字是 %s, 年龄是 %d, 身高是 %f m' % (name, age, height))
# print('我的名字是 xx, 年龄是 xx, 身高是 xx m, 学号 xx, 本次考试的及格率为 xx%')
print(f'我的名字是 {name}, 年龄是 {age}, 身高是 {height} m, 学号 {stu_num}, 本次考试的及格率为
{num}%')
​
# 字符串.format()
print('我的名字是 {}, 年龄是 {}, 身高是 {} m, 学号 {}, 本次考试的及格率为 {}%'.format(name,age,height,stu_num,num))
print('我的名字是 {}, 年龄是 {}, 身高是 {:.3f} m, 学号 {:06d}, 本次考试的及格率为{}%'.format(name,age,height,stu_num,num))

(8)算数运算符:优先级: 先算谁,再算谁 (不确定优先级,就使用 ()):() > ** > * / // % > + -

(9)比较运算符:比较运算符得到都是 bool 类型

(10)逻辑运算符:and(和,一假为假);or(或,一真为真);not(非)

(11)if

if 判断条件:
    书写条件成立(真),执行的代码
    书写条件成立(真),执行的代码
顶格书写,没有缩进的代码,和 if无关, 不管条件是否成立,都会执行
# 1. if 是一个关键字, 和后续的判断条件之间需要一个空格
# 2. 判断条件后边需要一个冒号,不要少了
# 3. 冒号之后,回车,代码需要缩进, 在 pycharm 中会自动进行缩进, 一般是 4 个空格 或者一个tab键
# 4. 所有在 if 代码下方的缩进中书写的代码,属于 if 语句的代码块, 判断条件为 True 的时候会执行
# 5. if 代码块中的代码,要么都执行,要么都不执行
# 6. if 代码块结束之后, 代码要顶格书写(不再有缩进), 表示是和 if 无关的代码

(12)if else

如果 条件成立 做什么事 否则(条件不成立) 做另一件事
​
if 判断条件:
    书写条件成立(真),执行的代码
    书写条件成立(真),执行的代码
else:
    书写条件不成立(假), 执行的代码
    书写条件不成立(假), 执行的代码
# 1. else 是关键字, 后边需要冒号
# 2. 冒号之后回车,同样需要缩进
# 3. 处于 else 代码下方缩进中的内容,属于 else 的代码块
# 4. if 和 else 的代码块, 只会执行其中的一个
# 5. else 需要结合 if 使用
# 6. if else 之间不能有其他顶格书写的内容(不提 elif)

(13)if elif else

if 判断条件1:
    判断条件1成立,执行的代码
elif 判断条件2: # 只有判断条件1不成立,才会判断 判断条件2
    判断条件2成立执行的代码
else:
    以上条件都不成立,执行的代码
# 1. elif 也是关键字,后边和判断条件之间需要一个空格,判断条件之后需要冒号
# 2. 冒号之后回车需要缩进, 处在这个缩进中的的代码表示是 elif 的代码块
# 3. 在一个 if判断中,可以有很多个 elif
# 4. 只有 if 的条件不成立,才会去判断 elif 的条件
# 5. 在一个if 中, 如果有多个 elif , 只要有一个条件成立,后续的所有都不再判断
# 6. if elif else 结构, 和 if 的缩进相同的只能是 elif 和 else,如果是其他的,就表示这个判断结构结束了
​
if 判断条件1:
    执行的代码
if 判断条件2:
    执行的代码
if 判断条件3:
    执行的代码
# 多个 if 的结构, 每个 if 都会进行判断,之间没有关联系

(14)if 嵌套

if 嵌套, 是指在一个 if(elif else) 中嵌套另一个 if.
使用场景: 判断条件存在递进关系(只有第一个条件满足了,才会判断第二个条件)
​
if 判断条件1:
    判断条件1成立,执行的代码
    if 判断条件2:
        判断条件2成立,执行的代码
    else:
        判断条件2不成立,执行的代码
else:
    判断条件1不成立,执行的代码

(15)while循环

程序开发中(写代码), 有三大流程(三大结构):
1, 顺序, 代码从上到下,全部执行
2, 分支, 判断语句,代码有选择性的执行
3, 循环, 重复执行某一部分的代码
循环的作用就是让 指定的代码 重复的执行
​
1. 设置循环的初始条件(计数器)
2. 书写循环的判断条件
while 判断条件:
    # 3. 需要重复执行的代码
    # 4. 改变循环的初始条件(计数器)
​
#死循环
死循环: 一般是由写代码的人不小心造成的 bug, 代码一直不停的运行下去
无限循环: 写代码的人故意让代码无限制的去执行,代码一直不停的运行下去
无限循环的使用场景: 在书写循环的时候,不确定循环要执行多少次
无限循环的使用一般会在循环中添加一个 if 判断, 当 if 条件成立,使用关键字 break 来终止循环
while True:
    重复执行的代码 # 可以在 if 的上边
    if 判断条件:
        break # 终止循环, 当代码执行遇到 break,这个循环就不再执行了
    重复执行的代码 # 可以在 if 的下边

(16)for循环

for循环也可以让指定的代码重复执行 (循环)
for循环可以遍历容器中的数据( 
    遍历: 从容器中把数据一个一个取出
    容器: 可以简单理解为盒子, 盒子中可以存放很多的数据 (字符串 str, 列表 list, 元组 tuple, 字典 dict)
)
for 循环 也可以称为 for 遍历
​
for 变量名 in 容器:
    重复执行的代码
# 1. for 和 in  都是关键字
# 2. 容器中有多少个数据,循环会执行多少次(0 个数据,执行 0 次, ...)
# 3. 每次循环,会将容器中数据取出一个保存到 in 关键字前边的变量中

(17)for 做指定次数的循环

for 变量 in range(n):
    重复执行的代码
# 1, range() 是 Python 中的函数, 作用使用可以生成 [0, n) 之间的整数, 不包含 n 的 , 一个有 n 个数字, 所以这个循环循环 n 次
# 2, 想让 for 循环循环多少次,n 就写几
# 3, 变量的值 也是每次循环从 [0, n) 取出一个值, 第一次取得是 0 ,最后一次取得是 n-1
​
range()变形
for 变量 in  range(a, b):
    重复的代码 
#  range(a, b)  作用是生成 [a, b) 之间的整数数字, 不包含 b

(18)break 和 continue

break 和 continue 是 Python 中的两个关键字, 只能在循环中使用
break: 终止循环, 即代码执行遇到 break, 循环不再执行,立即结束
continue: 跳过本次循环. 即代码执行遇到 continue,本次循环剩下的代码不再执行, 继续下一次循环

(19)切片

切片: 可以获取字符串中多个字符(多个字符的下标是有规律的, 等差数列)
语法:
字符串[start:end:step]
start 是开始位置的下标, end 是结束位置的下标(注意,不能取到这个位置的字符) step 步长,等差数列的差值, 所取的相邻字符下标之间的差值,默认是 1, 可以不写
例: [1:5:1]  # 1 2 3 4 
[1:5:2]  # 1 3 
[1:5:3]  # 1 4
[1:5:4]  # 1 

(20)字符串

#字符串的替换方法 replace
字符串.replace(old_str, new_str, count)  # 将字符串中 old_str 替换为 new_str
- old_str: 被替换的内容
- new_str: 替换为的内容
- count: 替换的次数, 一般不写,默认是全部替换
- 返回: 替换之后的完整的字符串, 注意: 原来的字符串没有发生改变
​
#字符串的拆分 split
字符串.split(sep, maxsplit)  # 将字符串按照 sep 进行分割(拆分)
- sep, 字符串按照什么进行拆分, 默认是空白字符(空格, 换行\n, tab键\t)
- max_split, 分割次数,一般不写, 全部分割
- 返回: 将一个字符串拆分为多个,存到列表中
- 注意: 如果 sep 不写, 想要指定分割次数 则需要按照如下方式使用
字符串.split(maxsplit=n)   # n 是次数
​
#字符串的链接 join
字符串.join(列表)   # 括号中的内容主要是列表,可以是其他容器
# 作用: 将字符串插入到列表中每相邻的两个数据之间, 组成一个新的字符串
- 列表中的数据使用使用 逗号隔开的
- 注意点: 列表中的数据必须都是字符串, 否则会报错

(23)列表

列表 list, 是使用最多的一种容器(数据类型)
列表中可以存储多个数据, 每个数据之间使用逗号隔开
列表中可以存放任意类型的数据
​
统计出现的次数,使用的是 count() 方法
列表.count(数据)   # 返回 数据出现的次数
​
#尾部添加数据
列表.append(数据)   # 将数据添加到列表的尾部
返回: 返回的 None(关键字,空), 一般就不再使用 变量 来保存返回的内容
想要查看添加后的列表,需要打印的是列表
​
#指定下标位置添加数据
列表.insert(下标, 数据)  # 在指定的下标位置添加数据, 如果指定的下标位置本来有数据, 原数据会后移
返回: 返回的 None(关键字,空), 一般就不再使用 变量 来保存返回的内容
想要查看添加后的列表,需要打印的是列表
​
#列表合并
列表1.extend(列表2)  #  将列表 2 中的所有数据逐个添加的列表1 的尾部
返回: 返回的 None(关键字,空), 一般就不再使用 变量 来保存返回的内容
想要查看添加后的列表,需要打印的是列表
​
#修改
列表[下标] = 数据
​
#删除
列表.pop(下标)  # 删除指定下标位置对应的数据
1. 下标不写,默认删除最后一个数据(常用)
2. 书写存在的下标, 删除对应下标位置的数据
返回: 返回的删除的数据
​
列表.remove(数据值)  # 根据数据值删除
返回: None
注意: 如果要删除的数据不存在, 会报错
​
列表.clear()  #清空数据
​
#列表中 反转和倒置:  
1. 列表[::-1]  # 使用切片的方法,会得到一个新列表, 原列表不会发生改变
2. 列表.reverse()   # 直接修改原列表, 返回 None
​
#列表复制
使用 copy 方法
变量 = 列表.copy()
​
#列表排序
列表.sort()  # 按照升序排序, 从小到大
列表.sort(reverse=True)   # 降序排序, 从大到小

(24)元组

元组: tuple, 元组的特点和列表非常相似
区别:
1. 元组中的数据内容不能改变, 列表中的可以改变的
2. 元组使用 (), 列表 使用 []

(25)字典

1. 字典 dict, 字典中的数据是由键(key)值(value)对组成的(键表示数据的名字, 值就是具体的数据)
2. 在字典中一组键值对是一个数据, 多个键值对之间使用 逗号隔开
变量 = {key: value, key:value, ...}
3. 一个字典中的键是唯一的,不能重复的, 值可以是任意数据
4. 字典中的键 一般都是 字符串,可以是数字, 不能是列表

http://www.kler.cn/news/133588.html

相关文章:

  • iOS_折叠展开 FoldTextView
  • 手机LiDAR-based激光雷达标定板提高无人汽车智能化程度
  • Nas搭建webdav服务器并同步Zotero科研文献
  • 持续集成部署-k8s-配置与存储-配置管理:SubPath
  • 新版JetBrains ToolBox【Windows】修改应用安装位置
  • Node.js之path路径模块
  • ubuntu22.04换源
  • NSSCTF第13页(2)
  • 音视频项目—基于FFmpeg和SDL的音视频播放器解析(十二)
  • golang学习笔记——select 判断语句
  • 动态加载js文件的方法封装
  • 系统安全-常见的几种sql注入攻击的方式
  • 【IDEA 使用easyAPI、easyYapi、Apifox helper等插件时,导出接口文档缺少代码字段注释的相关内容、校验规则的解决方法】
  • 1、cvpr2024
  • 2023.11.19 hadoop之MapReduce
  • [ 一刷完结撒花!! ] Day50 力扣单调栈 : 503.下一个更大元素II |42. 接雨水 | 84.柱状图中最大的矩形
  • Fork项目新分支如何同步
  • upgrade k8s (by quqi99)
  • SEnet注意力机制(逐行代码注释讲解)
  • Golang中的闭包详解
  • 浅谈滑动窗口
  • Java Swing抽奖程序
  • 一句话总结敏捷实践中不同方法
  • Django 简单入门(一)
  • C++虚函数(定义,作用,原理,案例)
  • 实时人眼追踪、内置3D引擎,联想ThinkVision裸眼3D显示器创新四大应用场景
  • 【机器学习】 逻辑回归算法:原理、精确率、召回率、实例应用(癌症病例预测)
  • 【蓝桥杯选拔赛真题21】C++行李运费 第十二届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析
  • SpringSecurity+jwt使用
  • Python将已标注的两张图片进行上下拼接并修改、合并其对应的Labelme标注文件