变量
- 使用“=”对变量进行赋值,新赋的值会覆盖旧的值,且无需考虑数据类型
- 多变量赋值:a = b = c = 2 ; a, b, c = 1, 2, 3
- 变量的作用域:变量的作用是有范围的,超出作用域后变量不可见
- 函数外部定义的变量具有全局作用域
- 函数内部定义的变量只能在函数内部起作用,而与其他函数中定义的同名变量无关
- 在函数内部修改全局变量的值时需要先在函数内部声明该全局变量:global [变量名]
函数
-
由两部分构成——header:定义函数的名称与传入的参数名
|_body:包含函数执行的操作
-
定义方式: def functionName([参数]):
语句1
语句2
body中语句均需要缩进,当不在缩进表示函数结束
-
return返回:结束函数并返回return后的内容
- 函数中不一定需要包括return(此时函数返回值为None)
- return可用来返回一个或多个内容
- return可以返回变量值,也可返回表达式值(表达式需使用括号包裹)
-
函数组合:当出现函数嵌套的情况时,最先执行的是最内侧的函数
-
Helper functions:只用来做一件小任务的函数
导入库(包括函数,常数值,其它工具)
-
import [库名]
调用第三方库前需使用pip或conda下载(优先使用pip,conda库不全)
-
调用格式:XX.YY(库名.函数名)
输入输出
-
print():基础控制台输出
将( )中的内容输入到控制台(console)中
-
直接输出字符串要使用引号包裹
print("hello, world")
-
使用“end”来控制输出结尾(默认以\n(换行)结尾)
print("hello, world",end="") #不换行结束 print("hello, world",end="*") #以*作为结尾 print("hello, world",end="\t") #以tab作为结尾
-
一次输出多个内容,默认以空格连接。使用sep控制分隔符
print("hell“,”o, w“,”orld") #使用“ ”分隔 print("hell“,”o, w“,”orld",sep="") #取消分隔 print("hell“,”o, w“,”orld",sep="*") #使用“*”分隔
-
括号中直接填入变量名可输出变量的内容
x = 10 print(x) #输出10
-
使用f·string可选项来组合输出变量和字符串
x = 10 print(f"x的值是{x}") #输出为:x的值是10
-
使用三连引号一次性输出多行内容
print(""" 这是第一行 这是第二行 这是第三行 """)
-
字符串可使用加法和乘法
加法:效果等同于strcat
乘法:将字符串输出n次
-
-
input():基础控制台输入
首先将( )中的内容输入到控制台(console)中,然后向console返回stdin的输入内容
返回值为一个字符串(可使用强制字符串转换函数变成其他数据类型)
强制类型转换函数如int():将()变量数据类型转变为整形
使用实例:x = int(input(“请输入一个数字”))
-
一次输入多个内容,默认以空格分隔。使用split控制分隔符
a,b = input("输入两个内容,以逗号分隔").split(",")
-
错误类型
- SyntaxError 语法错误(代码不会运行)
- RuntimeError 崩溃(代码运行中)
- LogicalError 逻辑错误(代码完成运行,但得不到想要的结果)
- TyoeError 类型错误(输入函数的数据类型与预设不符
数据类型
1. 常见内置数据类型
-
int
-
float(python中的float对应c中的双精度浮点double)
分类:为一个对象赋值,其范围是离散的(对应数据类型int)
回归:预测一个数,其范围是连续的(对应数据类型float)
-
bool:布尔值
python中逻辑判断表达式的返回值数据类型为bool
-
type:类型——属于一种”类“的对象
type有同名函数type():其返回值为括号内变量的数据类型
2. 其他数据类型
-
str字符串 _
-
list列表 |
-
tuple元祖 }—-底层实现都是arry数组
-
set集合 |
-
dict字典 –
也可以用map映射实现
-
complexNum复数
-
function函数
-
module模块
3.常用内置常数
- True布尔真
- False布尔假
- None空(或空值)
-
运算符
1. 常见内置运算符
-
a**b:a的b次方
-
a / b:a对b浮点除,返回值数据类型为float
-
a // b:a对b整除,返回值数据类型为int(小数部分舍弃)
-
a % b:用b对a取余,返回值数据类型为int,涉及负数时运算结果符号与b一致(与c语言不同,且不符合直觉)
math库提供了一种符合c语言标准,且处理浮点数时精度更高的取余函数:
math.fmod(a,b):用b对a取余,返回值数据类型为float,涉及负数时运算结果符号与a一致
2. 类型影响语义
运算符的效果有时受运算数据的数据类型影响
eg:int + int……相加 ; str + str……strcat(str1,str2)
3. 运算符优先级
结合律:加减乘除中从左到右运算,次方运算中从右到左运算
eg:4 - 3 - 2 = (4 - 3) - 2 ; 4 ** 3 ** 2 = 4 ** (3 ** 2)
4.逻辑运算符——由布尔值参与运算
- and与运算:有一个F就返回F
- or或运算:有一个T就返回T
- not非运算:T返回F,F返回T
短路运算:但逻辑运算符左边的返回值已经足够返回结果了,就不会运行右边的表达式
5. 基本数学函数
-
abs():取绝对值
-
max/min(a, b, c,……):返回最大/最小值
-
pow(a, b):次方运算 <==> a**b
-
round(a[, n]):四舍五入到指定小数位
-
a:要四舍五入的数字
-
n:可选,表示要保留的小数位数。默认为0,即四舍五入到最接近的整数
-
当四舍五入的数字位于中间值时(如对 2.5 进行四舍五入),Python 3 的 round 函数会将其四舍五入到最接近的偶数(所谓的“银行家舍入法”)。这是为了减少因四舍五入导致的累积误差。
-
由于浮点数误差,round存在精度丢失(如:round(2.354, 2)返回2.36)
-
选择语句
1. if-elif-else
- 相当于c中的if-elseIf-else
2. Match-case
-
相当于c中的switch-case
-
用case _ 来代替default(不是必须的)
-
一个case可以设置多个匹配条件,每个条件用 | 隔开( | 相当于or)
-
match可以使用多种匹配模式:
循环语句
range():用来生成一个整数序列,返回的是一个可迭代的“range”对象
range 函数可以有一到三个参数
一个参数:range(stop):生成从 0 到 stop-1 的整数序列。
eg:range(3) 生成 0, 1, 2。两个参数:range(start, stop):生成从 start 到 stop-1 的整数序列。
eg:range(1, 4) 生成 1, 2, 3。三个参数:range(start, stop, step):生成从 start 开始,以 step 为步长,到 stop-1 结束的序列。
eg:range(1, 8, 2) 生成 1, 3, 5, 7。ps:range(a, b)遵循左闭右开
in关键字:用于测试序列(如列表、元组、字符串等)中是否包含某个特定的元素,或者字典中是否包含特定的键,返回值为布尔值
# 列表成员资格测试 if 'apple' in ['banana', 'apple', 'orange']: print("Apple is in the list") # 字符串成员资格测试 if 'a' in 'cat': print("The letter a is in the word cat") # 字典键测试 my_dict = {'name': 'Alice', 'age': 25} if 'name' in my_dict: print("Name is one of the keys in the dictionary")
1. for循环语句
for用于遍历序列(如列表、元组、字符串等)或其他可迭代对象的每个元素
# 基础语法
for element in iterable:
pass
- element 是变量,它代表 iterable 中当前的元素。
iterable 是一个序列或任何其他可迭代对象。 - 每次迭代中,element 会被赋值为 iterable 中的下一个元素,然后执行代码块。
# 遍历列表
for number in [1, 2, 3]:
print(number)
# 遍历字符串
for letter in "hello":
print(letter)
# 使用 range() 生成数字序列
for i in range(5):
print(i)
2. while([条件])循环语句
- 当“条件”表达式的返回值为True时执行while中的指令
- “条件”表达式的返回值可以是任何数据类型,python会将其自动转化成bool值
- 非零,非空对象都被视为True
- 可以将else语句与while组合使用:当循环条件变为假时执行else块
- 可以用break与continue进行循环控制
字符串
1. 单个字符索引:将字符串作为字符数组处理
- 索引值可以为负数:此时从字符串最后一位开始记计数
字符串具有不可变性,因此
s[0] = "H"
是不合法的,会引发 TypeError
2. 字符串切片:用来获取字符串的一部分(子串),使用索引来定义起始和结束的位置
(to be continue…)