基础知识
python
是一种动态语言,支持交互式编程、面向对象编程和函数式编程,是一种面向对象的解释型计算机程序设计语言,能够把其他语言制作的各种模块结合在一起
计算机只能识别机器语言,不能识别我们的python
代码,我们需要python
的解释器来将python
语言翻译成机器语言,如python3.8.9
版本,这个就是解释器
在cmd
中可以直接执行python
的.py
文件,但是要确保在该文件的路径下,通过命令python xxx.py
执行
可以在打开文件的资源管理器上部的路径中直接输入cmd
,cmd
打开的窗口路径就在该文件的路径下
注释
注释可以提高代码的可读性,提高代码开发效率
python
中单行注释用#(可以用ctrl+/
快捷键添加注释)号,#号右边就是注释的内容
python
中多行注释使用三个单引号'''内容'''或者三双引号“”“内容“”“
模块的导入和 import
的使用
以math
为例:math
用于数学运算
全部导入
import math
from 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
或0B
0b10
为十进制2bin(a)
将十进制a转化为二进制 - 八进制:前导符
0o
或0O
0o10
为十进制8oct(a)
将十进制a转化为八进制 - 十六进制:前导符
0x
或0X
0x10
为十进制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=3
print(f"序列和为{S:.3f}")
格式描述符
符号 | 描述 |
---|---|
< | 左对齐(字符串默认对齐方式) |
> | 右对齐(数值默认对齐方式) |
^ | 居中对齐 |
# | 切换数字显示方式 |
同理,格式化占位符都适用,应用时放在:后面。:前面直接调用变量值 例如:print(f'宽度设置,低补位0:{a:<08d}')