因为已经有c、c++的学习了,所以基础部分的学习主要是写语法上与c的异同、基础部分以基础格式+专题展示
基础格式
1.语句,语句结尾不需要加分号,换行算作语句结尾
2.变量,变量不需要写明数据类型,只需要声明变量名
# 例
n = 2
m = 3
3.类型转换与c++类似
# 例 整型转换为字符串
num = 11
str = str(num)
4.运算符,对比c,算术运算符多了取整除(//),指数(**)
5.if、for、while等语句利用空格表示层级关系
# 例
n = 10
if n < 10:
print("10")
while n < 100:
print("小于100")
for x in "naeme"
print(x)
专题
1.输入输出
利用input函数完成输入
# 例
name = input("请输入你的姓名")
输出格式只写最常用的:带变量进行输出
n = 10
print(f"n={n}")
2.函数
# 例 函数名(传入参数):
def n ():
函数体
return 返回值
可返回多个值,则使用函数时需要用多个变量进行接收
1.函数的说明文档:pycharm自带功能,在函数体内用"""注释每个变量含义
2.关键字传参,"键=值"形式,无视顺序
3.不使用关键字传参要一一对应,混用关键词传参在最后
# 例
def add(nmae,age,bool)
print(f"name={name},age={age},bool={}")
add(age=18,name="小华",bool=flast)
4.函数作为参数传递
def func(add):
n = add(1,2)
print(n)
def add(a,b):
return a + b
# 这时函数作为一种运算逻辑被传入另一函数
func(add)
# 调用得结果为3
**lambda关键字,使用匿名函数,用完后失效,一次性的运算逻辑输入
# 格式:lambda 参数 :行为
def func(add):
n = add(1,2)
print(n)
func(lambda x,y:x+y)
使用手感和函数重载差不多
3.for循环
与c的不同:
Python中的for循环更偏向于为数据容器的功能服务
实现逻辑为:按数据容器序号依此完成操作(:将 序号值赋值给in 前变量)
数据容器
1.字符串
字符串格式与操作:
str = "hello world"
chuan.replace(字符串1,字符串2)
# chuan中1被2替换
chuan.split(字符串)
# chuan中按传入字符串分割
strip() # 移除首尾空格
strip(字符串) # 移除首尾指定字符
2.列表(list)
列表的格式与操作:
list = [元素1,元素2,元素3,...]
# 列表元素数据类型可以不同
# 下标索引
list [0]
# 顺次序:0,1,2
# 逆次序:-3,-2,-1
# 插入新元素(插队):
mylist.insert(下标数,元素)
# 追加新元素:
mylist.append(元素)
# 追加新列表:
mylist.exend(列表名)
# 删除元素:
del mylist[2]
mylist.pop(下标) #取出元素、可用变量接收
# 清空列表:
mylist.chear()
# 查找元素:
mylist.index(元素)
# 统计列表某元素个数:
mylist.count(元素)
# 统计列表总元素个数:
len(列表名)
3.元组(tuple)
不可被修改的列表
操作和列表相同,但不可修改
# 例 定义格式
tuple = (元素1,元素2,元素3,...)
# 空元组定义
m_tuple = tuple()
4.集合(set)
无重复元素,无序号的列表
# 集合定义 例
set = {元素1,元素2,元素3,...}
集合.add(元素) 添加一个元素
集合.remove(元素) 移除指定元素
集合.pop() 取出随机元素
集合.claear() 将集合清空
集合1.difference(集合2) 得到差集,1差2,1有2没有的
集合1.deifference_update(集合2) 删除1中1有2也有的元素,1变2不变
集合1.union(集合2) 合集
5.字典(dict)
无序号,不可重复
可理解为:单词:释义 形式
key不能为字典,velue可以字典
m_dict = {key1:velue1,key2:velue2,key3:velue3...}
# 操作例
# 修改或新增
m_dict[key] = veluel # key已有就修改,没有就新增
m_dict.pop(veluel) # 取出删除veluel
m_dict.chear # 清除所有
m_dict.keys # 得到全部key,以列表形式
总结
通用方法(前面没提到的):
1.max查找最大元素
2.min查找最小元素(字符通过ascll码大小比较)
类型转换类似变量
list()
tuple()
set()
dict()
其他类型无法转换为字典
字典转换为其他类型会丢失velue
文件操作
编码:
呃呃,看不懂
意思是计算机可以通过某种规则将二进制数字翻译给成编程语言,现在多为UTF-8
文件读取、关闭:
python中 open函数用于打开文件
语法:open(name,mode,encoding)
name:是要打开文件的字符串名,可以包含文件所在具体路径
mode:设置打开文件的模式(访问模式):只读、写入、追加等。
encoding:编码格式,通常为UTF-8
具体变量位置不同,最好使用关键字参数指定
模式:
1.r
以只读方式打开文件。文件的指针将会放在文件的开头。
2.w
打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果该文件不存在,创建新文件。
3.a
追加一个文件。如果该文件已存在,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
test open(name = "python.txt",mode = "r",encoding = "UTF-8")
# 此时 test 为文本对象,是一种数据类型,可以使用方法,操作类似数据容器
# read()方法
test.read(数字) # 传入参数代表读取数,下次使用read函数会重上次使用结束位置继续读取,下同
# readdline 方法
读取一行
# readdlines 方法
读取全部
也可以利用for循环读取
for line in test
print(f"line={line}")
close()关闭文件,解除占用
with open()as f :自动关闭文件
with open(name,encoding,mode)as test:
test.readlines()
完整流程
1打开文件
2操作(读,写)
3关闭文件
写操作
test.write("hello world")
f.flush()# 刷新后才从缓冲区到硬盘中
追加操作同上
用“a”模式打开文件
异常解决、模块、包
捕获异常
1.基础语法
try:
#可能出现异常的代码
except:
#出现异常后执行的代码
2.捕获指定异常
try:
excpet 异常类型 as n:
print(n)
# 结果为打印出异常原因
3.捕获多个异常,所以异常
try:
excpet (异常类型1,异常类型2) as n:
# 捕获所有异常
try:
excpet Excetpion as n:
print("有异常")
else 无异常会运行的代码
finally 有无都会运行的代码
异常传递性
def fucn1()
print("fucn1的开始")
fucn2()
print("fucn1的结束")
def fucn2()
pprint("fucn2的开始")
1/0
print("fucn2的结束")
try:
fucn01()
except:
print("此处有异常')
在函数相互调用中,若最基础被调用的函数的异常没有被捕获会传递到上一级函数中,直到被捕获为止。
到main函数中还未被捕获则会报错
模块
简而言之就是工具包,里面有提前准备好的功能代码,供人使用。类似c中的文件的功能
可以单独导入模块中的一个类、函数、变量也可以直接导入整个模块
import 模块名(导入整个模块)
from 模块名 import 类、变量、方法等
from 模块名 import * (导入所有方法)
import 模块名 as 别名
from 模块名 import 功能名 as 别名
注:导入多个模块,且模块中有多个同名函数,那直接使用函数名,会使用到后导入的模块中的函数
包
包是包裹模块的文件夹
可以通过python中的pip下载
json
负责各种编程语言中数据的传递与交互
json形式上可理解为python中的字典或者嵌套字典的列表
使用
# 导入json模块
import json
# 准备符合格式的数据
test=[{"name":"小明",age:15},{"name":"小红",age:15},{"name":"小刚",age:17}]
# json.dumps()方法把python数据转换成json数据
test=json.dumps(test)
# json.loads()方法把json数据转换成python数据
test=json.loads(test)