一、常量表达式
在编程中,常量 指的是在程序执行期间其值不会改变的数据项。虽然 Python 并没有专门的语法来定义常量(不像某些其他语言如 Java 中有 final
关键字),但在实践中,我们通常通过约定俗成的方式来表示一个变量是一个"常量":
示例:
python
# 算术表达式
a = 5 + 3 * 2 # 结果为 11,注意乘法优先于加法
# 关系表达式
b = 10 > 5 # b 的值为 True
# 逻辑表达式
c = (10 > 5) and (2 < 3) # c 的值为 True
python
print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)

代码里的print()
是 Python 中的一个内置函数 ,用于将内容输出到终端(屏幕)上。它是我们最常用的调试工具之一,可以让我们看到程序运行时的中间结果、变量值、提示信息等。这个我们后续详谈
- 可以使用+-*/()等运算符进行算术运算,先算乘除后算加减
- 运算符和数字之间,可以没有空格,但是一般习惯上写一个空格(比较美观)
- 例如 1 + 2 - 3 这样是算式,在编程语言中被称为表达式,而运行后的结果,就是这个表达式的返回值
- 其中1,2,3 这种被称为字面值常量,+-*/ 这种被称为运算符 或者操作符
表达式的类型:
算术表达式 :涉及数值及其运算符(如
+
,-
,*
,/
)。关系表达式 :比较两个值(如
==
,!=
,>
,<
)。逻辑表达式 :结合多个条件(如
and
,or
,not
)。
这里注意一下,我们发现第三个表达式计算出来后是 1.66666666665,而不是1。而我们熟悉了c或者java的兄弟可能觉得很奇怪,其实在Python中得到的结果则是一个小数,更符合日常使用的直觉
例如:给定四个分数,65.5 , 89.0 , 12.9 , 32.2 ,编写代码,求这四个分数的平均数
python
print((65.5 + 89.0 + 12.9 + 32.2) / 4)

二、变量和类型
2.1 变量是啥?
有的时候,我们需要进行的计算可能会复杂一点,计算过程中需要把一些中间结果保存起来,那么这个时候就是通过变量这个东西
就例如我们现在要计算一个方差
- 给四个数, 67.5 , 89.0 , 12.9 , 32.2,编写代码,求这四个数的方差
- 方差计算过程:取每一项,减去平均值,计算平方,再求和,最后除以(项数 - 1)
- 计算这四个数的平均值
- 取每一项,减去平均值,计算平方,再求和 把最后的值给total
- 把total除以(项数 - 1)
- 将结果打印出来
python
avg = (67.5 + 89.0 + 12.9 + 32.2)/4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg) ** 2
result = total / 3
print(result)
注意:avg,total,result都是变量
**在python里面表示乘方运算。 **2就是平方
而变量可以视为是一块可以存放数据的一个空间,而这个空间是开辟在内存中过地方的

想象内存是一个大仓库,有许多小格子,每个格子有唯一编号(地址)。当我们声明一个变量
int avg = 30;
,计算机在仓库中找到一个空闲格子,放进去30,并记下标签"age"指向那个格子编号。(图上一个存放50.400000000000006)
2.2 变量的语法
2.2.1 变量的定义
python
a = 10
//a是变量名。
// 10是值。
//变量名+赋值运算符+值
创建变量非常简单:
- a是变量名。当我们创建很多个变量的时候,大家的变量名要取一个有意义,例如你创建的变量是用来计数的,就可以取为count
- = 为赋值运算符,表示把 = 右侧的数据放到 = 左侧空间中 ,注意,是由右向左
注意事项(规则):
变量名由数字、字母、下划线构成
数字不能开头
变量名不能和"关键字重复"。例如:print
变量名大小写敏感。num和Num是两个不同的变量名
变量取名建议:变量名最好用有意义的单词来表示,就是我刚刚说的
驼峰命名法(CamelCase):首个单词小写,后续单词首字母大写,如 userName(常用于Java、JavaScript)。
蛇形命名法(snake_case):单词间用下划线连接,如 user_name(常用于Python、Ruby)。
常量命名:全大写加下划线,如 MAX_VALUE。
2.2.2 变量的使用
读取变量的值:
python
a = 10
print(a)
修改变量的值
python
a = 10
pritn(a)
#修改a
a = 20
print(a)

