Python基础

本文详细介绍了Python中的print函数、文件操作、数据类型(包括整数、浮点、字符串、布尔等)、字符串处理、基本控制结构(如if-else、循环)、列表、字典、元组、集合以及函数的定义与调用。还涉及了序列化与反序列化技术在Python中的应用。
摘要由CSDN通过智能技术生成

本篇学习笔记照片摘自哔哩哔哩up主Python_子木,原视频链接0.前言相关介绍_哔哩哔哩_bilibili侵删

前两章

print和fp

print 直接输出数字,加'' 或者 "" 或 "''"输出字符和字符串

还可以输出表达式,如1+2

将数据输出到文件中

fp=open('D:/text.txt','a+')//a+若没有则新建,存在就继续追加

printf('hello world',file=fp)

fp,close()

print('hello','world','pthon')

转义字符

\n换行

\t空出四个空格。实际是每四个为一个\t,若前方有,则\t会补完剩下的空格

\r回车,会覆盖\r前方的输出

\b退一个格,即吃掉\b之前的一个

\在输出内容中有''时,加个\表示提示'不是字符串的边界,二是应当输出的内容

原字符:r R在'"之前使用,不希望字符串中转义字符起作用

最后一个字符不能是\但可以使两个\\

保留字和标识符

import keyword

print(keyword.kwlist)

这些是Python保留字,即不可使用这些词命名对象

标识符即起的名字

变量

例:

name = '马丽亚' 
print(name) 
print('标识',id(name)) 
print('类型',type(name)) 
print('值',name) 

name = 'ss' #可修改

数据类型

int类型

Python默认输出十进制

print(118) 
print(0b10101111) 
print(0o176) 
print(0x1EAF)

结果为

float类型

a-3.14159 
print(a,type(a)) 
n1 = 1.1 
n2 = 2.2 
print(n1+n2)

结果为

此结果存在误差,需要导入’from decimal import Decimal'

from decimal import Decimal 
print(Decimal('1.1')+Decimal('2.2'))

即可正确输出’3.3‘

bool类型

f1 = True 
f2 = False 
print(f1,type(f1)) 
print(f2,type(f2)) 
print(f1+1) 
print(f2+1)

结果为

字符串类型

数据类型转换

name = '张三' 
age = 20 
print('我叫'+name+',今年'+str(age)+'岁')

结果便为“我叫张三,今年20岁”

当将str类型和int类型连接的时候系统会报错,所以只要用str()将int转成str类型即可

int()转str时,字符串只能为整数数字串

注释

input

切记input得到的是str类型,要进行数字间的运算需要先转换数据类型

运算符

算术运算符

关于整除

在正数负数运算时,向下取整。

例:

  • 9//4=2
  • 9//-4=-3
  • -9//4=-3
关于余数

赋值运算符

类比C语言~~~

比较运算符

is和is not
print(a is not b) #a的id和b的id是不相等的吗 
                  #结果输出的便是true或者FALSE

布尔运算符

位运算符

运算优先级

对象的布尔值

分支结构

和C语言差不多

num = int(input('请输入一个整数')) 
if num>1000 
    print('有钱')
 
else if num>=100 and num<=1000 
    print('能活下去') 

else 
    print('吃土') 
#下面是新的 
num1 = int(input('请输入第一个数'))
 num2 = int(input('请输入第二个数')) 
print((num1,'大于等于',num2) if num1>= num2 else (num1,'小于',num2)) 
print(str(num1)+'小于等于'+str(num2) if num1>= num2 else str(num1)+'小于'+str(num2)) 
##两种表达结果一样

pass

字面意思,跳过

在if等语句中使用

内置函数range()

a = range(1,10,2) 
print(list(a)) #list为列表的意思,用于查看range对象中的整数序列 
#结果为[1,3,5,7,9] 
print(9 in a) #结果为true 
print(9 not in a) #结果为false

循环结构

while循环

和C语言差不多~~~

a = 1 
while a<10 
    print(a) 
    a+=2

for-in循环

for item in 'python' 
    print(item) 

for i in range(10) 

for _ in range(5) 
#不使用自定义变量

结果

break、continue

else不仅可以和if连用,还可以与while、for连用

嵌套循环

同C语言

六、列表

列表创建

1.直接创建

list = ['hello','world',2023]

2.list()创建

list = list(['hello','world','2023'])

