Python核心基础DAY1--Python的基础变量类型之字符串和数字类型

一、引言

Python作为一种功能强大且广泛应用的编程语言,其基础变量类型是构建各种复杂程序的基石。在Python中,字符串和数字类型是最常用的基础变量类型之一。对于初学者来说,深入理解这两种类型是掌握Python编程的关键第一步。无论是数据处理、算法实现还是构建Web应用程序,对字符串和数字类型的熟练运用都至关重要。

二、变量

变量是代数的思想,是用来引用数据和功能占位的,具备动态性和可变性;

使用的变量必须声明,在声明变量时不需要指定变量类型。

1.1 变量声明

变量是缓存数据的标识符。

在python中,变量是用赋值语句创建,用来绑定一个数据的有名对象

1.1.1 命名规则

Python核心基础DAY1--Python的基础变量类型之字符串和数字类型_第1张图片

命名约定 — 见名知意 

  • 纯大写字母一般表示常量,如PI = 3.14159。
  • 变量名用名词,函数名用谓词(动词+名词),如 phone / update_phone。
  • 类名采用驼峰形式,如MyClass。

1.2 变量赋值

变量名 = 数字类型

变量名 = 表达式    # one_hundred = 99 + 1

变量名1 = 变量名2 = 变量名3 = 数字类型     # a=b=c=200

变量名1, 变量名2, 变量名3 = 数字类型1, 数字类型2, 数字类型3     # a,b = 100,200 

counter = 100          # 整型变量
miles   = 1000.0       # 浮点型变量
name    = "hqyj"     # 字符串
  1. 第一次赋值是创建变量,同时绑定表达式执行结果
  2. 后续再赋值,会改变原有变量的绑定关系
  3. 变量本身是没有类型,它绑定的对象才有类型
  4. 变量在使用之前,必须先进行赋值
  5. 变量赋值是一个自右向左的运算,将=右边表达式结果赋值给变量

1.3 基础变量类型

Python中的变量就是变量,它没有类型,我们所说的"类型"是变量指向的内存中对象的类型。我们可以使用type小函数用于获取一个变量或值的类型。

python中的数据类型:

字符串 str

数字

1.整数 int             2.浮点数 float         3.布尔数 bool

容器

1.列表 list            2.元组 tuple            3.字典 dict             4.集合 set / 固定集合 frozenset               5.字节串 bytes / 字节数组 bytearray

按照是否可修改划分分为:

不可变数据:Number(数字)、String(字符串)、Tuple(元组)

可变数据:List(列表)、Dictionary(字典)、Set(集合)

三、字符串类型 

(一)字符串的定义

字符串是由一系列字符组成的序列。用引号引起来的就是字符串,即便是或者空格

(二)基本特征

