day2----python基础学习2

这篇博客详细介绍了Python的基础知识,包括链式赋值、内置数据类型(如整数、浮点数、布尔值和字符串)及其运算符,特别是整数的不同进制、浮点数的四舍五入以及时间表示。此外,还涵盖了字符串的提取、替换、切片、分割和合并等操作,以及Python中的比较运算符和逻辑运算符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.python基础知识

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

1.2 内置数据类型(基本运算符)

1.3 整数(不同进制)

1.4 浮点数、类型转换和四舍五入、增强型赋值运算符

1.5 时间表示(unix时间点)

1.6 布尔值、比较运算符、逻辑运算符、同一运算符

1.7 基本运算符、复合赋值运算符

1.8 字符串

2.随堂训练

2.1 多点坐标(汇出折线图、计算两点距离)


1.python基础知识

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

链式赋值用于同一个对象赋值给多个变量。

>>> a,b,c=4,5,6      相当于:a=4;b=5;c=6

系列解包赋值

系列数据赋值给对应相同个数的变量(个数必须保持一致)

>>> a,b,c=4,5,6      相当于:a=4;b=5;c=6

常量

ython 不支持常量,即没有语法规则限制改变一个常量的值。我们只能约定常量的命名规则,以及在程序的逻辑上不对常量的值作出修改。

>>> MAX_SPEED = 120

>>> print(MAX_SPEED)

120

>>> MAX_SPEED = 140      #实际是可以改的。只能逻辑上不做修改。

>>> print(MAX_SPEED)

140

1.2 内置数据类型(基本运算符)

每个对象都有类型,python 中最基本的内置数据类型:

1、整型

整数,2345,10,50

2、浮点型

小数,3.14 或者科学计数法 314e-2

3、布尔型

表示真假,仅包含:True、False

4、字符串型

由字符组成的序列。 “abc”,”sxt”,“尚学堂”,”百战程序员”

数字和基本运算符

Python 支持整数(如:50,520)和浮点数(如:3.14,10.0, 1.23e2),我们可以对数字做如下运算。

运算符

说明

示例

结果

+

加法

3+2

5

-

减法

30-5

25

*

乘法

3*6

18

/

浮点数除法

8/2

4.0

//

整数除法

7//2

3

%

模(取余)

7%4

3

**

2**3

8

【操作】基本运算符的使用

>>> a = 7/2
>>> a
3.5
>>> a = 7//2
>>> a
3
>>> a = 7%2
>>> a
1
>>> 7%4 3
>>> 2**3
8
>>> 3/0
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
3/0
ZeroDivisionError: division by zero
>>> divmod(10,5)
(2, 0)
>>> divmod(10,3)
(3, 1)
使用 divmod()函数同时得到商和余数:
>>> divmod(13,3)
(4, 1)

1.3 整数(不同进制)

Python 中,除 10 进制,还有其他三种进制:

        ·0b 或 0B,二进制   0    1

        ·0o 或 0O,八进制   0    1    2    3    4    5    6    7

        ·0x 或 0X,十六进制 0  1    2    3    4    5    6    7    8    9    a    b    c    d   e    f

【操作】测试不同进制

>>> 12
12
>>> 0b101
5
>>> 0o19
SyntaxError: invalid syntax
>>> 0o10
8
>>> 0xff
255
>>> 0xf
15
>>> 0x10 16

使用 int()实现类型转换:

  1. 浮点数直接舍去小数部分。如:int(9.9)结果是:9
  2. 布尔值 True 转为 1,False 转为 0。      如:int(True)结果是 1
  3. 字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错。
>>> int("456")
456
>>> int("456abc")
Traceback (most recent call last):
File "<pyshell#41>", line 1, in <module> int("456abc")
ValueError: invalid literal for int() with base 10: '456abc'
>>> int("456.78")
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
int("456.78")
ValueError: invalid literal for int() with base 10: '456.78'
>>>

自动转型:整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是 10.0

1.4 浮点数、类型转换和四舍五入、增强型赋值运算符

浮点数,称为 float。

浮点数用 ab10 形式的科学计数法表示。比如:3.14,表示成:314E-2 或者 314e-2。

这些数字在内存中也是按照科学计数法存储。

类型转换和四舍五入

  1. 类似于 int(),我们也可以使用 float()将其他类型转化成浮点数。
  2. 整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是 10.0
  3. round(value)可以返回四舍五入的值

注:但不会改变原有值,而是产生新的值

增强型赋值运算符

运算符+、-、*,/、//、**和%和赋值符=结合可以构成“增强型赋值运算符”。

a = a + 1       等价于:     a +=1

增强型赋值运算符

运算符

例子

等价

+=

a += 2

a = a + 2

-=

a -= 2

a = a-2

*=

a *= 2

