HuaPu在学:Python基础知识—PyCharm版【赋值 & 数据类型 】


前言`

“花圃记录学习日常”。刚开始走上Python之路,以下都是入门基础内容的一些要点笔记。


一、链式赋值、系列解包赋值、常量

链式赋值

用同一个对象去赋值多个变量。例如x=y=3,3这个对象(地址、类型、值)赋给了x和y两个变量。

系列解包赋值

对应赋值的过程。例如x,y=3,4 相当于x=3,y=4。这种赋值常常可以用来做“赋值交换”,例如a,b=b,a 就可以将两者的值进行调换,这里就体现出Python的简洁,在例如C中我们要设置一个中间变量,再去做交换,例如c=a,a=b,b=c。

常量

Python中是不支持常量的,也就是说实际上是可以修改的,只能在逻辑上不做出修改。(常用全大写字母、下划线来表示)

二、基本内置的数据类型、运算符

整型

1、整型的强制转换int()。
int(3.15) to 3
int(“str”) to ASCII码
int(“bool”) to 0/1

2、 若整型与浮点型一起运算返回结果为浮点型。

浮点型

1、浮点数的强制转换float()【注意强制转换后不是改变原本对象,而是生成一个新的对象,指向】

2、增强型运算符
例如a+=1,表示a=a+1【注意a在变为a+1的时候是运算后生成了一个新的对象,然后原对象被自动回收,例如A=3.14,A+=1,A=4.14,原对象3.14被回收,4.14是运算后的新对象】

3、四舍五入
int()是直接去掉小数部分
round()函数是返回四舍五入后的值

4、基本运算符
“+ - * /” “// ** %”

5、divmod()函数:该函数可以同时取得商和余数。

>>>divmod133(4,1)

布尔型

1、比较运算符
“== != > < >= <=”

2、逻辑运算符
“or and not”
(1)逻辑或的三种返回形式
a or b,先去判断a,a是True/(>0数字:如30)则直接返回True/(>0数字:如30),不去在判断or 后的b(无论b是否表达式出错),相反b为Flase则继续向后判断。“短路”形式
(2)逻辑与也是上述的短路形式
(3)逻辑非直接做bool判断返回True或Flase

3、同一运算符
“is is not”
is与”==”(默认调用的是__eq__)的区别:前者表示是否运用同一个对象,那么比较的就是内存地址Id,而后者表示双方引用对象的值是否相等。is的效率高一些。

>>>a=1000
>>>b=1000
>>>a is b
False
>>>a==b
True

【注意__整数缓存的问题__Python会对比较小的整数做缓存,也就是说会指向同一个对象,在交互模式下较小整数的范围是[-5,256],但对于新建文件保存再去执行,那范围就变成了[-5,任意整数]】

>>>a=100
>>>b=100
>>>a==b
True
>>>a is b
True

字符串

1、基本特点
Python中字符串是不可变的
Python直接支持Unicode
内置函数orb()\chr()分别是将字符变成编码\将十进制数变成字符。

2、创建字符串
可以用单引号、双引号,当要创建多行字符串时用三个单引号或三个双引号。

3、允许空字符串,len()长度为0。【字符长度空格要占位】

4、转义字符
换行符\n,注意定义某个变量a的时候交互模式下直接输出a是不会换行的,要通过print()函数。单引号’,续行符\,制表符\t【四个空格的tab】。

>>>a="i\nlove\nu"
>>>a
'i\nlove\nu'
>>>print(a)
i
love
u

5、字符串拼接
str+str=拼接【也可以没有+号】
数字+数字=运算
一种类型+另一种---->报错

7、字符串复制、不换行打印
(1)str*(次数)即为复制拼接多少次
(2)print()函数默认是结尾打印换行符,那么也就是说我们也可以指定打印完后以什么进行结尾。print(“内容”\variable,end=“结尾字符,如空格等”)

8、控制台上读取字符串
input()【这里注意,input()敲进去的默认是类型是str】

>>>age=input("请输入您的年龄:")
请输入您的年龄:22
>>>type(age)
<class 'str'>
>>>age
'22'

9、强制转换字符串str()

10、字符串的索引查询或称之为提取字符串
索引(偏移量)从0开始到len(str)-1,或反向从右侧开始-1到-len(str)。

11、字符串的替换replace()
首先,之前说的字符串定义了是不能够改变的,那么怎么替换呢??
过程实际上是调用内置函数replace()去创建一个新的字符串对象,但原来的字符串还是原来的字符串,如果想要去改变,那就直接改变变量的指向,原对象就会自动回收。一句话定义了的字符串“可替换,不可改变”。

>>>a="abc"
>>>a.replace("b","B")
'aBc'
>>>a
'abc'
>>>a=a.replace("b","B")
>>>a
'aBc'

12、slice切片操作
切片操作(字符串的截取)的格式是[起始索引(偏移量):截止索引(偏移量):步长(默认是1,隔1个取一个)]【注意起始索引包括在内,截止一般不在其中】,值得注意的是步长也可以取负号,代表取出来之后“逆序”。那么起始为空那么就从索引0开始取。截止为空那么就取到最后。【注意正向搜索,反向搜索,格式是不变的】

>>>a="to be or not to be"
>>>a[::-1]
'eb ot ton ro eb ot'
>>>b[0::5]
>>>b="huapuhuapuhuapu"
'hhh'

13、split()分割与jion()合并
(1)split()默认是空格、制表符、换行符,将字符串分割成小的字符串储存在列表[]中。当然也可以指定按照什么分割。

a="to be or not to be"
a.split()
['to', 'be', 'or', 'not', 'to', 'be']
a.split("be")
['to ', ' or not to ', '']

(2)join()合并的使用很特殊,通常与列表连起来使用。“拼接的符号或者直接为空”.join(拼接对象),那么我们知道与原来的直接str相加相比有什么区别呢,如果执行str+str我们会生成新的对象,而原来的对象并没有回收依然保留,如果在循环中这样就会创建一层层对象,很占内存;而join(),操作对象是列表,列表是可以变得,所以可以循环后最后做一次拼接创建一个对象即可。

>>>a="to be or not to be"
>>>a.split()
['to', 'be', 'or', 'not', 'to', 'be']
>>>"-HuaPu-".join(a.split())
'to-HuaPu-be-HuaPu-or-HuaPu-not-HuaPu-to-HuaPu-be'
import time

time_start=time.time()
a=""
for i in range(1000000):
    a+="str"
    pass
time_end=time.time()
print("str+str方式运算时间:{}".format(time_end-time_start))


time_start1=time.time()
li=[]
for i in range(1000000):
    li.append("str")
    pass
a="".join(li)
time_end1=time.time()
print("join()方式运算时间:{}".format(time_end1-time_start1))
输出结果
str+str方式运算时间:0.5017063617706299
join()方式运算时间:0.09275460243225098

14、驻留机制
(1)对于符合标识符规则(字母数字下划线)的字符串,Python会有自动保留,也就是说对于a去定义一个对象str,b再去定义相同的对象str时候,这个对象str是已经存在的,那么只是地址也给了b,a与b指向的是同一个对象。
(2)如果不符合规则,那么会创建不同对象,即使str的内容相同也不行。但是该对象的值确实相等。

>>>a="aaa1"
>>>b="aaa1"
>>>a is b
True
>>>a="aaa*"
>>>b="aaa*"
>>>a is b
False
>>>a == b
True

15、成员操作符
in、not in 判断子字符串是否在某个字符串中。

入门时间表示:

1、unix时间点是“1970年1月1日00:00:00”
2、Python中可调用时间模块(返回结果以unix时间点到现在位置的“秒.微妙为单位”)

>>>import time

>>>time.time()
1650938275.3976712

>>>b=int(time.time())
>>>b
1650938382

>>>print(time.time()//60)
27515640.0

>>>print(time.time()//60//60//24)
19108.0

>>>print(time.time()//60//60//24//365)
52.0

入门折线起止距离表示:

import turtle
import math

#定义坐标
x1,y1=200,100
x2,y2=100,-50
x3,y3=-100,-100
x4,y4=-100,50

#绘图
turtle.penup()
turtle.goto(x1,y1)
turtle.pendown()
turtle.goto(x2,y2)
turtle.goto(x3,y3)
turtle.goto(x4,y4)

#计算距离
distance=math.sqrt((x1-x4)**2+(y1-y4)**2)
turtle.write(distance)

结果:
在这里插入图片描述

三、字符串常用方法

常用查找方法

len()长度、startswith()是否以什么开头、find()什么第一次出现的位置【注意返回的索引值】、rfind()什么最后一次出现的位置、count()什么出现的次数、islnum()所有字符是否都是字母或数字

去除首尾信息

strip()去除首尾指定字符,默认是空格【注意是首尾,内部不可以】,也可以单独去除一侧,lstrip()去左侧,rstrip()去右侧。

大小写转换

capitalize()首字母大写、title()每个单词首字母大写、upper()所有大写、lower()所有小写、swapcase()大变小小变大。

格式排版

center(一共多少字符,“用什么填,默认是空格”)居中、ljust()左对齐、rjust()右对齐。

其他

isalnum()是否由字母或数字组成、isalpha()是否由汉字或字母组成、isdight()是否由数字组成、isspace()是否由空白符【制表符、空格、换行】、isupper()是否大写、islower()是否小写

四、字符串格式化

.format()

直接举例:

a="我是{0},我的年龄是{1},{0}属相兔"
b=a.format("HuaPu",22)

a="我是{name},我的年龄是{age},{name}属相兔"
c=a.format(name="HuaPu1",age=23)

name="HuaPu2"
age=24
d="我是{},我的年龄是{},{}属相兔".format(name,age,name)

print(b)
print(c)
print(d)
输出结果:
我是HuaPu,我的年龄是22,HuaPu属相兔
我是HuaPu1,我的年龄是23,HuaPu1属相兔
我是HuaPu2,我的年龄是24,HuaPu2属相兔
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值