基础知识
python是一种动态语言,支持交互式编程、面向对象编程和函数式编程,是一种面向对象的解释型计算机程序设计语言,能够把其他语言制作的各种模块结合在一起
计算机只能识别机器语言,不能识别我们的python代码,我们需要python的解释器来将python语言翻译成机器语言,如python3.8.9版本,这个就是解释器
在cmd中可以直接执行python的.py文件,但是要确保在该文件的路径下,通过命令python xxx.py执行
可以在打开文件的资源管理器上部的路径中直接输入cmd,cmd打开的窗口路径就在该文件的路径下
注释
注释可以提高代码的可读性,提高代码开发效率
python中单行注释用#(可以用ctrl+/快捷键添加注释)号,#号右边就是注释的内容
python中多行注释使用三个单引号'''内容'''或者三双引号“”“内容“”“
模块的导入和 import的使用
以math为例:math用于数学运算
全部导入
import mathfrom math import *导入标准库math中所有对象
部分导入
只导入模块中的指定对象(较快的访问速度)
form math import sin- 给导入的对象起个别名:
form math import sin as f
import math具体使用
数据运算(math)使用时要导入数据运算方法,引用时要加上math.
| 名称 | 描述 |
|---|---|
math.pi | π的值 |
math.e | 自然常数e的值 |
math.sin() | sin函数 |
math.gcd() | 最大公约数 |
math.pow(x,y) | 返回x的y次方 |
math.sqrt(x) | 返回x的平方根 |
math.fabs(x) | 返回x的绝对值 |
math.divmod(x,y) | 返回x和y的商和余数 |
math.logn(x) | 返回以n为底的对数,如果省略则表示以e为底 |
import random具体使用
要先引入一个函数库:import random
| 名称 | 描述 |
|---|---|
random.choice(t) | 在t这个列表里面随机找出一个元素 |
random.random() | 在0-1里面找出随机的浮点数 |
random.randint(1,100) | 在1-100里面找出随机的整数,[1,100] |
random.randrange(1,100) | 返回[1,100)区间中随机的整数 |
random.shuffle(t) | 将序列的所有元素随机排序 |
random.shuffle(t) 具体使用:
import random
t = [1,5,3,4,6,2];
random.shuffle(t)
print(t) # 得到:[1,3,4,6,2,5]import datetime具体使用
要先引入一个函数库:import datetime
| 名称 | 描述 |
|---|---|
datetime.date | 表示日期类 |
datetime.datetime | 表示日期时间类 |
datetime.date.today() | 用于获取当前的日期,返回格式为YYYY-mm-dd |
datetime.timedelta() | 表示两个时间之间的时间差,两个date或者datetime |
对象相减时可以返回一个timedelta对象。days=n用于实现加n天或者减n天的操作
strftime()函数接收时间元组,并返回可读字符串表示的时间,格式由参数format决定
在计算机中有两个时间的概念:
- 硬时间:主板的晶振
- 软时间:操作系统的时间
变量和命名规则
变量就是一个盒子(容器),里面可以装任何东西,变量不仅仅是数字,还可以是其他任何数据类型,变量是一段有名字的存储空间,可以通过定义变量来申请并命名这样的存储空间,并通过变量的名字来使用这段空间,变量是临时存放数据的场所,先定义变量,然后在使用变量
变量定义规则:变量名 = 数据(值) 变量可以重复赋值,使其值发生变化,在程序执行中可以改变
python在变量赋值时,不需要指定数据类型,给这个变量赋什么类型的值,这个变量就是什么数据类型,这个是pytohn相比其他语法的不同之处- 变量必须以字母(
a-z,A-Z)或者下划线(_)开头,其他字符可以是字母,数字或下划线,变量区分大小写,Python不能用关键字命名,相关关键字如下: Python预先定义了一部分有特定含义的单词,用于语言自身使用,不可以把关键字作为自定义名称来使用- 变量命名需要有以下的命名规范:见名知意,尽量用有语义的单词进行命名
- 书写可以用小驼峰命名法(
userName);大驼峰命名法(UserName);下划线命名法(user_name)
基本数据类型
基本数据类型:整形,浮点型,复数,布尔类型
Python中提供了type()函数方便我们查看相关变量的数据类型
整形
整形(int)数字没有范围(这点与C语言不同),可正可负,为十进制
若想要表示其他进制则加一个前导符:
- 二进制:前导符
0b或0B0b10为十进制2bin(a)将十进制a转化为二进制 - 八进制:前导符
0o或0O0o10为十进制8oct(a)将十进制a转化为八进制 - 十六进制:前导符
0x或0X0x10为十进制16hex(a)将十进制a转化为十六进制
浮点型
浮点数(float)小数 取值范围和精度是有限制的,可以是小数表示,可以是科学计数法表示:小数:1.23 -9.01;科学计数法:1.23e9 1.2e-5 e后面必须是整形且不能带空格 浮点数运算存在不确定尾数,可能会有误差,如:0.1+0.2=0.300000000000004 可以用round()函数解决:round(0.1+0.2,2) 最后的2表示保留两位小数
补充:
round(x,n)返回浮点数x的四舍五入值,n代表舍入到小数点后的位数 如round(3.67,1)得到3.7
复数
复数(complex)有实部和虚部两部分组成,虚部用j表示 可以用complex()函数完成: a=complex(1,2) 1表示实部,2表示虚部,或者直接输入a=1+2j
布尔型
布尔值:True False 逻辑运算结果为布尔值,注意大小写要区分 条件判断时,下面的几种情况会被认为是False:
- 为0的数字,包括0,0.0;
- 空字符串' ',"";表示空值的
None;空集合,包括空元祖(),空序列[],空字典{};
其他的值都为True
运算符及其优先级
算数运算符
| 符号 | 描述 |
|---|---|
| + | 加法 |
| - | 减法 |
| * | 乘法 |
| ** | 指数 |
| / | 浮点数除法(100/5 = 20.0) |
| // | 整数数除法(整除数轴上向左取整)(100//5=20)(3//2=1)(-3//2=-2) |
| % | 模(求余) (9%4 =1) |
赋值运算符
| 符号 | 描述 |
|---|---|
| = | 幅值运算符,将右边的值赋给左边的变量 |
| += | 加法幅值运算符 a += 5 等价于 a = a + 5 |
| -= | 减法幅值运算符 |
| *= | 乘法幅值运算符 |
| /= | 除法幅值运算符 |
| %= | 取模幅值运算符 |
| **= | 幂幅值运算符 |
| //= | 取整幅值运算符 |
a,b = 10,5 同时进行按顺序赋值
比较运算符
| 符号 | 描述 |
|---|---|
| == | 等于 |
| != | 不等于 |
| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
比较运算符返回bool类型的数据
在Python中是可以使用1<x<3这种形式的, 1<3<5等价于1<3and3<5
逻辑运算符
| 符号 | 描述 |
|---|---|
x and y | 只要一个为False,那么结果为False |
x or y | 只要一个为True,那么结果为True |
not x | 结果与逻辑量相反 |
短路原则: 在与运算发现第一个为False时,就不会计算后面的表达式了,直接出结果,否则返回后面的值 如a=10,b=20 a and b 返回20 在或运算发现第一个为True时,就不会计算后面的表达式了,直接出结果,否则返回后面的值 如a=10,b=20 a or b 返回10 所有的非0值,我们作为真的逻辑量,只有0表示假逻辑量
优先级
高到低:正负—幂—乘,除,取模—加减—比较—逻辑否—逻辑与—逻辑或 只有幂的结合性是从右往左的:2**3**2=2**9=512
标准输入输出
标准输入函数input()
输入函数:input():可以从键盘中读入一个字符串。
input()输入的是字符串,后面要数值计算的话要先类型转化为整形
无论输入是数字还是字符串,input()函数都返回字符串,即age的数据类型为string类型 如果想使用数字进行计算,则要对字符串进行强制类型转换,否则会引起异常。 如果需要其他类型的数值,则需要强制类型转换,如想要读入一个整数:a = int(input()) 如果想要输入多个值在同一行实现:a,b = input().split() 加入提示语:如,n= int(input("请输入一个整型值N:"))
标准输出函数print()
输出函数:print(): 输出整形值,如print(a) print(a,b)print()函数会默认作为换行符结束,改成print(i,end='') 就可以以行输出,''中间表示距离。
语法格式:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
value, ...:表示输出的对象,可以输出多个对象,需要用逗号分隔。sep:分隔符,默认以空格分隔。end:结束换行符。用来设定以什么结尾,默认值为换行符“\n”。\n 表示换行符file:打印的目的对象,默认为标准输出(可以改为其他类似文件的对象)flush:是否立即输出到file指定的流对象中。
print() 表示换行,自带换行的效果
格式化输出
格式化占位符:%—formatting输出
%是占位符,后面跟着的是要打印变量的类型
| 格式符号 | 描述 |
|---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化十进制整数 |
%u | 格式化无符号整数 |
%o | 格式化八进制整数 |
%x | 格式化十六进制整数 |
%f | 格式化浮点数,可以指定小数精度,默认保留六位 |
%e | 格式化浮点数,用科学计数法 |
%8d | 右对齐 |
%-8d | 左对齐 |
%.2f | 结果保留两位小数 |
%8.3f | 设定宽度保留三位小数 |
例如:
print("%fasdf %ewfs"%(a,b))一个萝卜一个坑,要一一对应起来print("%fasdf wfs"%(a,))后面没有b,逗号也要保留
print实参拆包:把列表拆成元素
I=[2,7,5]
print(I)
# 得到:[2,7,5]
print(*I)
# 得到:2 7 5格式化format输出
通过{}和:来替代print中格式化占位符的%format函数:基本格式:str.format(变量) 列如:保留两位小数输出:print("{0:.2f}{1:.2f}".format(x,y))0.1表示format函数中第一和第二个参数 .2f表示小数保留两位
格式化字符串常量f-string输出
例如:S=3print(f"序列和为{S:.3f}")
格式描述符
| 符号 | 描述 |
|---|---|
| < | 左对齐(字符串默认对齐方式) |
| > | 右对齐(数值默认对齐方式) |
| ^ | 居中对齐 |
| # | 切换数字显示方式 |
同理,格式化占位符都适用,应用时放在:后面。:前面直接调用变量值 例如:print(f'宽度设置,低补位0:{a:<08d}')