a = a * 2

/=

a /= 2

a = a / 2

//=

a //= 2

a = a//2

**=

a **= 2

a = a**2

%=

a %= 2

a = a % 2

注意:“+=”中间不能加空格!

1.5 时间表示(unix时间点)

计算机中时间的表示是从“1970 年 1 月 1 日 00:00:00”开始,以毫秒(1/1000 秒)进行计算。我们也把 1970 年这个时刻成为“unix 时间点”。

这样,我们就把时间全部用数字来表示了。

python 中可以通过 time.time() 获得当前时刻,返回的值是以秒为单位,带微秒

(1/1000 毫秒)精度的浮点值。例如:1530167364.8566。

>>> import time
>>> b = int(time.time())
>>> b
1530168754
>>> totalMinutes = b/60
>>> totalMinutes
25502812.566666666
>>> totalMinutes = b//60
>>> totalMinutes
25502812
>>> totalHours = totalMinutes//60
>>> totalHours
425046
>>> totalDays = totalHours//24
>>> totalDays
17710
>>> totalYears = totalDays//365
>>> totalYears
48

1.6 布尔值、比较运算符、逻辑运算符、同一运算符

Python2 中没有布尔值,直接用数字 0 表示 False,用数字 1 表示 True。

Python3 中,把 True 和 False 定义成了关键字,但他们的本质还是 1 和 0,甚至可以和数字相加。

>>> a = True
>>> b = 3
>>> a+b
4

比较运算符

运算符

描述

实例

==

等于 - 比较对象的值是否相等

(a == b) 返回 False。

!=

不等于 - 比较两个对象的值是否不相等

(a != b) 返回 true.

>

大于 - 返回 x 是否大于 y

(a > b) 返回 False。

<

小于 - 返回 x 是否小于 y。

(a < b) 返回 true。

>=

大于等于 - 返回 x 是否大于等于 y。

(a >= b) 返回 False。

<=

小于等于 - 返回 x 是否小于等于 y。

(a <= b) 返回 true。

逻辑运算符

运算符

格式

说明

or

逻辑或

x or y

x 为 true,则不计算 y,直接返回 true x 为 false,则返回 y

and

逻辑与

x and y

x 为 true,则返回 y 的值 x 为 false,则不计算 y,直接返回 false

not

逻辑非

not    x

x 为 true,返回 false x 为 false,返回 true

同一运算符

运算符

描述

is

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

is not

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

is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。

== 用于判断引用变量引用对象的值是否相等,默认调用对象的 __eq__()方法。

整数缓存问题

Python 仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对象。需要注意的是,这仅仅是在命令行中执行,而在 Pycharm 或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。

·总结

  1. is 比较两个对象的 id 值是否相等,是否指向同一个内存地址;
  2. == 比较的是两个对象的内容是否相等,值是否相等;
  3. 小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用;
  4. is 运算符比 == 效率高,在变量和 None 进行比较时,应该使用 is。

【操作】同一运算符测试

>>> a = 1000
>>> b = 1000
>>> a == b
True
>>> a is b
False
>>> id(a)
46764560
>>> id(b)
46765216
>>> c = 10
>>> d = 10
>>> c is d
True
>>> id(c)
1388831648
>>> id(d)
1388831648

1.7 基本运算符、复合赋值运算符

基本运算符

运算符

说明

and ,     or    ,      not

布尔与、布尔或、布尔非

is    ,    is    not

同一性判断,判断是否为同一个对象

<,<=,>,>=,!=,==

比较值是否相当,可以连用

|       ^           &

按位或,按位异或、按位与

<<, >>

移位

~

按位翻转

+,-,*,/,//,%

加,减,乘,浮点除、整数除、取余

**

幂运算

1. 比较运算符可以连用,并且含义和我们日常使用完全一致。
>>> a = 4
	>>> 3<a<10	#关系运算符可以连用
True
2. 位操作
>>> a = 0b11001
>>> b = 0b01000
>>> c = a|b
	>>> bin(c)	#bin()可以将数字转成二进制表示
'0b11001'
>>> bin(c&b)
'0b1000'
>>> bin(c^b)
'0b10001'
>>> a = 3
	>>> a<<2	#左移 1 位相当于乘以 2.左移 2 位,相当于乘以 4
12
>>> a = 8
	>>> a>>1	#右移 1 位相当于除以 2.
3. 加法操作
	(1)	数字相加	3+2	==> 5
	(2)	字符串拼接	“3”+“2”==> “32”
	(3)	列表、元组等合并
4. 乘法操作	[10,20,30]+[5,10,100] ==>[10,20,30,5,10,100]
	(1)	数字相乘	3*2	==>	6
	(2)	字符串复制	“sxt”*3	==>	”sxtsxtsxt”
	(3)	列表、元组等复制	[10,20,30]*3 ==> [10,20,30,10,20,30,10,20,30]

