1.1、数据类型

1.1.1 String字符串初识(了解)

 1.1.1简介及代码演示

# 字符串类型
# 可以用单引号括起来
 str1 = 'hello'
 print(str1,type(str1))

# 可以用双引号括起来
str2 = "world"
print(str2,type(str2))

# 可以使用三个引号括起来,将字符串原样输出
str3 = """hello
world"""
print(str3)

str4 = ("hello \
world")
print(str4)

转义字符

说明

\

在行尾作为续行符

\\

反斜杠符号

\'

单引号

\"

双引号

\b

退格

\n

换行

\t

横向制表符

\r

回车,回到行首

1.1.2 intern机制(了解)

字符串不夹杂空格或者特殊符号,默认开启intern机制,共享内存,靠引用计数决定是否销毁。相同的字符串默认只保留一份,当创建一个字符串,它会先检查内存里有没有这个字符串,如果有就不再创建新的了。

字符串缓冲池 单个字母,长度为1的 ASCII 字符会被 interned,包括空字符。

str6 = "hello world"
str7 = "hello world"
print(id(str6))  
print(id(str7))
print(str6 is str7)

----------------
1878127329200
1878127329200
True

1.2 数据类型转换

 1.2.1 自动类型转换(隐式转换)

 1.2.2  强制类型转换(显式转换)

函数

说明

int(x [,base])

将x转换为一个整数,x若为字符串可用base指定进制

float(x)

将x转换为一个浮点数

complex(real[,imag])

创建一个实部为real,虚部为imag的复数

str(x)

将对象x转换为一个字符串

repr(x)

将对象x转换为一个字符串,可以转义字符串中的特殊字符

eval(x)

执行x字符串表达式,并返回表达式的值

bin(x)

将一个整数转换为一个二进制字符串

oct(x)

将一个整数转换为一个八进制字符串

hex(x)

将一个整数转换为一个十六进制字符串

ord(x)

将一个字符转换为它的ASCII整数值

chr(x)

将一个整数转换为一个Unicode字符

tuple(s)

将序列s转换为一个元组

list(s)

将序列s转换为一个列表

set(s)

转换s为可变集合

num_int = 123
num_str = "456"
print("num_int 数据类型为:",type(num_int))
print("类型转换前,num_str 数据类型为:",type(num_str))
num_str = int(num_str)    # 强制转换为整型
print("类型转换后,num_str 数据类型为:",type(num_str))
num_sum = num_int + num_str
print("num_int 与 num_str 相加结果为:",num_sum)
print("sum 数据类型为:",type(num_sum))
输出:
num_int 数据类型为: <class 'int'>
类型转换前,num_str 数据类型为: <class 'str'>
类型转换后,num_str 数据类型为: <class 'int'>
num_int 与 num_str 相加结果为: 579
sum 数据类型为: <class 'int'>

1.2.2.1 编码与解码

将字符串数据类型转换为字节型数据的过程成为编码 encode,需要指定编码类型 

将字节型数据转换为字符型数据的过程称为解码 decode

# 创建一个 字符串类型数据
str1 = '你好中国'
print(str1)
print(type(str1))

# 将字符串数据类型转换为字节型数据的过程成为编码 encode,需要指定编码类型  
byte1 = str1.encode(encoding='utf8')
# 4个字符转换为了12个字节, 所以一个汉字占用3个字节
print(byte1)  # b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\xad\xe5\x9b\xbd'
print(type(byte1))  # <class 'bytes'>

# 在进行编码集使用时,一定要注意,使用什么编码集编码,就要使用它解码,否则报错.
# 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byt
# byte2 = str1.encode(encoding='gbk')
# print(byte2) 
# print(type(byte2))  

# 将字节型数据转换为字符型数据的过程称为解码 decode
str2 = byte1.decode(encoding='utf8')

1.3  输入与输出

# Python开始等待你的输入。这时,你可以输入任意字符,然后按回车后完成输入。
input_str = input("请输入:")
# 输入完成后,不会有任何提示,刚才输入的内容存放到input_str变量里了
print("input_str数据类型为:",type(input_str))
# 输出input_str查看变量内容
print(input_str)
print("使用\\n结尾", end="\n")  # 用\n结尾,等同于print("使用\\n结尾")
print('使用""结尾', end="")  # 用空字符串结尾
print("Hello")
#(1)符串中使用 % 占位
int1 = 10
float1 = 3.14159
str1 = "int1 = %d, float1 = %f" % (int1, float1)
print(str1)  # int1 = 10, float1 = 3.141590

格式符号

说明

%d

十进制整数

%f

浮点数,%.nf可指定显示小数点后n位

%s

字符串

%o

八进制整数

%x

十六进制整数

%e

科学计数法

字符串.format()

