https://www.cnblogs.com/alex3714/articles/5717620.html

1.集合操作

2.文件操作

文件操作补充:

   #文件读取

   连续两次读取文件:data1 = f.read() #读出文件所有内容

                                    data2 = f.read() #什么都读不出

   因为文件第一次读取从开头,光标在0位置,第一次读取后光标移到文件末尾,再次读取时读不到数据的。

   移回光标操作:f.seek(0) #代表光标回到位置0

   所以对于Python3学习笔记作业1中的hw2可以改为如下代码:

 1 # Author:Tang Ziyue
 2 
 3 #打开存储用户名密码文件和存储被锁定用户名的文件
 4 f = open('E:/usr.txt','r')
 5 f2 = open('E:/lock_usr.txt','a+')
 6 
 7 dict = {}
 8 list = []
 9 
10 #将文件中的数据转为字典
11 for line in f.readlines():
12     line = line.strip() #删除空白符
13     if not len(line):
14         continue
15     dict[line.split(':')[0]] = line.split(':')[1]
16 f.close()
17 
18 f2.seek(0) #光标移到文件开头
19 for line2 in f2.readlines():
20     line2 = line2.strip()
21     if not len(line2):
22         continue
23     list.append(line2)
24 
25 print(dict)
26 print(list)
27 
28 count = 0
29 username = input("用户名:")
30 if username in list:
31     print("此用户已被锁定!")
32     exit(0)
33 if username in dict:
34     while count<3:
35         password = input("密码:")
36         if password == dict.get(username):
37             print("欢迎",username)
38             break
39         else:
40             print("密码错误,请再次输入!")
41         count += 1
42         if count == 3:
43             print("密码尝试多次,已锁定!")
44             f2.write(username)
45 else:
46     print("此用户名不存在!")
47 f2.close()

   #读行  

   f.readline() #读一行

   f.readlines() #读所有的行,形成一个列表,每行为列表中的一个元素

   但是对于超大文件来说,一次性全部读到内存中是放不下的,需要读一行且只保存一行

   for line in f:

      print(f)  #效率最高,以后所有的for line in f.readlines():都被这个替换

   #强制刷数据到硬盘

    写数据时时先写到缓存上,默认等缓存慢了就刷到硬盘上

    f.flush()强制将数据刷到硬盘上

    例如打印进度条:

1 # Author:Tang Ziyue
2 
3 import sys,time
4 
5 for i in range(10):
6     sys.stdout.write('.') #标准输出,不换行,print会自动换行
7     sys.stdout.flush() #强制刷数据到硬盘输出到屏幕,输出到屏幕相当于往硬盘里写数据,
8     # 不用flush的话会一次性显示出来,因为会等缓存写满
9     time.sleep(0.1) #每0.1s打印一个

3.文件修改

   不修改原文件

 1 # Author:Tang Ziyue
 2 
 3 import sys,time
 4 
 5 f = open("yesterday",'r',encoding='utf-8')
 6 f_new = open("yesterday",'w',encoding='utf-8')
 7 
 8 for line in f:
 9     if "原字符串" in line:
10         line.replace("原字符串","新字符串")
11     f_new.write(line)
12 f.close()
13 f_new.close()

4.函数

   #函数                                     #过程,是无返回值的函数

   def func1():                             def func2():

        print("...")                                 print("...")

        return 0

    总结:返回值数=0:返回None

               返回值数=1:返回Object

               返回值数>1:返回tuple

   #有参函数

    def func(x,y):

         print(x)

         print(y)

    调用:1位置参数调用,与形参一一对应 func(1,2)

               2)关键字调用,与形参顺序无关  func(y=1,x=2)

        注:关键参数不能在顺序参数前面:func(x=2,1) X     func(2,y=1) √   

               3)默认参数调用,默认参数非必须传递

               def func(x,y=2)

                     print(x)

                     print(y)

               func(1) #结果是1  2

               func(1,y=3)或func(1,3) #结果是1  3

               4)不固定参数  #*args把n个位置参数转为一个元组           

           def func(*args): 
              print(args)
           func(1,2,3,4)或者func(*[1,2,3,4])

          结果:(1,2,3,4)

                                      # **kwargs把n个关键字参数转换成字典的方式 

                  def func(**kwargs):
print(kwargs)
func(name = 'tzy',age = 8, sex = 'f')
func(**{'name':'tzy', 'age':8,'sex':'f'})

           结果:{'name':'tzy','age':8,'sex':'f'}

5.字符编码

6.局部变量

   除字符串和数字等简单数据类型之外,其他数据类型例如列表、字典等局部变量可以更改全局变量的值。

name = ["A","B"]

def func():
    name[0] = "C"
    print(name)

func()
print(name)
#结果:['C', 'B']
      ['C', 'B']
name = "A"

def func():
    name = "C"
    print(name)

func()
print(name)
#结果:C
    A

7.递归  

8.高阶函数

posted on 2018-08-13 19:19  小小糖果tt  阅读(81)  评论(0)    收藏  举报