Python基础语法

注释

#标注的文本

数字

整数 int

Python3开始不再区分long、int,long被重命名为int,所以只有int类型了

进制表示:

​ 十进制10

​ 十六进制0xa

​ 八进制0o10

​ 二进制0b10

bool类型,有2个值True、False

浮点数

​ 1.2、3.1415、-0.12,1.46e9等价于科学计数法1.46*109

​ 本质上使用了C语言的double类型

字符串

使用 ' " 单双引号引用的字符的序列

'''和""" 单双三引号,可以跨行、可以在其中自由的使用单双引号

r前缀:在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理

f前缀:3.6版本开始,新增f前缀,格式化字符串

e='c:\windows\nt'
print(e)

e = r'c:\windows\nt'
print(e)

e = f'c:\\windows\\nt'
print(e)

a='sadas'
b='fdgdf'
e=f"{a}****{b}"
print(e)

转义序列

\\ \t \r \n \' \"

前缀r,把里面的所有字符当普通字符对待,则转义字符就不转义了。

转义:让字符不再是它当前的意义,例如\t,t就不是当前意义字符t了,而是被\转成了tab键

缩进

​ 未使用C等语言的花括号,而是采用缩进的方式表示层次关系

​ 约定使用4个空格缩进

续行

在行尾使用 \,注意\之后除了紧跟着换行之外不能有其他字符

如果使用各种括号,认为括号内是一个整体,其内部跨行不用 \

标识符

标识符

  1. 一个名字,用来指代一个值
  2. 只能是字母、下划线和数字
  3. 只能以字母或下划线开头
  4. 不能是python的关键字,例如def、class就不能作为标识符
  5. Python是大小写敏感

标识符约定

不允许使用中文,也不建议使用拼音

不要使用歧义单词,例如class_

在python中不要随便使用下划线开头的标识符

变量

赋值后,可以改变值的标识符

trpe

查看数据类型

>>> type('[a d f]')
<class 'str'>
>>> type('abc')
<class 'str'>
>>> type(124)
<class 'int'>
>>> type(124+1.1)
<class 'float'>
>>> type(124+1.1+True)
<class 'float'>

进制

常见进制有二进制、八进制、十进制、十六进制。应该重点掌握二进制、十六进制

0x表示16进制

0o表示8进制

0b表示二进制

二进制中最低位为1,一定是奇数;最低位为0,一定是偶数

进制转换

int("数据",数据本身的进制) 将数据转化为十进制数

oct(十进制数) 将十进制数据转换为8进制

bin(十进制数) 将十进制数据转换为二进制

hex(十进制数) 将十进制数据转换为16进制数

空容器

空容器

​ 空集合set

​ 空字典dict

​ 空列表list

​ 空元组tuple

布尔值

逻辑运算

and逻辑与 有假则为假,有0则为0

or逻辑或 有真则为真 有1则为1

not逻辑非 真为假,假为真 1为0 0为1

逻辑运算符也是短路运算符

and 如果前面的表达式等价为False,后面就没有必要计算了,这个逻辑表达式最终一定等价为False

or 如果前面的表达式等价为True,后面没有必要计算了,这个逻辑表达式最终一定等价为True

特别注意,返回值。返回值不一定是bool型

把最频繁使用的,最少计算就可以知道结果的条件放到前面,如果它能短路,将大大减少计算量

运算符

算数运算符

+-*///向下取整整除、%取模、**

注:在Python2中///都是整除

位运算符

&位与、|位或、^异或、<<左移、>>右移

比较运算符

比较运算符,返回一个bool值

==!=>>=<<=

链式比较: 4 > 3 > 2

赋值运算符

+=-=*=/=%=//=

x = y = z = 10

成员运算符

in、not in

身份运算符

is 、is not

运算符优先级

单目运算符 > 双目运算符

算数运算符 > 位运算符 > 比较运算符 > 逻辑运算符

搞不清楚就使用括号。长表达式,多用括号,易懂、易读

内建函数

//(整除)向下去整

int 取整数部分,丢弃小数部分

round 四舍六入五取偶

math.floor()向下取整

math.ceil()向上取整

随机数

random模块

​ randint(a, b) 返回[a, b]之间的整数

​ randrange ([start,] stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1。 random.randrange(1,7,2)

​ choice(seq) 从非空序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。random.choice([1,3,5,7])

​ 3.6开始提供choices,一次从样本中随机选择几个,可重复选择,可以指定权重

​ random.shuffle(list) ->None 就地打乱列表元素

​ sample(population, k) 从样本空间或总体(序列或者集合类型)中随机取出k个不同的元素,返回一个新的列表

​ random.sample(['a', 'b', 'c', 'd'], 2)

​ random.sample(['a', 'a'], 2) 会返回什么结果

​ 每次从样本空间采样,在这一次中不可以重复抽取同一个元素

import  random
for i in range(20):
    print(random.randint(1,5))# randint是左右都包的
    
#结果
4
5
5
2
2
4
2
1
1
4
5
2
4
2
4
5
4
4
2
5

for i in range(10):
    print(random.randrange(5))# randrange是左包右不包的,类似range函数
#结果
0
3
4
4
0
0
3
0
2
4

#也可以加上步长
for i in range(10):
    print(random.randrange(0,10,2))
#结果
2
6
8
4
4
8
4
4
0
2

x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(10):
    print(random.choice(x))     #choice,随机选择一个
#结果
6
7
6
5
5
7
3
3
5
8

x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(10):
    print(random.choices(x,k=3))     #选择多个,k为选择的个数
#结果
[8, 1, 2]
[4, 9, 2]
[4, 8, 7]
[4, 4, 7]
[3, 5, 7]
[1, 8, 1]
[8, 1, 8]
[7, 9, 4]
[5, 6, 4]
[3, 2, 5]

#还可以加权重
x = [0, 1, 2, 3, 4]
for i in range(10):
    print(random.choices(x,[2,0,5,1,0],k=3))
#结果
[3, 0, 0]
[2, 2, 2]
[3, 2, 0]
[0, 2, 2]
[0, 2, 0]
[2, 2, 0]
[2, 0, 2]
[2, 2, 0]
[2, 2, 0]
[0, 2, 2]

#取样,不取重复索引的
x = [0, 1, 2, 3, 4]
for i in range(10):
    print(random.sample(x,k=3))
#结果
[2, 4, 0]
[1, 3, 0]
[0, 2, 4]
[0, 1, 4]
[3, 2, 4]
[0, 3, 1]
[2, 4, 0]
[1, 4, 0]
[0, 2, 1]
[2, 0, 1]
posted @ 2022-11-21 09:58  厚礼蝎  阅读(48)  评论(0编辑  收藏  举报