复合赋值运算符

运算符

描述

示例

等价于

+=

加法赋值字符串拼接

sum += n a       += “sxt”

sum = sum + n a       =     a + “sxt”

-=

减法赋值

num1       -= n

num = num - n

*=

乘法赋值

a *= b

a = a * b

/=

浮点除赋值

a/=b

a = a / b

//=

整数除赋值

a//=b

a = a//b

%=

取余赋值

a%=b

a = a % b

**=

幂运算赋值

a**=2

a = a**2

<<=

左移赋值

a<<=2

a = a<<2

>>=

右移赋值

a>>=2

a = a>>2

&=

按位与赋值

a&=b

a = a&b

|=

按位或赋值

a|=b

a=a|b

^=

按位异或赋值

a^=b

a = a^b

注:与 C 和 JAVA 不一样,Python 不支持自增(++)和自减(--)

运算符优先级问题(如下优先级,从高到低。

运算符

描述

**

指数 (最高优先级)

~

按位翻转

* / % //

乘,除,取模和取整除

+ -

加法减法

>> <<

右移,左移运算符

&

位 'AND'

^ |

位运算符

<= < > >=

比较运算符

<> == !=

等于运算符

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

赋值运算符

is is not

身份运算符

in not in

成员运算符

not or and

逻辑运算符

实际使用中,记住如下简单的规则即可,复杂的表达式一定要使用小括号组织。

  1. 乘除优先加减
  2. 位运算和算术运算>比较运算符>赋值运算符>逻辑运算符

1.8 字符串

1.8.1 unicode字符集

Python3 直接支持 Unicode,可以表示世界上任何书面语言的字符。Python3 的字符默认就是 16 位 Unicode 编码,ASCII 码是 Unicode 编码的子集。

使用内置函数 ord()可以把字符转换成对应的 Unicode 码;使用内置函数 chr()可以把十进制数字转换成对应的字符。

       我们可以通过单引号或双引号创建字符串。例如:a=’abc’;b=”sxt”

使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。

1.8.2 转义字符

我们可以使用“\+特殊字符”,实现某些难以用字符表示的效果。比如:换行等。常见的转义字符有这些:

转义字符

描述

\(在行尾时)

续行符

\\

反斜杠符号

\'

单引号

\"

双引号

\b

退格(Backspace)

\n

换行

\t

横向制表符

\r

回车

>>> a = 'I\nlove\nU'
>>> a
'I\nlove\nU'
>>> print(a)
I
love
U
>>> print('aaabb\ cccddd') aaabbcccddd

1.8.3 提取、替换字符,内存分析

用[]提取字符

字符串的本质就是字符序列,我们可以通过在字符串后面添加[],在[]里面指定偏移量,

可以提取该位置的单个字符。

正向搜索:最左侧第一个字符,偏移量是 0,第二个偏移量是 1,以此类推。直到 len(str)-1

为止。

反向搜索:

最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str)

为止。

>>> a = 'abcdefghijklmnopqrstuvwxyz'
>>> a
'abcdefghijklmnopqrstuvwxyz'
>>> a[0]
'a'
>>> a[3]
'd'
>>> a[26-1]
'z'
>>> a[-1]
'z'
>>> a[-26]
'a'
>>> a[-30]
Traceback (most recent call last):
File "<pyshell#91>", line 1, in <module> a[-30]
IndexError: string index out of range

replace()实现字符串替换

字符串是“不可改变”的,我们通过[]可以获取字符串指定位置的字符,但是我们不能改变字符串。我们尝试改变字符串中某个字符,发现报错了:

>>> a = 'abcdefghijklmnopqrstuvwxyz'
>>> a
'abcdefghijklmnopqrstuvwxyz'
>>> a[3]='高'
Traceback (most recent call last):
File "<pyshell#94>", line 1, in <module> a[3]='高'
TypeError: 'str' object does not support item assignment

字符串不可改变。但是,我们确实有时候需要替换某些字符。这时,只能通过创建新的字符串来实现。

>>> a = 'abcdefghijklmnopqrstuvwxyz'
>>> a
'abcdefghijklmnopqrstuvwxyz'
>>> a = a.replace('c','高')
'ab 高 defghijklmnopqrstuvwxyz'

1.8.4 切片操作

切片 slice 操作可以让我们快速的提取子字符串。标准格式为:

[起始偏移量 start:终止偏移量 end:步长 step]

典型操作(三个量为正数的情况)如下:

操作和说明

示例

结果

[:]     提取整个字符串

“abcdef”[:]

“abcdef”

[start:]从 start 索引开始到结尾

“abcdef”[2:]

“cdef”

[:end]从头开始知道 end-1

