python学习(day3)

1、集合的使用:

#1、集合的操作:
list_1 = [1,4,5,7,3,6,7,9]
list_1 = set(list_1)#创建集合

list_2 = set([2,6,0,22,66,8,4])
print(list_1,type(list_1),list_2)

print(list_1.intersection(list_2))#取两集合的交集
print(list_1.union(list_2))#并集
print(list_1.difference(list_2))#差集 in list_1 but not in list_2
print(list_2.difference(list_1))#差集
list_3 =set([1,4,7])
print(list_3.issubset(list_1))#子集
print(list_1.issuperset(list_3))#父集
print(list_1.symmetric_difference(list_2))#对称差集

print("-------------")
list_4 =set([5,6,8])
print(list_3.isdisjoint(list_4))#Return True if two sets have a null intersection

print("运算符".center(50,‘-‘))
print(list_1 & (list_2))#并集
print(list_1 | (list_2))#并集
print(list_1 - (list_2))#差集in list_1 but not in list_2
print(list_1 ^ (list_2))#对称差集
print(list_1 ^ (list_2))#对称差集

print(list_1.add(999))#添加
list_1.update([888,777])#添加多项
print(list_1)
list_1.remove(1)#指定删除
print(list_1)
print(list_1.pop())#随机删除并返回
#list_1.remove()为空会报错
list_1.discard(888)#删除
print(list_1)

2、文件操作:

打开文件的模式有:

r,只读模式(默认)。

w,只写模式。【不可读;不存在则创建;存在则删除内容;】

a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

r+,可读写文件。【可读;可写;可追加】

w+,写读

a+,同a

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

rU

r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

rb

wb

ab

f = open("Yesterday.txt",‘r+‘)#文件句柄,Yesterday.txt:文件名
data = f.read()
print(data)
print(f.write("123"))

f = open("Yesterday.txt","r+",encoding="utf - 8")
#data = f.readlines()
#high bige
count = 0
for line in f:
    if count==9:
        print(‘----我是分割线-----‘)
        count += 1
        continue
    print(line)
    count += 1
print("1111111231231211111",f.tell())
f.close()

f = open("Yesterday.txt",‘r+‘,encoding="utf - 8")
print("11111111111111111111",f.tell())#tell() 方法返回文件的当前位置,即文件指针当前位置。
print(f.readline())
print(f.readline())
print(f.readline())
print(f.tell())
f.seek(0)#seek() 方法用于移动文件读取指针到指定位置。
print(f.readline())
print(f.encoding)#文件字符编码
print(f.fileno())#fileno() 方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作。
print(f.name)#打印文件名
print(f.flush())#flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
#一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

f.close()
f = open("Yesterday2.txt",‘r+‘)
f.truncate(10)#truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则重置到当前位置。
f.close()

#f = open("Yesterday2.txt",‘wb‘)
#print(f.readline())
f = open("Yesterday2.txt",‘wb‘)
f.write(‘hello binary\n‘.encode(encoding=‘utf-8‘))
f.close()
‘‘‘
#low loop
for line in f.readlines():
    print(line)
‘‘‘

2、1with语句:

import sys
print(sys.getdefaultencoding())#打印系统默认编码
with open("Yesterday.txt",‘r‘,encoding="utf-8") as f,      open("Yesterday2.txt",‘r‘,encoding="utf-8") as f2:
    for line in f:
        print(line)#with代码块执行完毕时,内部会自动关闭并释放文件资源

2、2文件修改:

f = open("Yesterday1.txt",‘r‘,encoding="utf-8")
f_new = open("Yesterday2.txt",‘w‘,encoding="utf-8")
for line in f:
    if "舌尖上的雨" in line:
        line = line.replace("舌尖上的雨","一二三四五")#replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
    f_new.write(line)
f.close()
f_new.close()

3、字符编码:

# Author:deyi liu
import sys
print(sys.getdefaultencoding())#打印系统默认编码
s = "你好"
s_gbk = s.encode("gbk")
print(s_gbk)
print(s.encode())
gbk_to_utf8 = s_gbk.decode("gbk").encode("utf-8")
print(gbk_to_utf8)
# -*- coding:gbk -*-
import sys
print(sys.getdefaultencoding())#打印系统默认编码
s = "你好"#文件编码为gbk,但s = "你好"的编码为Unicode
print(s.encode("gbk"))
print(s.encode("utf-8"))
print(s.encode("utf-8").decode("utf-8").encode("gb2312"))
print(s.encode("utf-8").decode("utf-8").encode("gb2312").decode("gb2312"))

