day07-python3

day07-python3

python3

基础语法

数字类型

int			整数
bool		布尔 True
float		浮点数
complex		复数  1+2j

字符串

python中单引号'和双引号"使用完全相同;
使用三引号''' 或 """ 可以指定一个多行字符串
转义符 \
反斜杠可以用来转义,使用r可以让反斜杠不发生转义。如r"hello world\n",原样输出
按字面意义级联字符串,如"this" "is" "string",会被自动转换为thisisstring
字符串可以用+运算符连接在一起,用*运算符重复
Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始
python中的字符串不能改变
Python 没有单独的字符类型,一个字符就是长度为 1 的字符串

空行

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始
注意:空行也是程序代码的一部分。

等待用户输入

input("按下enter键后退出")

同一行显示多条语句

x="hello";y="world";z="nihao"

多个语句构成代码组


print输出

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""
print(x,end=" ")

import与from...import

在 python 用 import 或者 from...import 来导入相应的模块。

将整个模块(somemodule)导入,格式为: import somemodule

从某个模块中导入某个函数,格式为: from somemodule import somefunction

从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc

将某个模块中的全部函数导入,格式为: from somemodule import *

基本数据类型

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。

多个变量赋值

a=b=c=1
a,b,c=1,2,"str"

标准数据类型

python3中有6个标准的数据类型:

  • Number 数字
  • String 字符串
  • List 列表
列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套);
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
注意:
  1、List写在方括号之间,元素用逗号隔开。
  2、和字符串一样,list可以被索引和切片。
  3、List可以使用+操作符进行拼接。
  4、List中的元素是可以改变的。
  • Tuple 元组
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。

tup1=()   空元组
tup2=(20,)一个元组,需要在元素后添加逗号

注意:
  1、与字符串一样,元组的元素不能修改。
  2、元组也可以被索引和切片,方法一样。
  3、注意构造包含 0 或 1 个元素的元组的特殊语法规则。
  4、元组也可以使用+操作符进行拼接。
  • Set 集合
    • 创建格式
      • parame=
      • set(value)
    • 集合运算
      • a - b a和b的差集
      • a | b a和b的并集
      • a & b a和b的交集
      • a ^ b a和b中不同时存在的元素
集合是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
基本功能是:进行成员关系测试和删除重复元素。
可以使用大括号{}或者set()函数创建集合
注意:
	创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
  • Dictionary 字典
    • 创建字典
      • dict{} 创建空字典
      • dict["key"]="value"
    • 获取
      • dict[key] 通过键获取值
      • dict.keys() 获取所有的键
      • dict.values() 获取所有的值
字典是python中另一个非常有用的内置数据类型
列表是有序的对象集合,字典是无需的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取的。
字典是一种映射类型,字典用{}表示,是一个无需的键值的集合。
键必须使用不可变类型。
同一个字典中键必须是唯一的。

注意:
  1、字典是一种映射类型,它的元素是键值对。
  2、字典的关键字必须为不可变类型,且不能重复。
  3、创建空字典使用 { }。

不可变数据

Number 数字
String 字符串
Tuple 元组

可变数据

List 列表
Dictionary 字典
Set 集合

Number 数字

int 整数
float 小数
bool 布尔
complex 复数
注意:Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。
  • type()

    type()函数可以用来查询变量所指的对象类型
    
  • isinstance()

int
isinstance(a,int)
  • isinstance和type的区别
type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。

数值的运算

1、Python可以同时为多个变量赋值,如a, b = 1, 2。
2、一个变量可以通过赋值指向不同类型的对象。
3、数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。
4、在混合计算时,Python会把整型转换成为浮点数。

数据类型转换

隐式类型转换-自动完成

对两种不同数据进行运算,较低数据类型(整数)会自动转换为较高数据类型(浮点数),以避免数据丢失
print("=======数据类型转换========")
print("隐式类型转换-自动完成")
num_int=123
num_float=1.23
num_new=num_int+num_float
print("num_int的类型",type(num_int))
print("num_float的类型",type(num_float))
# int 和 flot进行运算
print("int+float类型自动转换为:",type(num_new))
print("int+float类型自动转换为:",type(num_new))
num_str="123"
print("num_str的类型",type(num_str))
print(num_int+num_str)

运行结果:

int与float进行运算 结果是float类型
int与字符串进行运行,会报TypeError: unsupported operand type(s) for +: 'int' and 'str'错误

显示类型转换-需要使用类型函数来转换

int()	把变量转换为int类型
float()	把变量转换为float类型
str()	把变量转换为str类型

进行数据类型之间转换的内置函数

int(x)
float(x)
str(x)
tuple(s)    将序列s转换为一个元组
list(s)	    将序列s转换为一个列表
set(s)	    转换为可变集合
frozenst(s) 转换为不可变集合

推导式

推导式:是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
python支持的数据结构的推导式:
	列表(list)推导式
	字典(dict)推导式
	集合(set)推导式
	元组(tuple)推导式

列表推导式

  • 格式
[表达式 for 变量 in 列表]
[out_exp_res for out_exp in input_list]
或
[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]

out_exp_res:列表生成元素表达式,可以是有返回值的函数
for out_exp in input_list:迭代input_list将out_exp传入到out_exp_res表达式中
if condition:条件语句,可以过滤列表中不符合条件的值
  • 代码
#推导式
# 列表推导式
# 过滤掉长度小于或等于3的字符串列表,并将剩下的转换成大写字母:
# 创建一个集合
names=["liuchao","YaYa","Bob","Tom","alice","Wendy"]
new_name=[name.upper() for name in names if len(name)>3]
print(new_name)
# 计算30以内可以被3整除的整数
nums=[i for i in range(31) if i % 3 == 0]
print(nums)

结果:

字典推导式

  • 格式
{key_expr:value_expr for value in collection}
或
{key_expr:value_expr for value in collection if condition}
  • 代码
# 字典推导式
# 1、使用字符串及其长度创建字典

# 创建一个列表
listdemo =["Google","lalal","TaoBao","JingDong"]
# 将列表的元素作为键,其长度作为值
newdict={key:len(key) for key in listdemo}
print(newdict)

# 2、提供三个数字,以三个数字为键,三个数字的平方为值来创建字典:
dic01={num:num**2 for num in (2,3,5)}
print(dic01)

结果:

集合推导式

  • 格式
{expression for item in Sequence}
或
{expression for item in Sequence if conditional}
  • 代码
# 集合推导式
# 1. 计算1,2,3的平方数
# 集合
setnew={i**2 for i in (1,2,3)}
print(setnew)
# 列表
listnew=[i**2 for i in (1,2,3)]
print(listnew)
# 字典
tupnew={i:i**2 for i in (1,2,3)}
print(tupnew)
# 2. 判断不是abc的字母并输出
a={x for x in "abcdefjabcdfesabds" if x not in "abc"}
print(a,type(a))

结果:

元组推导式

元组推导式可以利用range区间、元组、列表、字典和集合等数据类型,快速生成一个满足需要的元组
  • 格式
(expression for item Sequence)
或
(expression for item Sequence if conditional)
元组推导式返回的结果是一个生成器对象
  • 代码
# 元组推导式
# 生成一个包含数字1~9的元组
a= (x for x in range(1,10))
print(a)
a=tuple(a)
print(a)

结果:

运算符

算数运算符
比较运算符
复制运算符
逻辑运算符
位运算符
成员运算符
身份运算符
运算符优先级

算术运算符

+
-
*
/
%
**	幂 - 返回x的y次幂
//  取整除 - 向下取接近商的整数
  • 代码
# 1. ** 幂
print(2**3)
# 2. // 取整除 - 向下取接近商的整数,相当于去掉小数点后面的数
print(4//3)
print(10//2)
print(5//2)
print(5.2//2)

结果:

比较运算符

==
!=
>
<
>=
<=

赋值运算符

=
+=
-=
*=
/=
%=
**=
//=
:=	海象运算符,可在表达式内部为变量赋值

位运算符

&	按位与运算符,参与运算的两个值,转换成二进制,如果两个相应位为1,则结果为1,否则为0
|	按位或运算符:只要对应的两个二进制位有一个为1,结果就是1,否则为0
^	按位异或运算符:当两对应的二进制相异时,结果为1
~	按位取反运算符:对数据的每个二进制位取反,即1变成0,0变成1
<<	左移动运算符:运算数的各二进位全部左移若干位
>>	右移动运算符:运算数的各二进制全部右移若干位
  • 代码
a=4     #    0100
b=3		#    0011
print(a&b) # 0000 0
print(a|b) # 0111 7
print(a^b) # 0111 7
print(~a)  # 1011 -5
#   0000 0100  4
#   0000 0100  补码
#   0000 0100  反码 整数的补码和反码与原码一致
#   1111 1011  取反后
#   1111 1010  取反之后的补码减1得到反码
#   1111 0101  将反码的数字位全部取反得到原码
#	-	 5	   将原码转换成10进制得到取反的结果
print(a<<2)# 0001 0000 16
print(a>>2)# 0001 1

结果:

逻辑运算符

and		与
or		或
not		非

成员运算符

in	如果在指定的序列中找到值返回True,否则返回False
not 如果在指定的序列中没有找到值返回STrue,否则返回False

身份运算符

is 是判断两个标识符是不是引用自一个对象
is not 判断两个标识符引用自不同对象

代码:

# 七. 身份运算符
a=20
b=20
if(a is b):
	print("a和b有相同的标识")
else:
	print("a和b没有相同的标识")
print("a的地址:",id(a))
print("b的地址:",id(b))

结果:

  • is 与 ==区别
is 用于判断两个变量引用对象是否为同一个
== 用于判断引用变量的值是否相等

运算符优先级

数字(Number)

数字数据类型用于存储数值;
数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。
  • 在变量赋值时 Number 对象将被创建

    • var1=10
  • 删除数字对象的引用

    • del var1

    • a=100
      del a
      print(a)
      

字符串

函数

range()

range(stop)		从0~stop-1
range(start,stop,step) 从start开始每次增加step,到stop-1结束

id()

id()函数用于获取对象内存地址

数学函数

abs(x)		绝对值
ceil(x)		向上取整
exp(x)		e的x方,math.exp(x)
fabs(x)		数字的绝对值,math.fabs(x)
floor(x)	向下取整,math.floor(x)
log(x) 或 log(x,y) math.log(math.e) 以e为底的对数,math(100,10)以10为底的对数
log10(x)	以10为底的对数
min(x1,x2,...) 返回最小值,参数可以是序列
max(x1,x2,...) 返回最大值
modf(x)		返回x的整数部分与小数部分
pow(x,y)	x**y
round(x,[n]) 四舍五入,保留小数点后n位
sqrt(x)		返回数字x的平方根

随机数函数

random()    随机生成一个实数,他在[0,1]范围内
choice(seq) 从序列的元素中随机挑选一个元素
randrange([start],stop,[step]) 从指定范围内,按指定基数递增的集合中随机获取一个随机数
seed([x]) 改变随机数生成器的种子seed
shuffle(lst) 将序列的所有元素随机排序
uniform(x,y) 随机生成下一个实数,他在[x,y]范围内

数学变量

pi	圆周率
e	数学常量e,e即自然常数
posted @ 2022-03-25 19:43  黎白昼  阅读(40)  评论(0)    收藏  举报