当然,我们也可以使用其他的变量来修改需要修改的值
python
a = 10
b = 20
a = b
print(a)
print(b)
一开始对变量a和b进行初始化,随后 a = b,将b的值赋给a,这样就把a的值给改变了!!!

2.2.3 变量的类型
变量里面存储的不仅仅是数字,还可以存储其他种类的数据,未来区分不同种类的数据,我们引入了"类型"这一概念。
注意:Python和C++/java等语言不同,Python的变量类型是不需要显示指定的,而是在赋值的时候确定的
例如c++和java
cpp
//在 C++ 和 Java 中,变量类型必须在定义时明确写出,否则编译器会报错
int age = 20; // 必须显式指定类型
string name = "Tom";
而Python:
python
x = 10 # x 是整数
x = "Hello" # x 变成字符串
x = [1, 2, 3] # x 变成列表
2.2.3.1 整数
python
a = 10
print(type(a))

PS:pyte和print类似,也是Python内置的函数,pyte可以来查看一个变量的类型
这里注意一个点:Python的int类型变量,所表示的不是四个字节,而是 没有上限 的,只要内存足够大,理论上就可以表示无限大小的数组
2.2.3.2 浮点数
python
a = 0.5
print(type(a))
**字符串需要用 ' (单引号)或者 " (双引号) ,被这两个符号所包围起来的就被称为字符串。**可以用来表示文本
注意'hello'和"hello"是等价的

可以使用 len 函数来计算一个字符串的长度
python
a = 'hello'
print(len(a))

可以使用+针对两个字符串的拼接
python
a = "hello"
b = " world"
print(a+b)

python
a = "hello"
b = 1
print(a+b)
此处只是字符串相加,不能拿字符串和其他类型相加

2.2.3.4 布尔
布尔类型是一个特殊的类型(用于逻辑判断),取值只有两种:True(真)和False(假)
PS:这里True(真)和False(假)必须是首字母大写的
而真假是什么?
例如:
女生每月会有生理期(真)
男士每月会有生理期(假)
python
a = True
print(type(a))
b = False
print(type(b))

三、变量类型的意义
类型决定了数据在内存中占据多大内存空间
float类型在内存中占据8个字节
int 动态扩容
bool为一个字节
类型约定了能对这个变量做了什么样的工作例如int / float 类型的变量,可以进行+ - * / 等操作
而str类型的变量,只能进行+(并且行为是字符串拼接),不能进行 - * / ,但是还能使用len等其他操作
四、动态类型特性
在Python中,一个变量是什么类型,是可以在"程序运行"过程中发生变化的**(也就是变量类型是可以改变的)。**这个特性称为"动态类型"
python
a = 10
print(type(a))
a = 'hello'
print(type(a))