列表特点

列表查询操作

list = ['hello','world',2023] 
print(list[2]) #即为2023 
print(list[-1]) #即为2023

列表中也可以使用in 和not in 来判断某数据是否在列表中

for-in 也可以遍历列表中的内容

列表增删改

列表增加

list = [1,2,3] 
list,append(10) #list = [1,2,3,10] 
list2 = ['hello','world'] 
list,extend(list2) #list = [1,2,3,10,'hello','world'] 
list,insert(1,9) #list = [1,9,2,3,10,'hello','world'] 

切片 
list3 = [true,false,'hello'] 
list[1:]=list3 #list = [1,TRUE,FALSE,'HELLO']

列表的删除

list = [1,2,3,4,5,6,3] 
list.remove(3) #list = [1,2,4,5,6,3] 
list.pop(1) #list = [1,4,5,6,3] 
#切片 
new_list = list[1:3] 
#list = [1,4,5,6,3] 
#new_list = [4,5] 
list[1:3] = [] 
#list = [1,6,3] 
list.clear()
 #list = [] 
del list 
#list无了

列表的修改

list = [1,2,3,4] 
list[2] = 10 #list = [1,2,10,4] 
list[1:3] = [3,4,5,6] #list = [1,3,4,5,6,4]

列表的排序操作

list = [2,4,3,7,67,1] 
list.sort() #list = [1,2,3,4,7,67] 
list.sort(reverse=True) #list = [67,7,4,3,2,1] 
list.sort(reverse=False) #list = [1,2,3,4,7,67] 
list = [2,4,3,7,67,1] 
new_list = sorted(list) 
#list = [2,4,3,7,67,1] #new_list = [1,2,3,4,7,67]

列表生成式

list = [i for i in range(1,10)] #list = [1,2,3,4,5,6,7,8,9] 
list = [i*i for i in range(1,10)] #list = [1,4,9,16.....]

七、字典

字典的概念

字典的创建

score={'张三':100,'李四':98,'王五':45} 
#输出的就是{'张三':100,'李四':98,'王五':45} 
student=dict(name='jack',age=20) 
#输出{'name':'jack','age':20} 
#空字典 
d={}

字典中元素的获取

score={'张三':100,'李四':98,'王五':45} 
print(score['张三']) 
#输出100 
print(score.get('张三')) 
#同样也是100 
#两者区别在于,第一种输入字典中没有的数据时会报错,而第二种的话会输出None 
print(score.get('陈六',99)) 
#会输出99 
#此99是在查找’陈六‘不存在时输出的默认值

字典的增删改等操作

#关于字典的修改 
score['jack']=100 
#修改成功

获取字典试图

字典元素的遍历

字典的特点

字典生成式

items=['Fruits','Books','Others'] 
price=[96,78,85] 
d={item:price for item,price in zip(items,prices)} 
#输出结果为{'Fruits':96,'Books':78,'Others':85} 
d={item.upper():price for item,price in zip(items,prices)} 
#结果是元素变成大写 
#当两列表元素不对应时,输出对应索引的元素

八、元组

什么是元组

元组创建方式

t=('Python','World',98) 
#第一种可删除括号 
t1='Pyrhon','World',98 
t2=tuple(('Python','World',98)) 
t3=() 
t4=tuple()##空元组

元组中的元素无法更改

t = (10,[20,30],9) 
#t[1]=100 这种方式是不被允许的 
t[1].append(100) #这种方式是被允许的 
#元组中元素类型是不允许被修改的,但是元素中的内容是可被修改的

元组的遍历

九、集合

什么是集合

集合创建方式

集合的相关操作

集合间的关系

集合间的数学操作

集合生成式

函数

函数的定义和调用

def get_sum(num):
    s = 0
    for i in range(1,num+1):
        s += i
    print(f'1到{num}之间的累加和为:{s}') 

#函数调用
get_sum(10)#1-10之间的累加和
get_sum(100)#1-100之间的累加和

函数的参数传递

#个数可变的位置参数
def fun(*para):
    print(type(para))
    for item in para:
        print(item)

fun(*para:10,20,30,40)
fun(10)
fun([10,20,30,40])#算作一个参数    
#在调用时,参数前加一个*将列表进行解包
fun(*[10,20,30,40])#算作拆开后的四个参数
#个数可变的关键字参数
def fun2(**kwpara):
    print(type(kwpara))
    for key,value in kwpara.items():
        print(key,'----',value)

