美文网首页
python学习笔记01

python学习笔记01

作者: 单身狗的清香 | 来源:发表于2018-05-16 21:11 被阅读23次

    本篇为python基础部分,包含练习题

    基础知识点:

    1.python是解释型语言,不需要编译,直接由解释器解释运行。
    CPython
    当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。

    CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。

    IPython
    IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

    CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

    PyPy
    PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

    绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点

    Jython
    Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

    IronPython
    IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
    2.python基本数据类型
    标准数据类型
    Python3 中有六个标准的数据类型:

    Number(数字)
    String(字符串)
    List(列表)
    Tuple(元组)
    Sets(集合)
    Dictionary(字典)
    Python3 的六个标准数据类型中:

    不可变数据(四个):Number(数字)、String(字符串)、Tuple(元组)、Sets(集合);
    可变数据(两个):List(列表)、Dictionary(字典)。
    特殊类型:
    None Ture False
    3.python的流程控制语句:
    条件语句:

    age = int(input("请输入你家狗狗的年龄: "))
    print("")
    if age < 0:
        print("你是在逗我吧!")
    elif age == 1:
        print("相当于 14 岁的人。")
    elif age == 2:
        print("相当于 22 岁的人。")
    elif age > 2:
        human = 22 + (age -2)*5
        print("对应人类年龄: ", human)
    else:
        ...
    

    python中没有switch语句。

    while循环:
    Python中while语句的一般形式:

    count = 0
    while count < 5:
       print (count, " 小于 5")
       count = count + 1
    else:
       print (count, " 大于或等于 5")
    

    for循环:

    sites = ["Baidu", "Google","Runoob","Taobao"]
    for site in sites:
        print("循环数据 " + site)
    else:
        print("没有循环数据!")
    print("完成循环!")
    

    除此之外还有python内置的range函数。
    4.字典、列表和元组
    这三个是python中最常用到的数据结构,字典和列表也是大部分编程语言中最常用到的数据结构。
    字典
    字典是另一种可变容器模型,且可存储任意类型对象。

    字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

    d = {key1 : value1, key2 : value2 }
    

    键必须是唯一的,但值则不必。

    值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

    一个简单的字典实例:

    dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    

    也可如此创建字典:

    dict1 = { 'abc': 456 }
    dict2 = { 'abc': 123, 98.6: 37 }
    

    访问字典中的元素:
    dict1['abc']
    字典的常用api:


    image.png

    列表:
    序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

    Python有6个序列的内置类型,但最常见的是列表和元组。

    序列都可以进行的操作包括索引,切片,加,乘,检查成员。

    此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

    列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

    列表的数据项不需要具有相同的类型

    创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

    list1 = ['Google', 'Runoob', 1997, 2000];
    list2 = [1, 2, 3, 4, 5 ];
    list3 = ["a", "b", "c", "d"];
    

    与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。
    常用api:


    image.png

    此外,列表中最强大的还有切片操作。
    元组:
    Python 的元组与列表类似,不同之处在于元组的元素不能修改。

    元组使用小括号,列表使用方括号。

    元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

    如下实例:

    tup1 = ('Google', 'Runoob', 1997, 2000);
    tup2 = (1, 2, 3, 4, 5 );
    tup3 = "a", "b", "c", "d"; # 不需要括号也可以
    type(tup3)

    创建空元组

    tup1 = ();
    元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:

    tup1 = (50)
    type(tup1)     # 不加逗号,类型为整型
    <class 'int'>
    
    tup1 = (50,)
    type(tup1)     # 加上逗号,类型为元组
    

    元组与字符串类似,下标索引从0开始,可以进行截取,组合等。

    访问元组
    元组可以使用下标索引来访问元组中的值,如下实例:

    tup1 = ('Google', 'Runoob', 1997, 2000)
    tup2 = (1, 2, 3, 4, 5, 6, 7 )
    
    print ("tup1[0]: ", tup1[0])
    print ("tup2[1:5]: ", tup2[1:5])
    

    练习:

    登录程序

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # Created by master on  2018/5/15 14:10.
    import os
    import pickle
    
    
    class Login(object):
        login_success = False
        MAX_LOGIN_TIMES = 3
        file_path = "locked.list"
        user_table = {"a": "1", "b": "2", "c": "3"}
        list_locked = {"a": 0, "b": 0, "c": 0}
    
        #写文件
        def write_file(self):
            with open(self.file_path, "wb") as locked_users:
                pickle.dump(self.list_locked, locked_users)
    
        #读文件
        def read_file(self):
            if os.path.exists(self.file_path):
                with open(self.file_path, "rb") as locked_users:
                    return dict(pickle.load(locked_users))
            else:
                self.write_file()
    
        #判断用户是否被锁定
        def is_locked(self, username):
    
            self.list_locked = self.read_file()
    
            return username in self.list_locked and self.list_locked[username] == self.MAX_LOGIN_TIMES
        #登录
        def login(self, username, password):
            if not username or not password:
                print("用户名或密码不能为空!")
                return
            if username not in self.user_table:
                print("用户名或密码错误,请重试!")
                return
            if self.is_locked(username):
                print("当前用户已经被锁定!")
                return
            try_login_times = self.list_locked[username]
    
            if username in self.user_table and password == self.user_table.get(username):
                print("欢迎回来,%s" % username)
                try_login_times = 0
                self.login_success = True
            else:
                print("用户名或密码错误,请重试!还有%s次机会" % (self.MAX_LOGIN_TIMES - (try_login_times + 1)))
                try_login_times = try_login_times + 1
            self.list_locked[username] = try_login_times
            self.write_file()
    
    # 程序入口
    if __name__ == '__main__':
        login = Login()
        while not login.login_success:
            uname = input("请输入用户名:")
            pword = input("请输入密码:")
            login.login(uname, pword)
    
    

    相关文章

      网友评论

          本文标题:python学习笔记01

          本文链接:https://www.haomeiwen.com/subject/eqpmdftx.html