方式1:不设置指定位置,按默认顺序
int1 = 10
float1 = 3.14159
bool1 = True
str2 = "int1 = {}, float1 = {}, bool1 = {}".format(int1, float1, bool1)
print(str2)  # int1 = 10, float1 = 3.14159, bool1 = True
方式2:设置指定位置,不能和方式1混合使用
int1 = 10
float1 = 3.14159
bool1 = True
str2 = "int1 = {0}, float1 = {1}, bool1 = {2}".format(int1, float1, bool1)
print(str2)  # int1 = 10, float1 = 3.14159, bool1 = True
方式3:设置参数
int1 = 10
float1 = 3.14159
bool1 = True
str2 = "int1 = {i1}, float1 = {f1}, bool1 = {b1}".format(i1=int1, f1=float1, b1=bool1)
print(str2)  # int1 = 10, float1 = 3.14159, bool1 = True
(3)数字格式化:
float1 = 31415.9
str2 = "{:*^20,.2f}".format(float1)
print(str2)  # *****31,415.90******
(4)使用大括号 {} 来转义大括号
print ("{0} 对应的位置是 {0}".format("hello"))   #hello 对应的位置是 hello
print ("{} 对应的位置是 {{0}}".format("hello"))  #hello 对应的位置是 {0}
(5)f-字符串
字符串前加上一个 f ,字符串中的{}内写入变量名。
int1 = 10
float1 = 3.14159
str3 = f"int1 = {int1}, float1 = {float1}"
print(str3)  # int1 = 10, float1 = 3.14159
{}内变量名后可以加上 = ,打印时会在变量值前加上 变量名=。
int1 = 10
float1 = 3.14159
str3 = f"{int1 = }, {float1 = }"
print(str3)  # int1 = 10, float1 = 3.14159
{}外再套一层{},即{{}},会转义。
int1 = 10
float1 = 3.14159
str3 = f"{{int1 = }}, {{float1 = }}"
print(str3)  # {int1 = }, {float1 = }

: 后可以添加多个参数对数字格式化:

  • *:以 * 填充空白,不写则默认以空格填充。
  • ^:可选 < 、 ^ 、 > ,分别是左对齐、居中、右对齐。
  • 20:数字宽度为20,数字长度不足20则进行填充。
  • ,:可选 , 和 _ ,每3位进行分隔。
  • .2f:小数点后保留2位。

1.4运算符

1.4.1 算术运算符

运算符

说明

实例

+

加

a + b

-

减、或取负

a - b、-a

*

乘

a * b

/

除

a / b

//

整除,除后向下取整

a // b

%

模,返回除法的余数

a % b

**

幂

a ** b

1.4.2 赋值运算符

运算符

说明

实例

=

赋值

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

:=

海象运算符,在表达式中同时进行赋值和返回赋值的值。Python3.8 版本新增

num1 = 20

print((num2 := 3**2) > num1)

print(num2)

1.4.3 比较运算符

运算符

说明

实例

==

相等,比较两者的值

a == b

!=

不相等

a != b

>

大于

a > b

<

小于

a < b

>=

大于等于

a >= b

<=

小于等于

a <= b

注意:除了不同数据类型的数据不能比较大小
# -------------比较运算符---------------
num1 = 10
num2 = 20
print(num1 == num2)  # False
print(num1 != num2)  # True
print(num1 > num2)   # Flase
print(num1 < num2)   # True
print(num1 >= num2)  # False
print(num1 <= num2)  # True
num3 = 'abc'
# 注意:不同的数据类型之间不能进行大小的比较
print(num1 > num3)
# 如果是字符串比较大小,是从最左边开始逐个比较字符串中相应位置的字符的ASCII码
print('5' > '6') # False
print('15' > '6') # False

1.4.4 逻辑运算符

运算符

说明

and

与,x and y,若x为False返回x的值,否则返回y的值

or

或,x or y,若x为True返回x的值,否则返回y的值

not

非,not x,若x为True返回False,若x为False返回True

b1 = False
b2 = True
print(b1 and b2)  # False
print(b1 or b2)  # True
print(not(b1))  # True
print(5 and 8) # 8 非0表示True,0表示False
print(0 and 8) # 0
print(5 or 8)  # 5
print(0 or 8)  # 8
print(not(5))  # False

1.4.5 位运算符

运算符

说明

实例

&

按位与

a & b

|

按位或

a | b

^

按位异或

a ^ b

~

按位取反

~ a

<<

按位左移

a << 1

>>

按位右移

a >> 1

1.4.5 成员运算符

运算符

说明

实例

in

在指定的序列中找到值返回 True,否则返回 False

a in ['a', 'b', 'c']

not in

在指定的序列中没有找到值返回 True,否则返回 False

a not in ['a', 'b', 'c']

1.4.6身份运算符

is

判断两个标识符是不是引用自相同对象

a is b,类似id(a) == id(b)。如果引用的是同一个对象则返回True,否则返回False

is not

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

a is not b,类似id(a) != id(b)。如果引用的不是同一个对象则返回True,否则返回False

# -------------身份运算符---------------
m = 20
n = 20
q = 30
print(m is n)  # True 判断m和n在内存中是否指向同一个地址
print(n is q)  # False
print(n is not q)  # True
# id() 用于获取对象在内存中的地址
print(id(m) == id(n)) # True

print("-" * 30)
# -------------is和==的区别---------------
a = [1,2,3]
b = a 

print(b is a)  # True
print(b == a)  # True

b = a[:]
print(b)
print(b is a)  # False
print(b == a)  # True

1.4.6运算符优先级

1.5 Python编码规范

1.5.1缩进

1.5.2 行长

1.6 单分支、双分支、多分支

单分支结构

单分支结构使用 if 语句,仅在条件为 True 时执行代码块。

x = 10
if x > 5:
    print("x 大于 5")  # 条件成立时执行

双分支结构

双分支结构通过 if-else 实现,根据条件选择执行其中一个代码块。

多分支结构

多分支结构使用 if-elif-else,可处理多个条件判断。

x = 7
if x > 10:
    print("x 大于 10")
elif x > 5:
    print("x 大于 5 且小于等于 10")  # 满足此条件时执行
else:
    print("x 小于等于 5")

注意事项

  • 条件表达式需返回布尔值(True/False)。
  • elif 和 else 为可选部分,根据实际需求添加。
  • 代码块缩进必须一致(通常为 4 空格)。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