本文最后更新于 2024-07-06,文章内容可能已经过时。

一. python基础语法

1. pycharm中常用快捷键

image-20240225141826839

2. Python中常用的有6种值(数据)的类型

| 类型 | 描述 | 说明 |
| —————— | ——————————————————— | ————————————————— |
| 整数(int) | | 整数(int),如:10、-10 |
| 浮点数(float) | | 浮点数(float),如:13.14、-13.14 |
| 复数(complex) | | 复数(complex),如:4+3j,以j结尾表示复数 |
| 布尔(bool) | 表达现实生活中的逻辑,即真和假,True表示真,False表示假。 | 布尔(bool)中True本质上是一个数字记作1,False记作0 |
| 字符串(String) | 描述文本的一种数据类型 | 字符串(string)由任意数量的字符组成 |
| 列表(List) | 有序的可变序列 | Python中使用最频繁的数据类型,可有序记录一堆数据 |
| 元组(Tuple) | 有序的不可变序列 | 可有序记录一堆不可变的Python数据集合 |
| 集合(Set) | 无序不重复集合 | 可无序记录一堆不重复的Python数据集合 |
| 字典(Dictionary) | 无序Key-Value集合 | 可无序记录一堆Key-Value型的Python数据集合 |

3.python中基于print语句完成各类字面量的输出

字面量:在代码中,被写下来的的固定的值,称之为字面量。

print(字面量)

如:print(10),输出整数10;print(13.14),输出浮点数13.14;print(“6666”),输出字符串。

4. 注释

单行注释:以 #开头,#右边 的所有文字当作说明,而不是真正要执行的程序,起辅助说明作用。(注意,#号和注释内容一般建议以一个空格隔开)

多行注释: 以 一对三个双引号 引起来 (“““注释内容”““)来解释说明一段代码的作用使用方法。

# 单行注释
"""
多行注释
"""

5. 变量定义和使用

变量名 = 变量值

# 定义一个变量,用来记录钱包余额
money = 50
# 通过print语句,输出变量记录的内容;通过逗号分隔输出多个量
print("钱包还有:", money)

# 买了一个冰淇淋,花费10元
money = money - 20
print("买了冰淇淋花费10元,还剩余:", money, "元")

6. python中:变量无类型,(但它存储的)数据有类型

type()语句的使用:查看<字面量>的类型

# 要知道,不是变量是字符串,而是它存储了:字符串

name = "GrayPigeon"
name_type = type(name)

7. 数据类型的转换

| 语句(函数) | 说明 |
| ————– | ——————— |
| int(x) | 将x转换为一个整数 |
| float(x) | 将x转换为一个浮点数 |
| str(x) | 将对象 x 转换为字符串 |

注意:

  1. 任何类型,都可以通过str(),转换成字符串
  2. 字符串内必须真的是数字,才可以将字符串转换为数字
  3. 浮点数转整数会丢失精度,也就是小数部分

8. 标识符

变量的名字,方法的名字,类的名字,等等,我们把它统一的称之为标识符,用来做内容的标识。所以,标识符是用户在编程的时候所使用的一系列名字,用于给变量、类、方法等命名。

标识符命名规则:

  • 内容限定:标识符命名中,只允许出现:英文、中文、数字、下划线(_)
  • 不推荐使用中文
  • 数字不可以开头
  • 大小写敏感
  • 不可使用关键字,如:False,True,None,and,try,while……
  • 注意:关键字也大小写敏感(即只要大小写不一致,就不算占用关键字)

变量命名规范:见名知意,下划线命名法(firse_name),英文字母全小写

9. 运算符

算术(数学)运算符

| 运算符 | 描述 | 实例 |
| —— | —— | ———————————————————— |
| + | 加 | 两个对象相加 a + b 输出结果 30 |
| - | 减 | 得到负数或是一个数减去另一个数 a - b 输出结果 -10 |
| * | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 |
| / | 除 | b / a 输出结果 2 |
| // | 取整除 | 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
| % | 取余 | 返回除法的余数 b % a 输出结果 0 |
| | 指数 | a**b 为10的20次方, 输出结果 100000000000000000000 |