可以使用单引号(')或者双引号(")来定义一个字符串。例如:

str1 = 'Hello, World!'
str2 = "Python is great"

这种简单的定义方式使得创建字符串变得非常直观。同时,Python还支持三引号('''或者""")来定义多行字符串,这在表示较长的文本块,如文档字符串或者多行注释时非常有用。

str3 = '''This is a multi - line string.
It can span across multiple lines.'''

使用反斜杠\对字符进行转义 :

Python核心基础DAY1--Python的基础变量类型之字符串和数字类型_第2张图片

(三)字符串的索引和切片

字符串是有序序列,每个字符有固定位置(索引),可通过索引或切片精确访问部分内容。

字符串中的每个字符都有一个对应的索引值,索引从0开始。通过索引,我们可以访问字符串中的单个字符。例如:

索引规则字符串[索引值]

从左到右:索引从0开始(第一个字符索引为0,第二个为1)。

从右到左:支持负数索引(最后一个字符索引为-1,倒数第二个为-2)。

s = "python"
print(s[0])   # 第一个字符,输出:"p"
print(s[2])   # 第三个字符,输出:"t"
print(s[-1])  # 最后一个字符,输出:"n"
print(s[-3])  # 倒数第三个字符,输出:"h"

除了单个字符的访问,Python还支持字符串的切片操作。切片可以用来获取字符串的子串。

切片语法: str[start:stop:step] 

其中start是起始索引(包含),stop是结束索引(不包含),step是步长。例如:

s = "huaqyj"
# 案例1:s[:2] → 省略start(默认0),end=2,step=1
print(s[:2])  # 截取索引0到1的字符,输出:"hu"
s = "huaqingyunajian"
# 案例2:s[1:5:2] → start=1,end=5,step=2(间隔1个字符取一次)
# 索引1: 'u',索引3: 'q'(跳过索引2),end=5不包含索引5 → 结果:"uq"
print(s[1:5:2])  # 输出:"uq"
# 案例3:s[::-1] → start和end省略(默认从头到尾),step=-1(反向截取)
print(s[::-1])  # 反转字符串,输出:"naijunygnaiquh"

(四)字符串的运算

Python为字符串提供了大量丰富的运算方法,用于字符串的操作和处理。

字符串连接(+ 运算符):

s1 = "Hello"
s2 = "World"
result = s1 + " " + s2  # 拼接时可加入空格分隔
print(result)  # 输出:"Hello World"
只能连接字符串类型,不能直接与数字、列表等其他类型连接(需先通过 str() 转换):
# 错误示例(类型不匹配)
# print("年龄:" + 18)  # 报错:TypeError
print("年龄:" + str(18))  # 正确:先转换为字符串,输出"年龄:18"

当多个字符串字面值相邻摆放时,Python 会自动将它们合并,无需显式使用 +

字符串字面值自动合并:

# 自动合并相邻字符串字面值
s = "Py" "thon"  # 等价于 "Python"
print(s)  # 输出:"Python"
# 拆分长字符串(代码换行时更清晰)
long_str = "这是一段非常长的字符串," "可以拆分成多部分," "Python自动合并它们"
print(long_str)  # 输出:"这是一段非常长的字符串,可以拆分成多部分,Python自动合并它们"

⚠️ 注意:变量与字面值相邻不会自动合并,例如 s = "Py" + var 必须用+连接

字符串重复(* 运算符):

(五)关系判断(innot in

子字符串 in 字符串→ 包含则返回True,否则False

判断一个字符串是否包含另一个子字符串(返回布尔值True或False)

s = "Python is a programming language"
# 判断"Python"是否在s中
print("Python" in s)  # 输出:True
# 判断"java"是否在s中
print("java" in s)    # 输出:False
# 判断"language"是否不在s中
print("language" not in s)  # 输出:False(因包含,所以"not in"为False)

(六)格式化表达式

占位符 — 生成具有一定格式的字符串

占位符和类型码 说明
%s 转成字符串, 使用 str(x) 函数转换(常用)
%d 转成十进制的整数(常用)
%o 转成八进制的整数
%x,%X 转成十六进制的整数
%e,%E 转成指数格式的浮点数
%f,%F 转成小数格式的浮点数(常用)
%g,%G 转成指数格式或小数格式的浮点数
%% 转成一个%
%m.nf m是指总宽度,默认右对齐,加个 - 表示左对齐,n 是指保留的小数点位数
fmt = """
甲方:_____%s_____
乙方:_____%s_____
   ....... 金额:_%d__
"""
s = fmt % ("小王", '华清', 10000)
b = fmt % ("小红", '华清', 10000)
print(s)

Python核心基础DAY1--Python的基础变量类型之字符串和数字类型_第3张图片

print("------%F------" % 3.1415)
print("------%g------" % 3.1415)
print("------%e------" % 3.1415)
print("------%e------" % 31.415)
print("------%g------" % 3141523274812374281342374324.23748123742183472)
# 按照指定的宽度打印,并保留指定的小数位数
print("------%30.2f------" % 3141523274814.23748123742183472)
print("------%30.2f------" % 3144814.3472)
print("------%-30.2f------" % 14)

Python核心基础DAY1--Python的基础变量类型之字符串和数字类型_第4张图片

f-string 格式化字符串以 f 开头,字符串中的表达式用 {} 包起来。

f-string(格式化字符串字面值):

x = 1
y = 2.3 
# f'{x+1}'中,{x+1}是一个表达式,会先计算x+1(结果为2),再将结果嵌入字符串中
print(f'{x+1}')   #2
x = 1
# f'{x+1=}'中,=是f-string的特殊语法,作用是同时显示表达式本身和计算结果
print(f'{x+1=}')   #x+1=2  
d = 12
# {d}直接将变量d的值(12)嵌入字符串'abc'中,拼接后得到'abc12'
print(f'abc{d}') # 其中的{}中为变量或表达式
# 可以使用:对变量进一步格式化
pi = 3.1415
# {pi:.2f}中,:是格式化修饰符的分隔符,.2f表示将浮点数保留2位小数
print(f'{s:.2f}') # 3.14

 (七)常见API — 对字符串进行各种操作

方法的调用语法:对象.方法名(参数)

常见API,详见文档: 内置类型 — Python 3.13.5 文档

1. str.lower(): 将字符串转换为小写
text = "Hello, World!"
print(text.lower())  # 输出: hello, world!

2. str.upper(): 将字符串转换为大写
text = "Hello, World!"
print(text.upper())  # 输出: HELLO, WORLD!

3. str.strip(): 移除字符串两端的空白字符
text = "   Hello, World!   "
print(text.strip())  # 输出: Hello, World!

4. str.split(): 将字符串拆分为列表
text = "Hello, World!"
print(text.split())  # 输出: ['Hello,', 'World!']
text = "Hello,World!"
print(text.split(','))  # 输出: ['Hello', 'World!']

5. str.join(): 将列表中的字符串连接为一个字符串
words = ['Hello', 'World']
print(" ".join(words))  # 输出: Hello World
words = ['apple', 'banana', 'cherry']
print(", ".join(words))  # 输出: apple, banana, cherry

6. str.replace(): 替换字符串中的子字符串
text = "Hello, World!"
print(text.replace("World", "Python"))  # 输出: Hello, Python!

7. str.find(): 查找子字符串,返回第一次出现的位置
text = "Hello, World!"
print(text.find("World"))  # 输出: 7
print(text.find("Python"))  # 输出: -1(如果未找到则返回 -1)

8. str.startswith(): 检查字符串是否以指定子字符串开头
text = "Hello, World!"
print(text.startswith("Hello"))  # 输出: True
print(text.startswith("World"))  # 输出: False

9. str.endswith(): 检查字符串是否以指定子字符串结尾
text = "Hello, World!"
print(text.endswith("World!"))  # 输出: True
print(text.endswith("Hello"))  # 输出: False

10. str.isdigit(): 检查字符串是否只包含数字字符
text1 = "12345"
text2 = "12345abc"
print(text1.isdigit())  # 输出: True
print(text2.isdigit())  # 输出: False

11. str.isalpha(): 检查字符串是否只包含字母字符
text1 = "Hello"
text2 = "Hello123"
print(text1.isalpha())  # 输出: True
print(text2.isalpha())  # 输出: False

12. str.isalnum(): 检查字符串是否只包含字母和数字字符
text1 = "Hello123"
text2 = "Hello 123"
print(text1.isalnum())  # 输出: True
print(text2.isalnum())  # 输出: False

13. str.title(): 将字符串中的每个单词的首字母转换为大写
text = "hello, world!"
print(text.title())  # 输出: Hello, World!

14. str.capitalize(): 将字符串的首字母转换为大写
text = "hello, world!"
print(text.capitalize())  # 输出: Hello, world!

15. str.count(): 计算子字符串在字符串中出现的次数
text = "Hello, World! Hello, Python!"
print(text.count("Hello"))  # 输出: 2
print(text.count("Python"))  # 输出: 1

16. str.format(): 格式化字符串
name = "John"
age = 30
print("My name is {} and I am {} years old.".format(name, age))
# 输出: My name is John and I am 30 years old.
print(f"My name is {name} and I am {age} years old.")
# 输出: My name is John and I am 30 years old. (使用 f-string)

四、数字类型

(一)整数 int

# 十进制的写法:直接书写数字,无需前缀,没有特殊前缀,是Python中默认的数字表示方式
100        0         -5
# 二进制的写法:0b开头,后跟0~1
0b1101
# 八进制的写法:0o开头,后跟0~7
0o777   等于  0b111111111   等于 511
# 十六进制的写法:0x开头,后跟0~9,a-f,A-F
0xA1B2C3D4

进制转换工具(Python 内置函数)

函数 作用 示例
bin(x) 将数字转换为二进制字符串(带0b前缀) bin(10)→'0b1010'
oct(x) 将数字转换为八进制字符串(带0o前缀) oct(10)→'0o12'
hex(x) 将数字转换为十六进制字符串(带0x前缀) hex(10)→'0xa'
int(x,base) 将指定进制的字符串转换为十进制整数 int(0b1010,2)→10

(二)复数

通过 a + bj 的形式直接定义复数,虚数部分必须包含j或J。

复数转换函数:complex():

z1 = 3 + 4j  # 实数部分3,虚数部分4
z2 = -2.5 + 1j  # 实数部分-2.5,虚数部分1
print(complex(5))       # 输出:(5+0j)  → 实数5,虚数0
print(complex(3.14))    # 输出:(3.14+0j)  → 浮点数转换
print(complex("10"))    # 输出:(10+0j)  → 字符串转换(仅含数字)
print(complex(2, 3))    # 输出:(2+3j)  → 实数2,虚数3
print(complex(0, 5))    # 输出:5j  → 实数0,虚数5(可简写)
print(complex(3.5, -2)) # 输出:(3.5-2j)  → 虚数部分为负数

(三)浮点数 float

# 小数写法
3.14         0.14       .14         3.0       3.      0.0
# 科学计数法
6.18E-1     # 等同于 0.618   
2.9979E8     # 等同于 299790000.0

(四)布尔数 bool

表示真假、对错、黑白等,只有2个值TrueFalse

类型转换使用bool()方法,非0都是True

0、0.0、-0.0、空字符串、空列表、空字典、空集合、空元组、None等都是False;

布尔值转换函数:bool(x):

# 返回 False 的情况
print(bool(0))         # False(整数0)
print(bool(0.0))       # False(浮点数0)
print(bool(""))        # False(空字符串)
print(bool([]))        # False(空列表)
print(bool(None))      # False(空值)
# 返回 True 的情况
print(bool(1))         # True(非零整数)
print(bool(-3.14))     # True(非零浮点数)
print(bool("abc"))     # True(非空字符串)
print(bool([0]))       # True(非空列表,即使元素为0)
print(bool(2+3j))      # True(复数非零)

(五)import math模块

数学函数库的必要性

在处理数字类型的各种计算时,仅仅依靠Python的基本运算操作往往是不够的。例如,计算三角函数值、对数函数值、开方等复杂的数学运算,需要专门的数学函数库。math模块就是Python标准库中提供这些数学函数的模块。

对于从事科学计算、数据分析、工程计算等领域的程序员来说,math模块是不可或缺的工具。它提供了一种简洁、高效的方式来执行复杂的数学计算,避免了自己编写复杂算法来实现这些功能的麻烦。

math模块中的常见函数

三角函数

math.sin(x)计算x(弧度制)的正弦值。例如,要计算30度角(转换为弧度制为math.pi/6)的正弦值,可以使用math.sin(math.pi/6),结果为0.5

math.cos(x) 和 math.tan(x)分别用于计算余弦值和正切值,用法与math.sin(x)类似。

对数函数

math.log(x)计算以e为底x的自然对数。如果要计算以其他底数b为底x的对数,可以使用公式math.log(x)/math.log(b)。例如,计算以2为底8的对数,可表示为math.log(8)/math.log(2),结果为3

math.log10(x)专门用于计算以10为底x的对数。

幂函数与开方函数

math.pow(x, y)计算xy次幂。例如,math.pow(2, 3)等于8

math.sqrt(x)计算x的平方根。例如,math.sqrt(9)等于3

math数学函数文档:https://docs.python.org/zh-cn/3.12/library/math.html

在几何计算中的应用

假设我们要计算一个圆的周长和面积。已知圆的半径r = 5

圆的周长公式为C = 2πr,在Python中可以这样实现:

import math
r = 5
C = 2 * math.pi * r
print("圆的周长为:", C)

五、字符串和数字类型的混合操作

在实际编程中,经常会遇到字符串和数字类型混合的情况。例如,要将一个数字和一个字符串拼接在一起形成一个新的字符串。需要注意的是,不能直接使用+运算符将数字和字符串相加,必须先将数字转换为字符串类型。可以使用str()函数来实现这种转换。

num = 10 str1 = "The number is " result = str1 + str(num) print(result) # 输出 'The number is 10'

六、结论

在Python编程的第一天,深入理解字符串和数字类型是非常重要的。字符串类型提供了丰富的操作方法用于文本处理,而数字类型则是进行数学计算的基础。掌握它们的定义、操作和转换方法,能够为后续更复杂的编程任务奠定坚实的基础。无论是构建简单的脚本还是大型的应用程序,对这两种基础变量类型的熟练运用都是必不可少的。随着学习的深入,将会发现这两种类型在Python的各种领域,如数据分析、机器学习、Web开发等中都有着广泛的应用。

七、练习

练习1

输入一个字符串, 判断这个字符串是否是回文:
上海自来水来自海上
ABCCBAa
13531

【答案】:

s = input("请输入一段文字: ")

if s == s[::-1]:
    print(s, '是回文')
else:
    print(s, '不是回文')
练习2

写程序,输入一个字符, 打印字符串的如下内容
1. 打印这个字符串的第一个字符
2. 打印这个字符串的最后一个字符串
3. 如果这个字符串的长度是 奇数,则打印中间这个字符
   用 len(x) 求字符串的长度

【答案】:

s = input("请输入一段文字: ")

print('第一个字符是:', s[0])
print('最后一个字符是:', s[-1])
if len(s) % 2 == 1:
    print('中间的字符是', s[len(s) // 2])

你可能感兴趣的:(Python核心基础DAY1--Python的基础变量类型之字符串和数字类型)