“abcdef”[:2]

“ab”

[start:end]从 start 到 end-1

“abcdef”[2:4]

“cd”

[start:end:step]从 start 提取到 end-1,步长是 step

“abcdef”[1:5:2]

“bd”

1.8.5 字符串分割、合并

split()分割和 join()合并

split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。示例代码如下:

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

join()的作用和 split()作用刚好相反,用于将一系列子字符串连接起来。示例代码如下:

>>> a = ['sxt','sxt100','sxt200']
>>> '*'.join(a)
'sxt*sxt100*sxt200'

拼接字符串要点:

使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。推荐

使用 join 函数,因为 join 函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。

1.8.6 驻留机制

        仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。 Python 支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线(_)、字母和数字)会启用字符串驻留机制驻留机制。

1.8.7 常用查找方法

方法和使用示例

说明

结果

len(a)

字符串长度

96

a.startswith('我是高淇')

以指定字符串开头

True

a.endswith('过我')

以指定字符串结尾

True

a.find('高')

第一次出现指定字符串的位置

2

a.rfind('高')

最后一次出现指定字符串的位置

29

a.count("编程")

指定字符串出现了几次

3

a.isalnum()

所有字符全是字母或数字

False

去除首尾信息

我们可以通过 strip()去除字符串首尾指定信息。通过 lstrip()去除字符串左边指定信息, rstrip()去除字符串右边指定信息。

>>> "*s*x*t*".strip("*")
's*x*t'
>>> "*s*x*t*".lstrip("*")
's*x*t*'
>>> "*s*x*t*".rstrip("*")
'*s*x*t'
>>> "	sxt	".strip()
'sxt'

大小写转换

示例

说明

结果

a.capitalize()

产生新的字符串,首字母大写

'Gaoqi     love    programming, love      sxt'

a.title()

产生新的字符串,每个单词都首字母大写

'Gaoqi      Love    Programming, Love    Sxt'

a.upper()

产生新的字符串,所有字符全转成大写

'GAOQI      LOVE    PROGRAMMING, LOVE

SXT'

a.lower()

产生新的字符串,所有字符全转成小写

'gaoqi     love    programming, love      sxt'

a.swapcase()

产生新的,所有字母大小写转换

'GAOQI

sxt'

LOVE

PROGRAMMING, LOVE

1.8.8 format格式化

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序。

>>> a = "名字是:{0},年龄是:{1}"
>>> a.format("高淇",18)
'名字是:高淇,年龄是:18'
>>> a.format("高希希",6)
'名字是:高希希,年龄是:6'
>>> b = "名字是:{0},年龄是{1}。{0}是个好小伙"
>>> b.format("高淇",18)
'名字是:高淇,年龄是 18。高淇是个好小伙'
>>> c = "名字是{name},年龄是{age}"
>>> c.format(age=19,name='高淇')
'名字是高淇,年龄是 19'

填充与对齐

填充常跟对齐一起使用

^、<、>分别是居中、左对齐、右对齐,后面带宽度

:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

>>> "{:*>8}".format("245")
'*****245'
>>> "我是{0},我喜欢数字{1:*^8}".format("高淇","666")
'我是高淇,我喜欢数字**666***'

数字格式化

浮点数通过 f,整数通过 d 进行需要的格式化。案例如下:

>>> a = "我是{0},我的存款有{1:.2f}"
>>> a.format("高淇",3888.234342)
'我是高淇,我的存款有 3888.23'

数字

格式

输出

描述

3.1415926

{:.2f}

3.14

保留小数点后两位

3.1415926

{:+.2f}

3.14

带符号保留小数点后两位

2.71828

{:.0f}

3

不带小数

5

{:0>2d}

05

数字补零 (填充左边, 宽度为 2)

5

{:x<4d}

5xxx

数字补 x (填充右边, 宽度为 4)

10

{:x<4d}

10xx

数字补 x (填充右边, 宽度为 4)

1000000

{:,}

1,000,000

以逗号分隔的数字格式

0.25

{:.2%}

25.00%

百分比格式

1000000000

{:.2e}

1.00E+09

指数记法

13

{:10d}

13

右对齐 (默认, 宽度为 10)

13

{:<10d}

13

左对齐 (宽度为 10)

13

{:^10d}

13

中间对齐 (宽度为 10)

2.随堂训练

2.1 多点坐标(汇出折线图、计算两点距离)

import turtle
import math
x1,y1 = 0,0
x2,y2 = 100,0
x3,y3 = 100,100
x4,y4 = 0,100

turtle.goto(x2,y2)
turtle.goto(x3,y3)
turtle.goto(x4,y4)

distance = math.sqrt((x4-x1)**2+(y4-y1)**2)
turtle.write(distance)
turtle.done()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值