输入输出
-
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次
-
repr()函数:显示字符串在print中打出的形式
-
-
input():基础控制台输入
首先将( )中的内容输入到控制台(console)中,然后向console返回stdin的输入内容
返回值为一个字符串(可使用强制字符串转换函数变成其他数据类型)
强制类型转换函数如int():将()变量数据类型转变为整形
使用实例:x = int(input(“请输入一个数字”))
-
一次输入多个内容,默认以空格分隔。使用split控制分隔符
a,b = input("输入两个内容,以逗号分隔").split(",")
-
错误类型
-
SyntaxError 语法错误(代码不会运行)
-
RuntimeError 崩溃(代码运行中)
-
LogicalError 逻辑错误(代码完成运行,但得不到想要的结果)
-
TyoeError 类型错误(输入函数的数据类型与预设不符
变量
-
使用“=”对变量进行赋值,新赋的值会覆盖旧的值,且无需考虑数据类型
-
多变量赋值: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(库名.函数名)
数据类型
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. 单个字符索引:将字符串作为字符数组处理
-
索引值可以为负数:此时从字符串最后一位开始记计数
字符串具有不可变性,因此
s[0] = "H"
是不合法的,会引发 TypeError
2. 字符串切片:用来获取字符串的一部分(子串)
使用索引来定义起始和结束的位置:
s = "hello"
print(s[1:4]) # 输出 "ell",从索引 1 到 3(左闭右开)
冒号左右不填入数值则使用默认数值:s[0:-1]
第三个参数:step步长
s = "hello"
print(s[::2]) # 先取走h,再隔一个取l,最后取走0,输出“hlo”
应用:翻转字符串
s = "hello"
print(s[::-1]) # 输出“olleh
3. 字符串相关内置函数
-
enumerate():枚举函数
获取一个可迭代对象的“索引-值”键值对
原型:enumerate(iterable, start=0)
-
iterable:可迭代对象
-
start:计数起始值,默认为0
-
返回值:键值对(两个元素)
-
-
zip():拉链函数
将多个可迭代对象的元素打包成元祖。特点是可以同时遍历多个对象,适合并行迭代
原型:zip(iterable1, iterable2, …)
-
iterable:可迭代对象
-
返回值:一个zip迭代器(每次迭代返回一个元祖)
注意:
-
如果提供的可迭代对象长度不一致,
zip
会以最短的那个为准停止迭代
-
-
ord():返回字符对应ASCLL码
-
chr():返回ASCLL码对应字符
-
eval():评估函数
用于返回字符串中表达式的运行结果
x = 1
result = eval('x + 1')
print(result) # 结果为2
4. split与join:互为可逆的一对操作(方法)
split:将字符串分割并返回列表
join:将列表内容合并进字符串中
运算符
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进行循环控制
python的空值
“无形”空
-
缩进:tab(等同于四个空格)
-
转义:在字符串中出现
-
\:\n \t等
-
%:格式控制符
-
“有形”空
-
None NoneType数据类型的唯一值,是一种被定义的空(c中的Null是一个空指针宏,不能等同于python中的None)
-
用于表示变量没有被赋予任何具体值。
-
通常用于函数中,表示函数没有明确的返回值。
-
在对象引用中,用于表示“空”或“不存在”的对象
-
-
pass:表示做一条“啥都不做”的指令,但不等于“不做”
基础文件操作
-
open():打开文件
原型:open(file, mode)
-
file:文件名
-
mode:打开模式 -> 决定了文件对象的功能
-
返回值:文件对象
文件打开模式:
r:以字符串形式只读
rb:以二进制形式只读
w:覆盖写入
a:追加写入
-
-
close():关闭文件
hash与id函数
hash哈希函数
哈希值:将任意长度的输入转化成一个固定长度的输出,该输出即为哈希值
注意:
对于同一输入,哈希算法总是返回同一个固定的哈希值
从哈希值不能反推出原始输入
原型:hash(obj, /) 用于返回给定对象的哈希值
注意:
-
大多数内置数据类型都是可哈希对象
-
在同一程序运行期间,对象的哈希值不会发生改变
-
不能够手动更改一个对象的哈希值(虽然这么做时解释器不会报错)
-
不能返回一个可变元素的哈希值(如列表)>可变元素:在发生更改后内存地址不变的元素
-
python3中哈希的相关变量:
-
哈希对象的内存地址——进程重启时有时复用原进程地址,有时重新分配
-
哈希种子——总是在进程重启时重置
-
哈希碰撞:有小概率会出现两个不同的对象拥有相同的哈希值,此时称这两个哈希值发生了哈希碰撞。 因为哈希碰撞的存在,不能从哈希值反推出对象。 两个对象相同,那么他们的哈希值一定相同,但哈希值相同,对应对象不一定相同
id函数
用于返回一个对象的特征值(在CPython中这个特征值是对象的内存地址)
CPython:由c语言实现的python解释器。作为官方实现,CPython是最广泛使用的Python解释器
assert():断言函数(用于程序调试)
在括号中的表达式为假时,程序将报错:AssertError
为真时,该条命令等同于pass
标签:函数,Python,数据类型,基础,语法,字符串,哈希,print,返回值 From: https://www.cnblogs.com/Halit/p/17856313.html