赋值运算符

| 运算符 | 描述 | 实例 |
| ———- | ———- | ———————————————————— |
| = | 赋值运算符 | 把 = 号右边的结果 赋给 左边的变量,如 num = 1 + 2 * 3,结果num的值为7 |

复合赋值运算符

| 运算符 | 描述 | 实例 |
| ———- | —————- | ————————- |
| += | 加法赋值运算符 | c += a 等效于 c = c + a |
| -= | 减法赋值运算符 | c -= a 等效于 c = c - a |
| = | 乘法赋值运算符 | c = a 等效于 c = c * a |
| /= | 除法赋值运算符 | c /= a 等效于 c = c / a |
| %= | 取模赋值运算符 | c %= a 等效于 c = c % a |
| = | 幂赋值运算符 | c = a 等效于 c = c a |
| //= | 取整除赋值运算符 | c //= a 等效于 c = c // a |

比较运算符

| 运算符 | 描述 | 示例 |
| ———- | ———————————————————– | —————————– |
| == | 判断内容是否相等,满足为True,不满足为False | 如a=3,b=3,则(a == b) 为 True |
| != | 判断内容是否不相等,满足为True,不满足为False | 如a=1,b=3,则(a != b) 为 True |
| > | 判断运算符左侧内容是否大于右侧满足为True,不满足为False | 如a=7,b=3,则(a > b) 为 True |
| < | 判断运算符左侧内容是否小于右侧满足为True,不满足为False | 如a=3,b=7,则(a < b) 为 True |
| >= | 判断运算符左侧内容是否大于等于右侧满足为True,不满足为False | 如a=3,b=3,则(a >= b) 为 True |
| <= | 判断运算符左侧内容是否小于等于右侧满足为True,不满足为False | 如a=3,b=3,则(a <= b) 为 True |

10. 字符串定义方式

字符串有3种不同的定义方式:双引号定义,单引号定义,三引号定义

image-20240225150425317

三引号定义法中,和多行注释的写法一样,同样支持换行操作。使用变量接收它,它就是字符串;不使用变量接收它,就可以作为多行注释使用。

字符串的引号嵌套

单引号定义法,可以内含双引号

双引号定义法,可以内含单引号

可以使用转意字符(\)来将引号解除效用,变成普通字符串

name = "\"带双引号的字符串"\"

11. 字符串拼接

如果我们有两个字符串(文本)字面量或字符串变量,可以将其拼接成一个字符串,通过+号即可完成

name = "dsd"
print("我的名字是:" + name)

注意:无法和非字符串类型进行拼接。

12. 字符串格式化

通过将字符串格式化的方式实现字符串和其他类型变量的快速拼接

| 格式符号 | 转化 |
| ——– | ——————————– |
| % | 表示占位 |
| %s | 将内容转换成字符串,放入占位位置 |
| %d | 将内容转换成整数,放入占位位置 |
| %f | 将内容转换成浮点型,放入占位位置 |

数字精度控制

以使用辅助符号“m.n”来控制数据的宽度和精度

  • m,控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效
  • .n,控制小数点精度,要求是数字,会进行小数的四舍五入

例如:

%5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补足宽度。

%5.2f:表示将宽度控制为5,将小数点精度设置为2(小数点和小数部分也算入宽度计算)。

%.2f:表示不限制宽度,只设置小数点精度为2。

# 通过占位的形式,完成拼接
name = "黑马程序员"
message = "学IT来:%s" % name
print(message)

# 通过占位的形式,完成数字和字符串的拼接(将数字转成字符串再拼接)
class_num = 57
avg_salary = 16781
message = "Python大数据学科,北京%s期,毕业平均工资:%s" % (class_num, avg_salary)
print(message)

