#文件a.txt的内容把里面所有的能被5 或者7整除的数 输出
#切片
f=open('b.txt','r')
c=f.readlines()#把所有行读到列表
for line in c:#解析列表
if line[-1]=='\n':#如果次行子符最后一字符为‘\n'
t=line[:-1]#去掉最后一个字符|
else:
t=line#如果是最后一行,那么没有\n
list=t.split(',')#对字符串进行切片
for x in list:#对列表解析
if int(x)%5==0 or int(x)%7==0:#将字符串元素转化为int
print(x)
f.close()
#2
#eval
fr=open('b.txt','r')
a=fr.readline()#行
while len(a)>0:
for d in eval(a):
if d%5==0 or d%7==0:
print(d)
a=fr.readline()
fr.close()
#eval 方法二
a=fr.read()
b=eval(a)#一个一个
i=0
while i<len(b):
if b[i]%5==0 or b[i]%7==0:
print(b[i],end=' ')
i+=1
fr.close()
#eval运用
f=open('b.txt','r',encoding='utf-8')
a=eval(f.readline())
print(a,type(a))
a=eval(f.readline())
print(a,type(a))
a=eval(f.readline())
print(a,type(a))
a=eval(f.readline())
print(a,type(a))
print(a['l'],type(a['l']))
f.close()
#类 class
class student():
id=0
name=''
address=''
def say(self):
print(self.id,self.name,self.address)
zs=student()
zs.id=1001
zs.name='张三'
zs.address='山东'
zs.say()
ls=student()
ls.id=1002
ls.name='李四'
ls.address='北京'
ls.say()
#init
class student():
count=0#类属性
def __init__(self,name,age):#对象属性
self.name=name
self.age=age
self.xg='小狗'
student.count+=1
zs=student('张三',18)
print(zs.name,zs.age,zs.xg)#用对象访问的叫对象属性
ls=student('李四',20)
print(ls.name,ls.age,ls.xg)
print(student.count)#用类名访问的叫 类属性
#对象属性可以随意添加
#对象属性的扩展【体现不出 面对对象的封装特性】
class student():
def __init__(self,name):
self.name=name
def say(self):
print(self.id,self.sex)
zs=student('张三')
zs.id=1001
zs.sex='男'
zs.say()
#对象属性的添加
class student():
def __init__(self,name):
self.name=name
def say(self):
print(self.name,self.id,self.sex)
def h(self):
self.id=1001
self.sex='男'
zs=student('张三')
zs.h()
zs.say()
#对象属性两种不同的添加方法
class student():
def say(self,name):
self.name=name#为对象添加name属性
def h(self):
print(self.sex)#打印对象属性sex的值
zs=student()
zs.say('张三')
print(zs.name)
zs.sex='男'
zs.h()
#可以体现python的封装性,所以一般用 【正规】
class student():
count = 0#类属性
def __init__(self,name,age,sex):#初始化
self.name=name#增加name属性
self.age=age
self.sex=sex
def say(self):
print(self.name,self.age,self.sex)
zs=student('张三',18,'男')
ls=student('李四',20,'男')
zs.say()
ls.say()
#删除私有属性
class student():
count=0
def __init__(self,name,age,sex):#初始化
self.name=name#增加name属性
self.age=age
self.sex=sex
student.count+=1
zs=student('张三',18,'男')
ls=student('李四',20,'男')
ww=student('王五',23,'女')
zs.count=10#给张三定义了一个私有属性【先使用对象属性(私有),再使用类属性(公有)】
delatta(zs,'count')#删除zs的私有属性
print(student.count)
print(zs.count)
print(ls.count)
#delatta 【删除属性】
class student():
def __init__(self,name):
self.name=name
zs=student('张三')
print(zs.name)
delattr(zs,'name')#删除zs的name属性
print(zs.name)#name属性删除 所以不会输出name属性,报错。
#对象,类方法
class student():
count=5
def __init__(self,name):#对象方法调用的为对象
self.name=name
print(self.name)
@classmethod#修饰 提醒下面为类方法
def lff(cls):#调用的为类 ;类 相当于 student
print(cls.count)
def hh(self):
print(self.name)
zs=student('张三')
student.lff()
zs.lff()#对象可以调用类方法,类方法不可以调用对象方法
#student.hh()#报错
#静态方法
class student():
count=5
def __init__(self,name):#对象方法调用的为对象
self.name=name
@staticmethod#修饰 提醒下面为类方法
def hs():
print('我只一个方法,跟类和对象没有一点关系')
zs=student('张三')
student.hs()
zs.hs()#对象 与 类 都可以调用静态方法
#对象方法【对象调用】 类方法【对象 ,类调用】 静态方法【对象 ,类调用】
class student():
count=5
def __init__(self,name,n):#对象方法
self.name=name
print(self.name*n)
@classmethod#类方法
def cmethod(cls,cs1,cs2):
print(cls.count*cs1*cs2)
@staticmethod#静态方法
def smethod(cs1,cs2):
print(cs1*cs2)
def omethod(self,n):#对象方法
print(self.name*n)
zs=student('张三',2)
student.cmethod(3,4)
student.smethod(3,4)
zs.omethod(2)