fun2(name = '张三',age = 18,score = 80)

d={'name':'张三','age':18,'score':80}
#字典需要解包
fun2(**d)

函数返回值

def num(a,b):
    s=a+b
    return s

get_s1=num(1,2)
get_s2=num(num(1,2),3)
print(get_s1,get_s2)

变量的作用域

a=100#全局变量


def num():
    ...



...
...

匿名函数lambda*

def calc(a,b):
    return a+b

print(calc(10,20))

#匿名函数
s=lambda a,b:a+b
#s就是一个匿名函数
print(type(s))
#调用匿名函数
print(s(10,20))
print('-'*10)

list = [10,20,30,40,50]
for i in range(len(list)):
    print(list[i])
print('-'*10)


for i in range(len(list)):
    result = lambda x:x[i]  #根据索引类型,result是函数,x是形式参数
    print(result(list)) #list是实际参数

print('-'*10)
student_scores=[
    {'name':'张三','age':18,'score':100},
    {'name':'李四','age':19,'score':90},
    {'name':'王五','age':20,'score':80},
]
#对列表进行排序,排序的规则是成绩
student_scores.sort(key=lambda x:x.get('score'),reverse=True)   #降序
#student_scores.sort是排序的意思,key是关键词,关键词使用函数lambda,x是字典,x.get('score)是x取用'score',reverse=True降序
print(student_scores)

递归函数


def fac(n):
    if n == 1:
        return 1
    else:
        return n*fac(n-1)   #自己调用自己

print(fac(5))
#120

斐波那契数列

def fac(n):
    if n==1 or n==2:
        return 1
    else:
        return fac(n-1)+fac(n-2)

常用内置函数

 文件

文件的打开与关闭&文件的读写

#open('文件路径','模式')
#w--可写   r--可读
#没有文件就会创建,但无法创建文件夹
open('test.txt','w')

#打开文件并写入东西
fp1 = open('test.txt','w')
fp1.write('hello world')
fp1.close()
#如果文件存在,会先清空原来的数据
#如果模式变成了a就会追加数据

fp2 = open('Demo/test.txt','w')
#Demo是文件夹,需要自己提前创建
fp2.write('hello world\n'*5)
fp2.close()
#每次打开文件后记得关闭,节省内存
fp3 = open('Demo/test.txt','r')
content = fp3.read()
#默认情况下,read是一字节一字节的读,效率较低
print(content)

fp3 = open('Demo/test.txt','r')
content2 = fp3.readline()
#readline是一行一行的读,但是只能读取一行
print(content2)
fp3.close()

fp3 = open('Demo/test.txt','r')
content3 = fp3.readlines()
#readlines 可以读取多行,但是会将所有数据都读取到,并且以一个列表的形式返回
#而列表的数据是一行一行的数据
print(content3)

fp3.close()

序列化和反序列化

 通过文件操作我们可以将字符串写入到一个本地文件。但是,如果是一个对象(例如列表,字典,元组等),就无法直接写入一个文件里,需要对这个对象进行序列化,然后才能写入到文件里

设计一套协议,按照某种规则,把内存中的数据转换为字节序列,保存到文件这就是序列化,反之,从文件的字节序列恢复到内存中,这就是反序列化

Python中提供了JSON这个模块来实现数据的序列化和反序列化

序列化的两种操作

# dumps()
fp = open('test.txt','w')
list = ['zhangsan','lisi']
# 导入JSON模块到该文件中
import json
name = json.dumps(list)    # 将Python对象变成 JSON字符串
# 我们在使用scrapy框架的时候  该框架会返回一个对象  我们要将对象写入到文件中   就要用json.dumps
print(type(name))
print(name)
#变成了字符串类型,但仍打印成字典
fp.write(name)

fp.close()
# dump
# 在将对象转换为字符串的同时 指定一个文件的对象   然后把转换后的字符串写入到这个文件里
fp = open('test.txt','w')
list = ['zhangsan','lisi']

import json
json.dump(list,fp)
#相当于name = json.dumps(list) 和fp.write(name)
fp.close()

反序列化

# loads
fp = open('test','r')
content = fp.read
import json
# 将json字符串转换为Python对象
result = json.loads(content)

# load
fp = open('test','r')
import json

result = json.load(fp)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值