name = "某宝"
setup_year = 2006
stock_price = 19.99
message = "%s,成立于:%d,我今天的股价是:%f" % (name, setup_year, stock_price)
print(message)

num1 = 11
num2 = 11.345
print("数字11宽度限制5,结果是:%5d" % num1)
print("数字11宽度限制1,结果是:%1d" % num1)
print("数字11.345宽度限制7,小数精度2,结果是:%7.2f" % num2)
print("数字11.345不限制,小数精度2,结果是:%.2f" % num2)

注意:

  • 多个变量占位变量要用括号括起来,并按照占位的顺序填入。

  • m和.n均可省略。

  • 如果m比数字本身宽度还小,则m不会生效。

  • .n会对小数部分做精度限制,同时会对小数部分做四舍五入。

快速格式化写法

f"内容{变量}”

这种方式:不理会类型,不做精度控制,适合对精度没有要求的时候快速使用。

time = 2.500
name = cxk
like = "唱跳篮球"
print(f"我是练习时长{time}的练习生{name},喜欢{like}")

表达式格式化

表达式就是一个具有明确结果的代码语句,如 1 + 1、type(“字符串”)、3 * 5等。表达式也可直接进行格式化

格式化方法:

  • f”{表达式}”

  • “%s\%d\%f” % (表达式、表达式、表达式)

print("1 * 1的结果是:%d" % (1*1))

12. 数据输入

数据输出:print()

数据输入:input(),获取键盘输入的数据

注意:

  • 可以使用:input(提示信息),用以在使用者输入内容之前显示提示信息。
  • 无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型(若需要其他类型,需自行进行类型转换)
time = 2.500
name = cxk
like = input("请输入你的爱好:")
print(f"我是练习时长{time}的练习生{name},喜欢{like}")

13. 判断语句

if语句

if 要判断的条件:

​ 满足条件时执行的语句1

​ 满足条件时执行的语句2

语句3(在if的代码块外,无论条件成立与否都会执行)

判断语句的结果,必须是布尔类型True或False,True会执行if内的代码语句,False则不会执行

if语句注意事项

  • 判断条件的结果一定要是布尔类型
  • 不要忘记判断条件后的: 冒号
  • 归属于if语句的代码块,需在前方填充4个空格缩进

if lese语句

if 条件1:

​ 满足条件1时执行的语句1

​ 满足条件1时执行的语句2

​ ……

else:条件2

​ 满足条件2时执行的语句1

​ 满足条件2时执行的语句2

​ ……

else:

​ 不满足条件1和2时执行的语句1

​ 不满足条件1和2时执行的语句2

​ ……

if else语句注意事项

  • 最后一个else,不需要判断条件
  • 和if的代码块一样,else的代码块同样需要4个空格作为缩进

14. 判断语句的嵌套

image-20240225173835026

  • 嵌套判断语句可以根据需求,自由组合if elif else来构建多层次判断
  • 嵌套的关键点,在于:空格缩进
  • 通过空格缩进,来决定语句之间的:层次关系

15. while循环的基础语法

image-20240225193327622

while语句注意事项:

  • 条件需提供布尔类型结果,True继续,False停止
  • 空格缩进不能忘
  • 请规划好循环终止条件,否则将无限循环
"""
演示使用while的嵌套循环
打印输出九九乘法表
"""

# 定义外层循环的控制变量
i = 1
while i <= 9:

    # 定义内层循环的控制变量
    j = 1
    while j <= i:
        # 内层循环的print语句,不要换行,通过\t制表符进行对齐
        print(f"{j} * {i} = {j * i}\t", end='')
        j += 1

    i += 1
    print()     # print空内容,就是输出一个换行

16.for循环的基础语法

while循环语句和for循环语句两者能完成的功能基本差不多,但仍有一些区别:

  • while循环的循环条件是自定义的,自行控制循环条件
  • for循环是一种”轮询”机制,是对一批内容进行”逐个处理”