4、函数:

函数定义:

def test(x):#def定义函数关键字,test函数名,()内容定义形参
    "The function definitions"#文档描述
    x+=1#泛指代码块或程序处理逻辑
    return x#return定义返回值
#定义函数
def func1():
    "testing1"
    print("in the func1")
    return 0

#定义过程(没有返回值的函数)
def func2():
    "testing2"
    print("in the func2")

x = func1()
y = func2()
print("from func1 return is: %s"%x)
print("from func2 return is: %s"%y)
import time

def logger():
    time_format = ‘%Y-%m-%d %X‘#年月日时,%X 本地相应的时间表示
    time_current = time.strftime(time_format)#time strftime() 函数接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。
    with open("a.txt",‘a+‘) as f:
        f.write(‘time is %s end action\n‘%time_current)

def test1():
    print("test1 starting action...")
    logger()

def test2():
    print("test2 starting action...")
    logger()

def test3():
    print("test3 starting action...")
    logger()

test1()
test2()
test3()
#定义函数
def test1():
    print("in the test1")
def test2():
    print("in the test2")
    return 0

def test3():
    print("in the test3")
    return 1,‘hello‘,[‘alex‘,‘wupeiji‘],{‘name‘:‘alex‘}

x = test1()
y = test2()
z = test3()
print(x)
print(y)
print(z)
#定义函数
def test(x,y):#x,y形参
    print(x)
    print(y)
test(1,2)#1,2实参,与形参一一对应(位置参数调用)
test(y=1,x=2)#与形参顺序无关(关键字调用)
test(3,y=1)#关键字不能再位置参数前面
def test(x,y=2):#y=2默认参数,默认参数非必须传递
    print(x)
    print(y)
test(1)
#test(1,3)

参数组:

def test(*args):#参数组,以*开头,接受N个位置参数,转换成元组的形式
    print(args)
test(1,2,3,4,5)
test(*[1,2,3,4,5])#args=tuple([1,2,3,4,5])

def test1(x,*args):
    print(x)
    print(args)
test1(1,2,3,4,5)

def test2(**kwargs):#把n个关键字参数,转换成字典的形式
    print(kwargs)
    print(kwargs[‘name‘])
    print(kwargs[‘age‘])
    print(kwargs[‘sex‘])
test2(name=‘alex‘,age=8,sex=‘F‘)#kwargs={‘name‘: ‘alex‘,‘age‘: 8, ‘sex‘: ‘N‘}
test2(**{‘name‘: ‘alex‘,‘age‘: 8, ‘sex‘: ‘N‘})#kwargs={‘name‘: ‘alex‘,‘age‘: 8, ‘sex‘: ‘N‘}

def test3(name,**kwargs):
    print(name)
    print(kwargs)
test3(‘alex‘,age=8)

def test4(name,age=8,*args,**kwargs):#参数组要放在后面
    print(name)
    print(age)
    print(args)
    print(kwargs)
test4(‘alex‘,age=3,sex=‘F‘,hobby=‘tesla‘)
def test4(name,age=8,*args,**kwargs):#参数组要放在后面
    print(name)
    print(age)
    print(args)
    print(kwargs)
    logger("TEST4")

def logger(source):
    print("from %s"%source)
test4(‘alex‘,age=3,sex=‘F‘,hobby=‘tesla‘)

高阶函数:

def add(a, b, f):  # abs() 函数返回数字的绝对值
    return f(a) + f(b)
    
res = add(3,-6,abs)# abs() 函数返回数字的绝对值
print(res)

5、局部变量:

school = "Oldboy edu."#全局变量
def change_name(name):
    global school#global声明全局变量
    school = "asd"#局部变量
    print("before change",name,school)
    name = "Alex Li"#这个函数就是这个变量的作用域
    print("after change",name)
name = "alex"
change_name(name)
print(name)
print(school)
names = ["Alex","Jack","Rain"]
def change_name():
    names[0] = "金角大王"#字符串,整数不能再局部里面修改,列表,字典,集合,类的可以
    print("inside func",names)
change_name()
print(names)

6、进度条:

import sys,time
#sys.stdout.write("asd")
#sys.stdout.write("asd")#不换行

for i in range(20):
    sys.stdout.write("#")
    sys.stdout.flush()#调用sys.stdout.flush()强制其“缓冲
    time.sleep(0.1)

7、递归:

