python复习1
单引号和双引号的使用 当字符串中有单引号时,外面用双引号
str1="It's OK"
当字符串中本身有双引号时,外面用单引号
str2='He said:"Are you OK?"'
当字符串的换行比较多的时候,可以用三引号
str3='''远看山有色, 近听水无声. 春去花还在, 人来鸟不惊.'''
三引号可以作为类或函数的注释
def fun1():
''' WRYBNGFETNH FGDFVGTBG
:return:
'''
print(fun1.__doc__)
转义符
filepath='D:\note1.txt'
print(filepath) #直接打印会出现换行
方案一,再加一个\
filepath='D:\\note1.txt'
方案二,字符串前面加r
filepath=r'D:\note1.txt'
方案三,对于文件路径,可以使用/代替\
filepath='D:/note1.txt'
字符串的拼接
print('1'+'8')
print('1'+8) #str型与int型进行拼接会报错
print('1'*8) #将字符串打印8次
字符串是不可变对象,不可以通过下标修改某个位置的值
str2='abcdefg'
str2[0]='v' #报错
字符串的切片 [起始值:终止值:步长] 包含起始值,不包含终止值,步长的缺省值为1 切片之后的对象是一个新的对象,不影响原对象
str2_new=str2[0:3]
print(str2_new)
print(str2[2::-1]) #cba
写一个程序,判断某个字符串是否是回文
str2='上海自来水来自海上' def fun1(str): if str[::-1]==str: return True else: return False print(fun1(str2))
列表
列表是可变对象,可以新增,修改,删除列表中的元素
新增
append 添加元素到列表的末尾
insert 添加元素到指定位置
extend 列表的拼接
删除
pop 删除元素,不指定参数时,删除列表的最后一位,也可以指定一个下标进行删除,这个方法返回的是被删除的元素
remove 根据值进行删除,有多个相同的值时,只删除第一个
del 可以删除任意位置的值,或者列表本身
写一个程序,打印斐波那契数列的前20位
list1=[] for i in range(20): if i<2: list1.append(1) else: list1.append(list1[-2]+list1[-1]) print(list1)
元组是不可变对象,可以使用下标和切片
当元组中只有一个值时,加一个逗号
tuple1=(10,)
print(type(tuple1))
元组中如果有子列表,那么子列表的值是可以修改的
tuple2=(100,200,300,400,500,[600,800])
tuple2[-1][-1]=999
print(tuple2)
list2=list(tuple2) #将对象转为列表
print(list2)
print(tuple(list2)) #将对象转为元组
布尔表达式
and 一假为假,全真为真 or 一真为真,全假为假 优先级 not>and>or
浅拷贝,深拷贝
赋值,相当于一个快捷方式,没有生成新的对象
list10=[100,200,300,400,[500,600]]
list10_new=list10 #赋值,相当于一个快捷方式,没有生成新的对象
浅拷贝
import copy
list10_new=copy.copy(list10) #浅拷贝,生成了一个新的对象,但是子列表仍然是同一个对象
list10[0]=180 #改原列表的值不会影响新列表
list10[-1][0]='678' #改原列表的子列表的值会影响新列表
print(list10,id(list10[-1]))
print(list10_new,id(list10_new[-1]))
深拷贝
list10_new=copy.deepcopy(list10) #深拷贝,生成了一个新的对象,子列表也是新的对象
list10[-1][0]='678'
print(list10,id(list10[-1]))
print(list10_new,id(list10_new[-1]))
切片等价于浅拷贝
list10_new=list10[:] list10[0]=180 #改原列表的值不会影响新列表
list10[-1][0]='678' #改原列表的子列表的值会影响新列表
print(list10,id(list10[-1]))
print(list10_new,id(list10_new[-1]))
第二节课
python复习2
对象的方法
str1='abc'
str1.replace('abc','')
打印从1到10的值
while循环
i=1
while i<=10:
print(i)
i+=1
for循环
for i in range(1,11): #range(起始值,终止值,步长) 包含起始值,不包含终止值,步长缺省值为1
print(i)
break 终止循环,continue 跳出当次循环
for i in range(1,11):
if i==5:
# break
# continue
pass
else:
print(i)
#循环的else语句 如果循环没有遇到break语句,则循环结束时执行else中的语句
else:
print('循环执行完毕')
倒计时程序
import time
for i in range(10,0,-1):
print(f'\r倒计时{i}秒',end='')
time.sleep(1)
else:
print(f'\r倒计时结束')
文件的读取与写入
r+ 可以同时读写,如果文件不存在,则报错,写入时是覆盖写入
w+ 可以同时读写,如果文件不存在,则新建文件,写入时是清空写入
a+ 可以同时读写,如果文件不存在,则新建文件,写入时是追加写入
with open('D:/note1.txt') as file1:
#print(file1.read()) #全部读取,返回值是字符串
#print(file1.readline()) #读取一行的内容
#print(file1.readlines()) #全部读取,返回值是列表,有换行符
print(file1.read().splitlines()) #全部读取,返回值是列表,没有换行符
seek(0)光标回到文件首位
with open('D:/note12345.txt','w+') as file2:
file2.write('ABCDE')
file2.seek(0)
print(file2.read())
字典
字典是可变对象,字典的键可以存放不可变对象,值可以存放任意对象
字典的新增和修改用的是相同的方法,如果已经存在对应的键,那么就是修改,如果没有对应的键,那么就是新增update()字典的删除,用
遍历字典中的键值对 字典.items()
json与字典
str1='''{
"aac003" : "tom",
"tel" : "13959687639",
"crm003" : "1",
"crm004" : "1"
}'''
import json
from random import randint
number1=randint(10000000,99999999)
dict1=json.loads(str1) #将json转为字典
dict1['tel']=f'139{number1}'
str1_new=json.dumps(dict1) #将字典转为json
print(str1_new)
写一个函数,不使用循环,求某数的阶乘
使用递归实现,n的阶乘,其实就是n乘以n-1的阶乘
def jiecheng(n):
if n==1:
return 1
else:
return n*jiecheng(n-1)
print(jiecheng(6))