大家注意,程序执行过程中,a的类型从int变为str了,而这是在c++/Java中是不行的
- 静态类型
程序运行时,变量的类型始终不变
- 动态类型
程序运行时,变量的类型是可以改变的
一个编程语言,是否为动态类型,只取决于运行时,类型是否发生改变,不取决于变量定义的时候是否声明类型
当然了,动态类型是一把双刃剑
- 对于中小型程序,他能大大节约代码量
- 对于大型程序,则提高了模块之间交互的成本(A提供的代码很难被B看懂)
其实这就是为什么很多公司一开始使用Python语言来完成项目,而后期又要针对原来的代码用其他语言重构
五、注释
在编程中,注释 就是写在代码中、给程序员看的"说明文字"。它不会被 Python 解释器执行,也就是说,计算机不会运行注释里的内容 ,但它是写给人看的。
5.1 注释的作用
注释的作用
- 解释代码:让别人(或未来的你)更容易理解代码的意图。
- 调试代码:暂时屏蔽某段代码,方便调试。
- 文档说明:在大型项目中,注释可以作为文档的一部分,说明函数、类或模块的功能。
- 协作沟通:多人协作时,注释可以说明你为什么这样写代码。
5.2 注释的方式
5.2.1.单行注释
使用 #
符号,从 #
开始到这一行的末尾都会被当作注释。
python
# 这是一个打印语句,输出"你好,Python!"
print("你好,Python!")
5.2.2 多行注释(块注释)
虽然 Python 没有专门的多行注释语法,但我们可以使用三引号 '''
或 """
来实现多行注释:
python
'''
这是一个多行注释的例子。
你可以在这里写很多行说明。
这些内容不会被执行。
'''
print("多行注释演示")
注意:严格来说,三引号是字符串,如果它没有被赋值给变量,也不会被运行,因此可以当作注释使用。但在某些上下文中,它可能作为文档字符串(docstring)使用,我们后面会专门讲解。
5.2.3 注释的使用规范
注释的使用规范(建议):
类型 | 写法 | 示例 |
---|---|---|
单行注释 | # 注释内容 |
# 计算两个数的和 |
行末注释 | 代码 # 注释 |
x = 5 # 设置初始值 |
多行注释 | ''' 注释内容 ''' 或 """ 注释内容 """ |
python
"""
这是一个函数说明:
输入两个参数,返回它们的和。
"""
5.2.4 优秀注释的例子
注释写得好,代码更清晰!
python
# 定义两个变量
a = 3
b = 4
# 计算平方和
c = a**2 + b**2
# 输出结果
print(c)
对比没有注释的版本:
python
a = 3
b = 4
c = a**2 + b**2
print(c)
你觉得哪种更容易理解呢?没错,加上注释之后,即使是一个新接触这段代码的人,也能迅速理解每一行代码的目的。
六、输入输出
6.1 和用户交用
- 用户把消息传递给程序的过程,称为"输入"
- 用户把结果展示给用户的过程,称为"输出"
**输入输出的最基本方法就是控制台:**用户通过控制台输入一些字符串,程序再通过控制台打印一些字符串
vs code运行程序的时候,下方弹出的窗口就是控制台

Mac OS自带的终端,也可以视为控制台

输入输出的最常见方法是图形化界面。我们平常对于电脑的操作基本都是图形化界面
6.2 通过控制台输出
Python使用print函数输出到控制台
python
print('hello')
不仅可以输出一个字符串,还可以输出一个其他类型的变量
python
a = 10
print(a)
b = True
print(b)

更多的时候,我们希望能够输出的内容是混合了字符串的变量
例如:输出num = 10
python
num = 10
print(f'num = {num}')

注意:这里的**f'num = {num}'**是一种格式化字符串,使用{}来嵌入变量或表达式
例如:
python#格式化字符串 a = 10 #希望数字和字符串混在一起 print(f'a = {a + 10}')
6.3 通过控制台输入
Python使用input函数输入,从控制台读取用户的输入
python
# 通过控制台输入
num = 0
num = input('请输入一个整数:')
print(f'你输入的整数是{num}')

当我们在控制台输入10,再按回车,就运行完成
注意:
- input的参数相当于一个"提示信息",也可以没有
- input的返回值就是用户输入的内容,是字符串类型
下面这个代码大家想想会输出什么?两数相加吗?
python
a = input('请输入一个整数:')
b = input('请输入二个整数:')
print(f'a + b = {a + b}')

答案显而易见:此处的结果是字符串的连接而不是算术运算
那我们该怎么进行算术运算呢:转换类型
python
a = input('请输入一个整数:')
b = input('请输入二个整数:')
a = int(a)
b = int(b)
print(f'a + b = {a + b}')

小练习:输入5个小数,求5个小数的平均值
python
a = input('请输入一个整数:')
b = input('请输入二个整数:')
c = input('请输入三个整数:')
d = input('请输入四个整数:')
e = input('请输入五个整数:')
a = int(a)
b = int(b)
c = int(c)
d = int(d)
e = int(e)
avg = (a + b + c + d + e)/5
print(f'平均值: {avg}')
