• python学习笔记


     
      1 笔记记录:
      2 1、#交互,输入name
      3 name = raw_input('what is  your name?')
      4      #实现多行交互输入,输入Q结束输入
      5 user_date=''
      6 stopword='Q'
      7 with open("tmp.txt",'w') as f:
      8 for line in iter(raw_input,stopword):
      9 user_date = line +'
    '
     10 f.write(user_date)
     11 
     12 2、#读取文件存入到account_list , 后面是写入
     13 f = file(account_file)
     14 account_list = f.readlines()
     15 f.close()
     16 
     17 f = file(account_file,'a')  # a代表追加 ,如果用w 就是覆盖
     18 f.write('
    %s' % username)
     19 f.close()
     20 
     21 # 实时地写进去文件里
     22 f.flush()
     23 
     24 3、循环转换成数组.split()
     25   for line in account_list:
     26         line = line.split()
     27 
     28 4、三次循环,break是退出,continue继续: 
     29  for i in range(3):
     30 if i == 3: break
     31 else continue
     32 
     33 5、fileinput的具体用法是:
     34 fileinput.FileInput(files=None, inplace=False, backup='', bufsize=0, mode='r', openhook=None)
     35 其中:
     36 files :文件的路径列表;
     37 inplace:是否将标准输出(print方法)的结果写回文件;
     38 backup : 备份文件的扩展名;
     39 bufsize :缓冲区大小;
     40 mode :读写模式;
     41 openhook : 打开文件时的钩子;
     42 
     43 6、文件打开处理:
     44 f = f.file("f_test.txt")
     45 f.readlines()
     46 f.tell() # 当前的位置
     47 f.seek(0) # 回到指定的行数位置
     48 
     49 f.truncate(100) # 截取到100的位置
     50 
     51 # 相当于f = f.file("f_test.txt")打开,但不需要用关闭的。
     52 with open("f_test.txt",'r+') as f:
     53     f.seek(24)
     54     f.truncate(30)
     55 
     56 f.flush() 方法是用来刷新缓冲区,一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新他它,这时就可以使用flush()方法。
     57 
     58 7、列表
     59 name_list[]
     60 name_list.index(20) # 代表列表中数值20所在的位置
     61 name_list.insert(1,'Rain') # 往列表1位置 插入数值'Rain',后面的值往后排
     62 name_list.remove('Rain') # 删除列表中第一个Rain值
     63 name_list.count('Rain') # 自带统计有多少个Rain值
     64 name_list.sort() # 列表的排序
     65 name_list.pop() # 删除列表最后一个内容
     66 name_list.extend('[7,8,9]') # 按照列表格式加入
     67 name_list[4] = 'CHECK' # 修改列表第四个的内容
     68 name_list[2:7] #切片, 第2内容到7内容,不包含7
     69 name_list[7:] #第7个后面的内容
     70 name_list[-5:] #切片倒数第五个及其后面内容
     71 name_list[1:6:2] #跳着截取,2是步长,截取135内容
     72 #把列表一行打印,按照指定的分隔符'|'
     73 from __future__ import print_function
     74 names = ["Sam", "Peter", "James", "Julian", "Ann"]
     75 print(*names,sep='|')
     76 
     77 
     78 8、read()  readline()  readlines()
     79 read() #  每单个字符读取
     80 readline() # 每行读取,存入的是字符串行 
     81 readlines() # 每行读取,存入的是列表行
     82 
     83 9、startswith() 
     84 Python startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
     85 line.startswith(str, beg=0,end=len(string));
     86 参数
     87 str -- 检测的字符串。
     88 strbeg -- 可选参数用于设置字符串检测的起始位置。
     89 strend -- 可选参数用于设置字符串检测的结束位置。
     90 
     91 10、字典
     92 contacts = {}
     93 # 字典里可以存任何的东西
     94 contacts = {
     95    'Alex' : 13750362307,
     96    'Rachel':[13750362308,'student',25],
     97    'Rain' : {'age':28},
     98 }
     99 
    100 # 只可以修改values值的内容,不可以修改key值
    101 contacts['Alex'] = 199999999999
    102 
    103 # 删除内容
    104 del contacts['Rachel']
    105 
    106 # 新增内容
    107 contacts['Marry'] = '666666','chiji'
    108 
    109 # 只打印了 key的值
    110 for i in contacts:
    111    print i
    112 
    113 # 把key和values都打印,但是按照元组来打印
    114 for i in contacts.items():
    115     print i
    116 
    117 # 把key和values分开打印
    118 for x,y in contacts.items():
    119     print x,y
    120 
    121 # 查看所有的key
    122 print contacts.keys()
    123 # 查看所有的values
    124 print contacts.values()
    125 
    126 # 查询字典里的内容
    127 if contacts.has_key('Alex') : print '666666666'
    128 
    129 11、字体添加颜色:
    130 开头部分:33[显示方式;前景色;背景色m + 结尾部分:33[0m
    131 
    132 12、对齐打印
    133 from prettytable import PrettyTablex = PrettyTable(["名字", "数学成绩", "语文成绩", "计算机成绩"])
    134 x.add_row(["小明",200, 199, 198])x.add_row(["大明白",197, 196, 195])x.add_row(["老明亮了", 300, 299, 298])
    135 print(x)
    136 
    137 13、函数:
    138 (1)返回多个值
    139 def returnMulti():
    140     return 1, 2, 3
    141 result = returnMulti()
    142 a, b, c = returnMulti()
    143 print result[0], result[1], result[2]
    144 print a, b, c
    145 
    146 14、枚举函数
    147 枚举函数enumerate 循环访问时,同时访问索引值:
    148 for i in enumerate('sdfsifisneamlgljslf;fsdf'):
    149     print (i)
    150 
    151 
    152 python中的SET集合
    153 python的set是一个无序不重复元素集,可以用作去重功能的。
    154 
    155 15、from os import system;
    156 #导入os模块,可以使用shell命令,调用方式如下:
    157 os.system('df')      执行失败的话结果是返回0的。  
    158 os.popen('df')        执行结果是按照内容返回的。
    159 
    160 16、import sys,datetime
    161 #导入sys,datetime模块
    162 # 程序退出,直接用sys
    163 sys.exit('发生错误,程序退出')
    164 # 获取当前系统时间
    165 getdate = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
    166 
    167 17、迭代器
    168 迭代器一次只产生一个数据项, 占用更加少的内存。
    169  迭代器,iter() 只会保留一次, 占用内存很少, 处理大量文件的时候,不建议使用列表,建议使用迭代器进行处理。
    170 # 迭代器的方法只有一个 .next()
    171 a = [1,2,3,4,5,6,7]
    172 b = iter(a)
    173 for i in b:print i
    174 
    175 18、lambda 匿名函数,可以理解为单行函数。 使用lambda函数不需要考虑命名函数名。
    176 a=lambda i,x : i**2/(x-i)
    177 
    178 19、序列化
    179 
    180 知识 pickle , json
    181 序列化 ,就是把内存的东西写到硬盘中。可以存放列表,数组
    182 而如果只是用write, write只能写入的是字符串
    183 import pickle
    184 account_info = {
    185     '92392382838':['Alex1234',15000,16000],
    186     '29394823472':['Rachel',9000,9000],
    187     'Rain':{
    188         'age':'30',
    189         'job':'salesmen'
    190     }
    191 }
    192 f = file('account.pkl','wb')  # 二进制打开文件
    193 pickle.dump(account_info,f)   # 倾泻到f文件里
    194 f.close()
    195 
    196 f = file('account.pkl')
    197 abc = pickle.load(f)
    198 # pickle是可以dump多次的,但是你需要Load多次才能使用才是你需要的状态,所以一般都只建议dump一次。
    199 # 使用xml格式用 跨语言数据交换。 java、python、C#、C 
    200 # 现在多数使用的是 json 格式进行来数据交换。
    201 import json
    202 f = file ('account_info.json','wb')
    203 json.dump(account_info,f)
    204 f.close()
    205 f = file('account_info.json')
    206 b = json.load(f)
    207 
    208 20、 正则表达式
    209 import re
    210 p = re.compile('hello')
    211 >>> p.match('hello hello work')  # 如果匹配不了的话,会返回None
    212 <_sre.SRE_Match object at 0x10fcf5a58>
    213 
    214 >>> p.findall('hello hello worerenfn')   # 会以列表形式进行存储
    215 ['hello', 'hello']
    216 
    217 p = re.compile('d') # 匹配任何十进制数字;相当于0-9
    218 p = re.compile() # 匹配任何非数字字符,相当于^0-9
    219 p = re.compile('d+') # 匹配多个数字
    220 
    221 # 替换
    222 >>> re.sub('[a-z]','o','sjndfhsh213nfnj')
    223 'oooooooo213oooo'
    224 >>> re.sub(r'd+','o','jdjsfn33n343')
    225 'jdjsfnono'
    226 
    227 c = 'jjfs*&'
    228 c.isalpha() # 检查是否有特殊字符 ,有的话返回Faluse ,没有的话返回True
    229 
    230 
    231 --------------------------------------------------------------------------------
    232 day1:
    233 #!/usr/bin/env python
    234 
    235 print 'hello world!'
    236 
    237 #python 是严格用缩进来规范的。
    238 if True:
    239     print 'asdasdadad'
    240 
    241 #python 定义变量只能用大小写字母或下划线 _ 开头定义:
    242 name = Alex Li  #错误:存在空格,另外如果没有加单引号,也会错误
    243 
    244 
    245 #模块:
    246 import myFrist.py as my #别名my
    247 
    248 from os import system;
    249 #导入os模块,可以使用shell命令,调用方式如下:
    250 os.system('df')      执行失败的话结果是返回0的。  
    251 os.popen('df')        执行结果是按照内容返回的。
    252 --------------------------------------------------------------------------------
    253 #交互:
    254 #!/usr/bin/env python
    255 name = raw_input('what is  your name?')
    256 age = raw_input('What is your age?')
    257 sex = raw_input('What is your job?')
    258 #外部引用变量
    259 print """Person info:
    260 
    261         Name:  %s
    262         Age :  %s
    263         sex :  %s
    264         Job :  %s
    265 """ % (name,age,sex,job)      #%s 就是一一对应进行外部写入
    266 --------------------------------------------------------------------------------
    267 
    268 登录脚本:
    269 1、输入正确的账号密码登录
    270 2、输错三次密码锁定账号
    271 
    272 #!/usr/bin/env python
    273 # -*- coding: UTF-8 -*-
    274 # 文件面 : lock.py
    275 
    276 
    277 
    278 account_file = 'username.txt'
    279 lock_file = 'lock.txt'
    280 
    281 f = file(account_file)
    282 account_list = f.readlines()
    283 f.close()
    284 
    285 '''
    286 f = file(lock_file)
    287 lock_list = []
    288 for i in f.readlines():
    289     line = i.strip('
    ') #以
    换行符来做分割
    290     lock_list.append(line)  # .append() 加入数组里
    291 f.close()
    292 '''
    293 # print lock_list
    294 
    295 # 定义一个参数:
    296 loginSuccess = False
    297 
    298 
    299 while True:
    300     username = raw_input('user:').strip()
    301     f = file(lock_file)
    302     lock_list = []
    303     for i in f.readlines():
    304         line = i.strip('
    ')  # 以
    换行符来做分割
    305         lock_list.append(line)  # .append() 加入数组里
    306     f.close()
    307     if username in lock_list:
    308         print "%s is locked,not allow login!" % username
    309         break
    310     for line in account_list:
    311         line = line.split()
    312         if len(username) != 0 and username == line[0]:
    313             for i in range(3):
    314                 passwd = raw_input("password:").strip()
    315                 if passwd == line[1] :
    316                     print "welcome %s come in my system!" % username
    317                     # 改变这个标识,为了识别可以退出循环。
    318                     loginSuccess = True
    319                 if loginSuccess is True: break   # 为了退出for循环
    320                 else:
    321                     continue
    322             # 循环三次密码都失败的话,才进入此步:
    323             else:
    324                 print "you put 3 times error password,your username: %s have locked! " %username
    325                 f = file(lock_file,'a')  # a代表追加
    326                 f.write('
    %s' % username)
    327                 f.close()
    328                 #loginSuccess = True  # 打上Ture标识,为了可以退出while巡检
    329     if loginSuccess is True: break   # 为了退出 while巡检
    330 
    331 --------------------------------------------------------------------------------
    332 #!/usr/bin/env python
    333 # coding=utf-8
    334 # 功能:存入字典了,输入进行模糊查询
    335 import sys
    336 
    337 employee = {} # 定义一个字典
    338 with open('employee.txt','r') as f:
    339     for i in f.readlines():  # 每行读取成为以列表形式
    340         print i
    341         line = i.split('|') # 以分隔符'|' 存入列表
    342         employee[line[0]]= line[1:] # 存入到字典里
    343 '''
    344 for x,y in employee.items():  # 历遍打印keys和values值
    345     print x,y
    346 
    347 print employee.keys()
    348 '''
    349 
    350 while True:
    351     names = raw_input("please send info:")
    352     if employee.has_key(names):
    353         print names , employee[names]
    354     else:
    355         info_count = 0
    356         if len(names) < 3:
    357             print "must names's len more than 3"
    358             continue
    359         for x , y in employee.items():
    360             if x.count(names) != 0:
    361                 info_count += 1
    362                 continue
    363                 print x,'|'.join(y)
    364             for i in y:
    365                 if i.count(names) != 0:
    366                     print x,'|'.join(y)
    367                     info_count += 1
     

  • 相关阅读:
    MySQL中的用户与授权
    Vim安装使用和配置
    Mysql中的explain和desc
    array_map、array_walk、array_reduce
    PHP二维数组去重(指定键名)
    git配置ssh秘钥(公钥以及私钥)windows
    在nginx上用FastCGI解析PHP
    关于token登录逻辑分析
    公有云 私有云 混合云 的区别
    使用Docker在服务器上部署Ubuntu,本地传文件到docker
  • 原文地址:https://www.cnblogs.com/dennymami/p/9556566.html
Copyright © 2020-2023  润新知