Python第二周笔记

2019年3月25日

文章目录

  • Python第二周笔记
    • 一、函数进阶
      • MAP
      • Filter
      • Reduce
    • 二、模块
    • 三、 文件方法
        • **内建函数**
        • Time 模块
        • read/readline/readlines
        • seek:让指针移动,以字节为单位进行移动
      • 一、正则表达式
          • 基础
          • 进阶
          • re模块
        • 一、错误和异常
          • 语法错误:SyntaxError:invalid syntax
          • 异常
          • 异常处理
          • 抛出异常
        • 用户自定义异常
          • 定义清理行为
          • 预定义的清理行为
        • 二、面向对象
          • `__init__`方法:
          • 数据封装

项目二:用户管理系统

# -*- coding: UTF-8 -*-
#用户管理系统print('''
===================用户管理系统
1.添加一个新用户信息
2.查询一个用户信息
3.显示所有的用户信息
4.删除一个用户信息
5.修改一个用户信息
6.退出系统
===================
''')d={'zq':['123456','654321','ddddd']}
def f1():a1=input('请输入新用户名:')a2=input('请输入新用户微信号:')d.setdefault(a1,[]).append(a2)a3=input('请输入新用户手机号:')d.setdefault(a1,[]).append(a3)a4=input('请输入新用户的地址:')d.setdefault(a1,[]).append(a4)print('添加成功')def f2():                                    #查询l=[]b1=input('请输入要查询的姓名:')a=d.get(b1)for i in a:l.append(i)print(b1,'  '.join(l))def f3():                                   #显示所有的用户信息         keys = list(d.keys())l=[]for b1 in keys:a=d.get(b1)print('''姓名     微信号      手机号       住址      ''')print(b1,'     ','     '.join(a))def f4():                                #删除一个用户信息c1=input('请输入要删除的姓名:')del d[c1]print('删除成功')def f5():                               #修改一个用户信息l=[]d1=input('请输入要改的姓名信息:')a=d.get(d1)for i in a:l.append(i)print(d1,'  '.join(l))d2=input('修改的姓名是:')d[d2] = d.pop(d1)print('修改成功')def menu(x):if x==1:f1()elif x==2:f2()elif x==3:f3()elif x==4:f4()elif x==5:f5()        elif x==6:exit()else:print('输入错误') return n=int(input('请输入操作序号:'))
menu(n)
while True:n=int(input('请输入操作序号:'))menu(n)

明白跟使用还是有差距的

一、函数进阶

  • MAP
    #初级版本
    items=[1,2,3,4,5] squared=[] for i in items:squared.append(i**2) #进阶版本
    items=[1,2,3,4,5]
    squared=list(map(lambda x:x**2,items))    

    题目一: 利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。

    def test(name_list):
    print(map(lambda  name:name[0].upper()+name[1:].lower,name_list))
    >>>test( ['adam', 'LISA', 'barT'])
    
  • Filter

    filter能创建⼀个列表,其中每个元素都是对⼀个函数能返回True.

    # -*- coding: UTF-8 -*-
    #判断是不是素数,不是返回TRUE,是返回False
    def not_prime(num):if(num < 2):return Truejudge = 2while(judge < num):if num%judge == 0:return Truejudge += 1return False
    #将一个数字列表中所有的素数过滤删除掉
    def prime_number(num_list):print(list(filter(not_prime,num_list)))#删除1-100以内的素数
    prime_number(range(100))
    print(not_prime(2))
    
  • Reduce

    reduce()把一个函数作用在一个序列[x1, x2, x3…]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算

    语法:

    >>>reduce(function, iterable[ ,nitialiser])
    

    · function – 函数,有两个参数

    · iterable – 可迭代对象

    · initializer – 可选,初始参数

二、模块

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

from fib import fibonacci   #from 模块名 import 函数名
import module1[, module2[,... moduleN]]#模块名.函数名
from modname import *  #导入模块所有项目
  • dir()函数 :显示模块的内容

    import math
    content = dir(math)
    print content
    
  • reload()函数:重新导入之前导过的模块,reload(hello)

  • globals() 和 locals() 函数:返回全局和局部命名空间里的名字

  • python的包:包就是文件夹

    test.py
    package_runoob
    |-- __init__.py
    |-- runoob1.py
    |-- runoob2.py

三、 文件方法

一种类型的对象,类似前面已经学习过的其它

数据类型,包括文本的、图片的、音频的、视频的等等,还有不少没见过的扩展名的。

 f = open("130.txt")     #打开已经存在的文件for line in f:print line       #打印文件内容nf = open("131.txt","w")     #创建文件内容
nf.write("This is a file")f.close()#一定要关掉

关于****open 模式:

w 以写方式打开,如果没有则会创建,有则覆盖。
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件),没有则创建
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )

  • 内建函数

fp.read([size]) #size为读取的长度,以byte为单位
fp.readline([size]) #读一行,size返回的是一行的部分 ,超过则返回一行到\n
fp.readlines([size]) #把文件每一行作为一个list的成员返回这个list。
fp.write(str) #把str写到文件中,write()并不会在str后加上一个换行符
fp.writelines(seq) #把seq的内容全部写到文件中(多行一次性写入)。只写入,不会在每行后面加上任何东西。
fp.close() #关闭文件。
fp.flush() #把缓冲区的内容写入硬盘
fp.fileno() #返回一个长整型的”文件标签“
fp.isatty() #文件是否是一个终端设备文件(unix系统中的)
fp.tell() #返回文件操作标记的当前位置,以文件的开头为原点
fp.next() #返回下一行,并将文件操作标记位移到下一行。
fp.seek(offset[,whence]) #将文件打操作标记移到offset的位置。
fp.truncate([size]) #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。

fileObject.seek(offset[, whence])

offset : 开始的偏移量,也就是代表需要移动偏移的字节数

​ **whence:**可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

一、正则表达式

  • 基础

  • 进阶

[] 表示范围

[0-9a-zA-Z_]可以匹配一个数字、字母或者下划线

[0-9a-zA-Z_]+可以匹配至少由一个数字、字母或者下划线组成的字符串

[a-zA-Z_] [0-9a-zA-Z_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。

A|B可以匹配A或B,所以(P|p)ython可以匹配’Python’或者’python’。

^:行的开头 ^\d:必须以数字开头

$行的结束 \d:必须以数字开头

贪婪匹配:正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符。

re模块
import re
print(re.match(r'^\d{3}\-\d{3,8}$', '010-12345'))
>>><re.Match object; span=(0, 9), match='010-12345'>

项目地址:

https://knightlab.northwestern.edu/2014/06/05/five-mini-programming-projects-for-the-python-beginner/

https://www.edureka.co/blog/python-projects/

https://www.geeksforgeeks.org/computer-science-projects/#Python

一、错误和异常
  • 语法错误:SyntaxError:invalid syntax
    >>> while True print('Hello world')File "<stdin>", line 1, in ?while True print('Hello world')SyntaxError: invalid syntax
  • 异常
    >>> 10 * (1/0)
    Traceback (most recent call last):File "<stdin>", line 1, in ?
    ZeroDivisionError: division by zero>>> 4 + spam*3
    Traceback (most recent call last):File "<stdin>", line 1, in ?
    NameError: name 'spam' is not defined>>> '2' + 2
    Traceback (most recent call last):File "<stdin>", line 1, in ?
    TypeError: Can't convert 'int' object to str implicitly
  • 异常处理

try语句按照如下方式工作;
首先,执行try子句(在关键字try和关键字except之间的语句)
如果没有异常发生,忽略except子句,try子句执行后结束。
如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。
如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。
一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组,例如:
except (RuntimeError, TypeError, NameError):
pass
最后一个except子句可以忽略异常的名称,它将被当作通配符使用。你可以使用这种方法打印一个错误信息,然后再次把异常抛出。


>>> while True:try:x=int(input("Please enter a number: "))breakexcept ValueError:print("Oops!That was no valid number.  Try again")
  • 抛出异常

raise 语句抛出一个指定的异常,raise 唯一的一个参数指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。

>>> raise NameError('HiThere')
Traceback (most recent call last):File "<stdin>", line 1, in ?
NameError: HiThere
  • 用户自定义异常

​ 异常类继承自Exception 类,可以直接继承,或者间接继承

​ 当创建一个模块有可能抛出多种不同的异常时,一种通常的做法是为这个包建立一个基础异常类,然后基于这个基础类为不同的错误情况创建不同的子类:

class MyError(Exception):def __init__(self, value):self.value = valuedef __str__(self):return repr(self.value)
  • 定义清理行为

try 语句还有另外一个可选的子句,它定义了无论在任何情况下都会执行的清理行为。

>>> try:raise KeyboardInterruptfinally:print('Goodbye, world!')Goodbye, world!
KeyboardInterrupt
  • 预定义的清理行为

一些对象定义了标准的清理行为,无论系统是否成功的使用了它,一旦不需要它了,那么这个标准的清理行为就会执行。

for line in open("myfile.txt"):print(line, end="")
二、面向对象

面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板

class Student(object):pass
  • __init__方法:

第一个参数永远是self,表示创建的实例本身在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去

lass Student(object):def __init__(self, name, score):self.name = nameself.score = score
  • 数据封装
class Student(object):...def get_grade(self):if self.score >= 90:return 'A'elif self.score >= 60:return 'B'else:return 'C'

Python基础进阶相关推荐

  1. python开发需要掌握哪些知识-Python基础进阶需要掌握哪些知识点?

    Python基础进阶需要掌握哪些知识点?Python将是每个程序员的标配,有编程基础再掌握Python语言对于日后的升职加薪更有利.Python语言简洁利于理解,语法上相对容易能够让开发者更专注于业务 ...

  2. Python训练营—Tesk3—Python基础进阶—从函数到高级魔方方法

                    Python基础进阶--从函数到高级魔方方法 目录 Python基础进阶--从函数到高级魔方方法 一.函数 1.函数的定义 2.函数的调用 3.函数参数 4.变量作用域 ...

  3. Python基础+进阶(万字总结,基础案例+执行结果)

    Python基础篇 第一章:基础语法 输出相关: 基本输出案例 print("HelloWorld")# 执行结果: ''' HelloWorld ''' 转义字符 # 转义字符& ...

  4. python将姓王的都改成老王_老王Python基础+进阶+项目篇(高清无密)

    老王Python教程 基础篇 基础篇1-福利课python先入为主上 基础篇2-福利课-python先入为主下篇 基础篇3-虚拟机安装xubuntu开发环境 基础篇4-linux基本命令以及开发环境 ...

  5. Python基础进阶(前言)

    前言 你好,世界!作为一个年轻的程序员和90年代后期的黑客爱好者,我经常认真阅读最新一期的2600:黑客季刊.有一天,我终于鼓起勇气参加了杂志社在我所在城市举办的每月一次的聚会,惊叹于其他人看来是多么 ...

  6. 阿里云天池 Python训练营Task3: Python基础进阶:从函数到高级魔法方法 学习笔记

    本学习笔记为阿里云天池龙珠计划Python训练营的学习内容,学习链接为:https://tianchi.aliyun.com/specials/promotion/aicamppython?spm=5 ...

  7. 最新java初级高级,python基础进阶,机器学习视频资料

    我是在校口碑,现在整理了一些编程,java,python,框架,大数据资料,适用于小白和大牛!! 转载于:https://blog.51cto.com/13135855/2342878

  8. Python基础进阶之路(三)之列表

    列表的定义 List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组 专门用于存储 一串 信息 列表用 [] 定义,数据 之间使用 , 分隔 列表的 索引 从 0 开 ...

  9. 《天池龙珠 - Python训练营》03.Python基础进阶:从函数到高级魔法方法

    目录 函数 函数的定义 函数的调用 函数文档 函数参数 函数的返回值 变量作用域 Lambda 表达式 匿名函数的定义 匿名函数的应用 类与对象 对象 = 属性 + 方法 self 是什么? Pyth ...

最新文章

  1. Oracle闪回详解
  2. DNS 与BIND(第五版)
  3. try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后?...
  4. ES5-12 【utils】继承深入、call、apply、圣杯模式、模块化
  5. Oracle bigfile 大文件表空间会影响rman等备份效率
  6. 驱动框架8——将驱动集成到内核中
  7. 【报告分享】斯坦福-2019人工智能指数年度报告.pdf(附293页报告现在链接)
  8. java内存溢出模拟_模拟实战排查堆内存溢出(java.lang.OutOfMemoryError: Java heap space)问题...
  9. vue组件,通过props父组件给子组件传值,WTF, 子组件报错undefined???
  10. 谷歌浏览器被7654恶意篡改主页解决办法
  11. 基于hexo搭建github的个人静态博客
  12. NYOJ - [第十一届河南省程序设计大赛]治安管理(区间判断)
  13. 尚硅谷【韩顺平】 | Java数据结构和算法【详细笔记】(持续更新)
  14. 狄马:荒谬的苦难哲学
  15. 11. 文件操作与模块
  16. Autodask_3DMAX安装Failed Installation aborted, Result=1619解决办法
  17. 微信企业号和企业微信消息发送区别
  18. 12.15有一种数叫回文数,正读和反读都一样,如12321便是一个回文数。编写一个程序,从命令行得到一个整数,判断该数是不是回文数
  19. 震惊!某程序员吐槽零基础自学编程很难,真的是这样吗?
  20. ROS:rosdep init 安装问题解决方案-转载

热门文章

  1. python 绕过国科大教务系统获取所有学生成绩
  2. For Your Dream
  3. Unity 设置程序在后台运行
  4. 9.PMAC上位机-上位机发送指令
  5. 【qq机器人】发送图片的插件
  6. 人民网:山西省 - 地方领导留言板
  7. 友价商城源码插件-百度链接主动提交
  8. 老旧的API,你应该如何处理?
  9. 知云文献翻译打不开_知云文献翻译 for mac v1.0.1
  10. 第四十九篇 复数的概念