从待处理数据集中:逐个取出数据赋值给临时变量 (类似java的增强for循环)

for 临时变量 in 待处理数据集

​ 循环满足条件时执行的代码

for循环的注意点

  • 无法定义循环条件,只能被动取出数据处理
  • 要注意,循环内的语句,需要有空格缩进
  • 临时变量,在编程规范上,作用范围(作用域),只限定在for循环内部(如果在for循环外部访问临时变量:实际上是可以访问到的,但在编程规范上,是不允许这么做的)
"""
演示for循环的练习题:数一数有几个a
"""
# 统计如下字符串中,有多少个字母a
name = "itheima is a brand of itcast"

# 定义一个变量,用来统计有多少个a
count = 0

# for 循环统计
# for 临时变量 in 被统计的数据:
for x in name:
    if x == "a":
        count += 1

print(f"被统计的字符串中有{count}个a")

语法中的:待处理数据集,严格来说,称之为:可迭代类型

可迭代类型指,其内容可以一个个依次取出的一种类型,包括:

字符串、列表、等、元组

for循环语句,本质上是遍历:可迭代对象。

尽管除字符串外,其它可迭代类型目前没学习到,但不妨碍我们通过学习range语句,获得一个简单的数字序列(可迭代类型的一种):

语法1:range(num)

获取一个从0开始,到num结束的数字序列(不含num本身)如range(5)取得的数据是:[0, 1, 2, 3, 4]

语法2:range(num1, num2)

获得一个从num1开始,到num2结束的数字序列(不含num2本身)如,range(5, 10)取得的数据是:[5, 6, 7, 8, 9]

语法3:range(num1, num2, num3)

获得一个从num1开始,到num2结束的数字序列(不含num2本身)数字之间的步长,以step为准(step默认为1)如,range(5, 10, 2)取得的数据是:[5, 7, 9]

"""
演示Python中的range()语句的基本使用
一般搭配for循环使用,通过range()锁定for循环执行的次数

"""

# range语法1 range(num)
for x in range(10):
    print(x)

# range 语法2 range(num1, num2)
for x in range(5, 10):
    # 从5开始,到10结束(不包含10本身)的一个数字序列,数字之间间隔是1
    print(x)

# range 语法3 range(num1, num2, step)
for x in range(5, 10, 2):
    # 从5开始,到10结束(不包含10本身)的一个数字序列,数字之间的间隔是2
    print(x)
```python
"""
演示for循环打印九九乘法表
"""

# 通过外层循环控制行数
for i in range(1, 10):
    # 通过内层循环控制每一行的数据
    for j in range(1, i + 1):
        # 在内层循环中输出每一行的内容
        print(f"{j} * {i} = {j * i}\t", end='')

    # 外层循环可以通过print输出一个回车符
    print()

17. continue和break的使用

continue关键字的作用:中断本次循环,直接进入下一次循环。

break关键字的作用:直接结束所在的循环

注意事项

  • continue和break,在for和while循环中作用一致
  • 在嵌套循环中,只能作用在所在的循环上,无法对上层循环起作用
"""
演示循环语句的中断控制:break和continue
"""
import random
num = random.randint(1, 10)

演示循环中断语句 continue
for i in range(1, 6):
    print("语句1")
    continue
    print("语句2")

# 演示break的嵌套应用
for i in range(1, 6):
    print("语句1")
    for j in range(1, 6):
        print("语句2")
        break
        print("语句3")

    print("语句4")

18. 随机数的使用

import ramdom
num = random.randint(1,100)

19. print语句不换行的写法

# print()语句默认输出后换行
print("Hello")
# 在双引号后加入end=''即可不换行
print("Hello",end='')

20. 制表符\t

在字符串中,有一个特殊符号:\t,效果等同于在键盘上按下:tab键。它可以让我们的多行字符串进行对齐。

print("Hello\tWorld")
print("Hi\tWorld")