大模型之术(ai-agent)----pthon基础一(数据类型及转换、运算符、if)
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 空格)。
更多推荐

所有评论(0)