Welcome to 9ilk's Code World
(๑•́ ₃ •̀๑) 个人主页: 9ilk
(๑•́ ₃ •̀๑) 文章专栏: Python
🏠 常量和表达式
我们可以把Python当成一个计算器,进行一些简单的算术运算
print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)
#输出结果:
#0
#7
#1.6666666666665
注意:
- print是Python一个内置函数,用于打印。
- 运算符和数字之间,可以没有空格,也可以有多个空格,但一般为了美观习惯写上一个空格。
-
可以使用 + - * / ( ) 等运算符进行算术运算. 先算乘除, 后算加减。
- 在Python中类似2/3整数除整数结果得到的可能是个小数,而C++/Java等语言结果会发生截断结果为0.
🏠 变量和类型
📌 变量
📒 变量是什么
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)
在这个代码中, 就需要先计算这四个数字的平均值, 然后再计算方差. 这就需要把计算的平均值使用 变量保存起来.
📒 变量定义
a = 10
- 上述代码a为变量名,当我们创建多个变量时,就可以用名字来进行区分。
- 定义变量时不用声明类型。
📒 变量名规则
- 硬性规则
- 软性规则
📒 变量使用
- 读取变量的值
a = 10
print(a)
注:首次使用 = 对a进行设置值,这个过程是创建变量(初始化)
- 修改变量
a = 10
print(a)
a = 20
print(a) # 20
b = 30
a = b
注:修改变量也是使用 = ,此时是相当于是修改a的内容,赋值操作.
📌 变量的类型
注:Python中变量类型,不需要在定义变量的时候显式声明,而只是依靠初始化语句,根据初始化的值的类型来进行确定。比如,a=2确定a是int类型。
📒 type
📒 整数
a = 10
print(type(a))
注:在Python中,int能表示的数据范围是”无穷“的,Python中的int是可以根据要表示的数据的大小,自动扩容.因此Python中就没有long,byte,short这样的类型~
📒 浮点数
a = 0.5
print(type(a))
注 : 像C++和Java里,float是4个字节,也叫做"单精度浮点数",double是8个字节,也叫做"双精度浮点数";Python中的float就是双精度浮点数,没有double.
📒 字符串
a = 'hello'
b = "hello"
print(type(a))
-
在 Python 中, 单引号构成的字符串和双引号构成的字符串, 没有区别. 'hello' 和 "hello" 是
完全等价的.
- 如果字符串里面包含了双引号,表示字符串就可以用单引号引起来;如果字符串里面包含了单引号,表示字符串就可以使用双引号引起来。
e = "My name is "Jack"" #这时错误写法会识别成My name is和空字符串
e = 'My name is "Jack" '
- 如果字符串内同时有双引号和单引号,可以使用三引号'''或者"""
a = '''heoo is "jack" 'mary' '''
a = """heoo is "jack" 'mary' """
print(a)
-
可以使用 len 函数来获取字符串的长度
a = 'hello'
print(len(a))
-
可以使用 + 针对两个字符串进行拼接(拼接后对原来的字符串无影响),但是 不能拿字符串和整数/浮点数相加。
a = 'hello'
b = 'world'
print(a + b) #helloworld
📒 布尔
a = True
print(type(a))
b = False
print(type(b))
注 : 虽然是特殊的类型但True是可以表示1,False表示0的.比如print(True+1),输出2.
📒 类型的意义
📌 动态类型特性
a = 10
print(type(a))
a = 'hello'
print(type(a))
在程序执行过程中, a 的类型刚开始是 int, 后面变成了 str
-
C++/Java 这样的语言则不允许这样的操作. 一个变量定义后类型就是固定的了. 这种特性则称为 "静态类型"。
-
一个编程语言,是否是动态类型,只是取决于运行时类型是否发生改变,不取决于变量定义的时候是否声明类型!
-
Python作为一个动态类型的语言,在定义变量的时候,也是可以写类型的
a:int = 10
b:str = 'hello'
-
动态类型特性是一把双刃剑 .
🏠 注释
📌 什么是注释
📌 注释的语法
-
注释行 : 使用 # 开头的行都是注释.
# 这是一行注释.
-
文档字符串 : 使用三引号引起来的称为 "文档字符串", 也可以视为是一种注释
"""
这是文档字符串
这是文档字符串
"""
注:
1.可以包含多行内容 ,
2.一般放在 文件 / 函数 / 类 的开头 .
3.""" 或者 ''' 均可 ( 等价 ).
📌 注释的规范
🏠 输入输出
程序需要和用户进行交互:
1. 用户把信息传递给程序的过程 , 称为 " 输入 "。
2. 程序把结果展示给用户的过程 , 称为 " 输出 "。
输入输出的最常见方法是图形化界面 . 如我们平时用到的 QQ, 浏览器 , steam 等 , 都不需要用户输入命令 , 而只是通过鼠标点击窗口点击按钮的方式来操作。
📌 通过控制台输出
Python 使用 print 函数输出到控制台。
print('hello')
不仅能输出一个字符串 , 还可以输出一个其他类型的变量
a = 10
print(a)
b = True
print(b)
更多的时候 , 我们希望能够输出的内容是混合了字符串和变量的。比如输出:num = 10
num = 10
print(f'num = {num}')
- 这个语法叫做“格式化字符串”,此时可以使用{ }往字符串里嵌入变量或者表达式。
- 使用f作为前缀的字符串,称为f-string,此处的f表示"format"。
📌 控制台输入
python 使用 input 函数 , 从控制台读取用户的输入。
num = 0
num = input('请输入一个整数: ')
print(f'你输入的整数是 {num}')
注:
- input参数相当于一个“提示信息”,也可以没有参数。
- input的返回值就是用户输入的内容,是字符串类型。
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
print(f'a + b = {a + b}')
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
a = int(a)
b = int(b)
print(f'a + b = {a + b}'}
通过int()把变量转成了int类型。类似的,使用float(),bool(),str()等可以完成对应的类型转换。
🏠 运算符
📌 算术运算符
- 有些编程语言中,/整数0会抛异常,/浮点数0会得到无穷大,而Python都认为是除0异常。
-
整数 / 整数 结果可能是小数. 而不会截断。
-
%不是百分数,而是求余数。
-
**是求乘方,不光能求整数次方,还能开方。
print(4 ** 2)
print(4 ** 0.5)
- //是取整除法(也叫地板除),整数除以整数,结果还是整数(舍弃小数部分,并向下取整。不是四舍五入)
print(7 // 2)
print(-7 // 2)
📌关系运算符
-
如果关系符合, 则表达式返回 True. 如果关系不符合, 则表达式返回 False
a = 10
b = 20
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)
-
关系运算符不光针对整数 / 浮点数进行比较 , 还能针对字符串进行比较。
a = 'hello'
b = 'world'
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)
注:
1. 直接使用 == 或者 != 即可对字符串内容判定相等。
2. 字符串比较大小, 规则是 "字典序" 。
-
对于浮点数来说, 不要使用 == 判定相等。
print(0.1 + 0.2 == 0.3)
print(0.1)
print(0.2)
print(0.3)
print(0.1 + 0.2)
注 : 针对浮点数来说,使用==比较相等,存在一定风险。因为浮点数在内存中的存储和表示,是可能存在误差的,这样的误差在进行算术运算时就可能被放大,从而导致==的判定出现误判。
a = 0.1 + 0.2
b = 0.3
print(-0.000001 < (a - b) < 0.000001)
正确的比较方式:不再严格比较相等,而是判定差值小于允许的误差范围。在实际工程实践中,误差在所难免,只要保证误差在合理范围内即可。
📌 逻辑运算符
- and并且,两侧操作数均为True,最终结果为True,否则为False(有假则为假)。
- or或者。两侧操作数均为False,最终结果为False,否则为True。(有真则为真)。
- not逻辑取反。操作数本身为True,则返回False,本身为False,则返回True。
a = 10
b = 20
c = 30
print(a < b and b < c)
print(a < b and b > c)
print(a > b or b > c)
print(a < b or b > c)
print(not a < b)
print(not a > b)
注:a < b and b < c 这个操作等价于 a < b < c。这个设定和大部分编程语言都不相同。
- 短路求值
print(10 > 20 and 10 / 0 == 1)
print(10 < 20 or 10 / 0 == 1)
上述代码没有抛出异常, 说明右侧的除以 0 操作没有真正执行.
📌 赋值运算符
- = 的使用
链式赋值
a = b = 10
多元赋值
a,b = 10,20
#a被赋值为10,b被赋值为20
a,b = b,a
# a,b进行赋值交换
-
复合赋值运算符
注:像C++/Java中,存在++/--这样的自增/自减运算符。但Python中则不支持这种运算(设计时为避免对前置后置的混淆而不支持),如果需要使用,则直接使用+=1或者-=1。
📌 其他运算符
完。