def calc(n):
    print(n)
    if int(n/2)>0:
        return calc(int(n/2))
    print("->",n)

calc(10)
时间: 2024-10-12 02:58:15

python学习(day3)的相关文章

Python学习day3作业

Python学习day3作业 days3作业 作业需求     HAproxy配置文件操作 根据用户输入,输出对应的backend下的server信息 可添加backend 和sever信息 可修改backend 和sever信息 可删除backend 和sever信息 操作配置文件前进行备份 添加server信息时,如果ip已经存在则修改;如果backend不存在则创建:若信息与已有信息重复则不操作 [x] 博客 [x] 查询backend下的server信息 [x] 添加backend和se

python学习day3:函数

:first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { border: 0; max-width: 100%; height: auto !important; margin: 2px 0; } table { border-collapse: collapse; border: 1px solid #bbbbbb; } td { padding:4px 8px; border-co

Python学习--day3

一.集合        1. 什么是集合 dict的作用是建立一组 key 和一组 value 的映射关系,有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,这时,集合就派上用场了.集合set是一个无序的,不重复的数据组合.它的作用主要有: 去重,set中的元素没有重复,而且是无序的 关系测试,测试两组数据之前的交集.差集.并集等关系 创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素: 1 list_1=[1,2,3,'

python 学习day3

set(无序不重复的序列) 创建两种方式 例一:s1 = {1,2,3} 例二:s2 = set() ,s3 = set([1,2,3,4,5]) 功能 s2.add(123) #添加s2集合中123元素 s2.clear() #清除内容 s2.copy() #浅拷贝 s1.difference.s2 #获取s1中存在 s2中不存在的 s1.difference_update.s2 #从当前集合中删除和B中相同的元素 s1.discard('aaa') #移除指定元素,不存在不保错 s1.int

Python 学习 DAY3(函数 input & print)

input  1 格式: input([prompt])  prompt为提示信息  ctrl+z结束输入 2 函数功能: 接受一个标准输入数据,返回string类型 3 实例: print 1 格式: print([object, ...], *, sep=' ', end='\n', file=sys.stdout) (end默认值为回车,可自定义符号) 2 函数功能: 输出各类型数据:字符串,整数,浮点数,初度以及精度控制 3 实例: print():输出一个空行 print(str或nu

Python学习Day3

字符串的索引与切片 str_1 = 'NeroIsGoodMan' str_2 = str_1[5] #索引单个字符>>>s str_3 = str_1[0:] #从开始到结尾全部切片>>>NeroIsGoodMan str_4 = str_1[:4] #0-4的字符切片,顾头不顾尾>>>Nero str_5 = str_1[4:] #从索引4到最后切片>>>IsGoodMan str_6 = str_1[::-1] #反向>&

python学习day-3 列表 元祖 字典

一.列表list a.基础 1. li = [1, 12, 9, "age", ["石振文", ["19", 10], "庞麦郎"], "alex", True] 中括号括起来:,分割每个元素:列表中的元素可以是数字,字符串,列表,布尔值......:列表可以嵌套 (他就是个集合,内部放置任何东西) 2.可以进行索引,切片取值 li = [1, 12, 9, "age", ["

python学习DAY3(列表)

今天所学知识主要是列表,其大概操作以及含义和C\C++等编程语言的数组很类似,记住一些常用的函数格式就行了 列表 names=["aaa","bbb","ccc","ddd"] //类似于C++中的数组 print(name) print(names[0]) //取出第一个元素 列表一些较为常用的操作函数 #切片 print(names[1:3]) #注意冒号 '''取出第二个元素和第三个元素!注意,取出元素在原列表的标记类似

Python学习记录day3

Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个无序且不重复,可嵌套的元素集合 class set(object):     """     set() -> new empty set object     set(iterable) -> new set object     Build an unordered collection of unique elements.     

Day3: Python学习笔记之计算机基础——网络片

Day3: Python学习笔记之计算机基础--网络片 什么是互联网协议以及为何要有互联网协议? ?互联网协议本质上是为了方便连接两台计算机而指定的一系列统一的标准. osi五层模型 计算机之间要实现数据传输必须要经过以下五层协议: ? 模型 ,协议 ,硬件 ? 应用层, http协议.用户自定义协议 ? 传输层, TCP/UPD协议 ,四层交换机.四层路由器 ? 网络层, IP协议, 三层交换机.路由器 ? 数据链路层, 以太网.电信号分组, 网桥.以太网交换机.网卡 ? 物理层, 传递电信号