美文网首页Python基础python社区Python
Python学习--最完整的基础知识大全

Python学习--最完整的基础知识大全

作者: C语言中文社区 | 来源:发表于2018-12-11 21:57 被阅读202次

    前面两篇文章分别介绍了Python的环境搭建和基本工具
    Python学习--环境搭建
    Python学习--工具介绍
    本篇介绍Python的基础知识,关于python的基础知识学习,网上有很多资料,今天我就把我收藏的整理一下分享给大家!

    下面是我基础学习时的一点记录:

    python3 循环语句

    1. while

    n=10
    sum = 0
    counter = 1
    while counter < n:
        sum = sum + counter
        counter += 1
    print("1到%d之和为:%d" %(n, sum))
    
    #while 循环使用 else 语句
    count = 0
    while count < 5:
       print (count, " 小于 5")
       count = count + 1
    else:
       print (count, " 大于或等于 5")
    

    2. for

    #可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长')
    for i in range(0, 10, 3):
        print(i)
    
    for i in range(-10, -100, -30):
        print(i)
    
    a_list = ['google', 'baidu', 'ie', 'firefox', '360']
    for i in range(len(a_list)):
        print(i, a_list[i])
    #使用range创建列表
    b_list = list(range(8))
    print(b_list)
    

    3. break和continue

    #使用break终止循环
    for letter in 'helloworld':
        if letter == 'r':
            break
        print("当前字母为:", letter)
    #使用continue跳过循环
    for letter in 'helloworld':
        if letter == 'l':
            continue
        print("当前字母为:", letter)
    

    4. pass语句

    #说明:pass就是一条空语句。在代码段中或定义函数的时候,如果没有内容,或者先不做任何处理,直接跳过,就可以使用pass。
    for letter in 'helloworld':
        if letter == 'l':
            pass
            print("执行pass块")
        print("当前字母为:", letter)
    

    5. 使用enumerate函数进行遍历

    c_list = [12, 34, 56, 78, 90]
    for i, j in enumerate(c_list):
        print(i, j)
    

    6. 小练习

    循环练习
    for i in range(1, 6):
        for j in range(1, i+1):
            print('*',end='')
        print('\r')
    
    9*9乘法表
    for i in range(1, 10):
        for j in range(1, i+1):
            print("%d * %d = %d" %(j, i, i*j), end='\t')
        print('\r')
    
    冒泡排序
    def paixu(d_list):
        for i in range(0, len(d_list)):
            for j in range(i+1, len(d_list)):
                if d_list[i] >= d_list[j]:
                    tmp = d_list[i]
                    d_list[i] = d_list[j]
                    d_list[j] = tmp
        print(d_list)
    li = [32, 23, 65, 32, 76, 79, 56, 89, 12]
    paixu(li)
    

    Python3 迭代器与生成器

    迭代器

    迭代器是一个可以记住遍历的位置的对象。

    迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

    迭代器有两个基本的方法:iter() 和 next()。

    import sys
    
    it = iter(c_list)
    print(c_list)
    print(next(it))
    for x in it:
        print(x, end=' ')
    
    it1 = iter(c_list)
    while True:
        try:
            print(next(it1))
        except StopIteration:
            sys.exit()
    

    生成器

    在 Python 中,使用了 yield 的函数被称为生成器(generator)。
    调用一个生成器函数,返回的是一个迭代器对象。
    在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

    生成器函数
    def fibonacci(n):
        a = 0;
        b = 1;
        counter = 0;
        while True:
            if (counter > n):
                return
            yield a
            a, b = b, a + b
            counter += 1
    #生成器函数返回一个迭代器
    fibo = fibonacci(10)
    
    while True:
        try:
            print(next(fibo), end=' ')
        except:
            sys.exit()
    

    函数

    函数传入不定长参数

    #加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。
    def printinfo(arg1, *vartuple):
        "打印任何传入的参数"
        print("输出:")
        print(arg1)
        for var in vartuple:
            print(var)
        return
    
    printinfo(10)
    printinfo(10, 20, 30)
    

    匿名函数

    python 使用 lambda 来创建匿名函数。
    所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

    • lambda 只是一个表达式,函数体比 def 简单很多。
    • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
    • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

    虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
    sum = lambda arg1, arg2: arg1 + arg2
    print(sum(10,20))

    变量的作用域

    Python中变量的作用域一共有4种,分别是:

    • L (Local) 局部作用域
    • E (Enclosing) 闭包函数外的函数中
    • G (Global) 全局作用域
    • B (Built-in) 内建作用域

    以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。

    B = int(2.9)  # 内建作用域
    
    G = 0  # 全局作用域
    def outer():
        E = 1  # 闭包函数外的函数中
        def inner():
            L = 2  # 局部作用域
    

    一个完整的demo

    import pickle
    import os
    
    datafile = 'C:\\Users\\root\\Desktop\\PyDemo\\person.data'
    line = '#########################################'
    message = '''
    #######################################
    *Welcome bookmark:                    *
    *    press 1 to show list             *
    *    press 2 to add pepole            *
    *    press 3 to edit pepole           *
    *    press 4 to delete pepole         *
    *    press 5 to search pepole         *
    *    press 6 to show menu             *
    *    press 0 to quit                  *
    #######################################
    '''
    #打印菜单栏
    print(message)
    
    #创建一个人类,有姓名和电话号两个属性
    class Person(object):
        def __init__(self, name, number):
            self.name = name
            self.number = number
    
    #获取数据
    def get_data(filename = datafile):
        if os.path.exists(filename) and os.path.getsize(filename):
            with open(filename, 'rb') as f:
                return pickle.load(f)
        return None
    
    #写入数据
    def set_data(name, number, filename = datafile):
        personList = {} if get_data() == None else get_data()
        with open(filename, 'wb') as f:
            personList[name] = Person(name, number)
            pickle.dump(personList, f)
    
    #保存字典格式的数据到文件
    def save_data(dictPerson, filename = datafile):
        with open(filename, 'wb') as f:
            pickle.dump(dictPerson, f)
    
    #显示所有联系人信息
    def show_all():
        personList = get_data()
        if personList:
            for v in personList.values():
                print(v.name, v.number)
            print(line)
        else:
            print('空空如也,请添加联系人!')
            print(line)
    
    #添加联系人
    def add_person(name, number):
        set_data(name, number)
        print('添加联系人成功!')
        print(line)
    
    #更新联系人
    def edit_person(name, number):
        personList = get_data()
        if personList:
            if name in personList.keys():
                personList[name] = Person(name, number)
                save_data(personList)
                print('更改联系人信息成功!')
            else:
                print('查无此人', name, ',请重试!')
            print(line)
    
    #删除联系人
    def del_person(neme):
        personList = get_data()
        if personList:
            if name in personList:
                del personList[name]
                save_data(personList)
                print('删除联系人成功!')
            else:
                print(name, '不存在!')
        print(line)
    
    #查询联系人
    def find_person(name):
        personList = get_data()
        if personList:
            if name in personList.keys():
                print(personList.get(name).name, personList.get(name).number)
            else:
                print('查无此人!', name)
        print(line)
    
    while True:
        num = input('>>>')
    
        if num == '1':
            print('查看所有联系人:')
            show_all()
        elif num == '2':
            print('添加联系人:')
            name = input('请输入联系人姓名 >>')
            number = input('输入联系人电话号 >>')
            add_person(name, number)
            show_all()
        elif num == '3':
            print('更新联系人:')
            name = input('请输入联系人姓名 >>')
            number = input('输入联系人电话号 >>')
            edit_person(name, number)
            show_all()
        elif num == '4':
            print('删除联系人:')
            name = input('请输入联系人姓名 >>')
            del_person(name)
            show_all()
        elif num == '5':
            print('查找联系人:')
            name = input('请输入联系人姓名 >>')
            find_person(name)
        elif num == '6':
            print(message)
        elif num == '0':
            break
        else:
            print('输入错误,请重试!')
    

    相关文章

      网友评论

        本文标题:Python学习--最完整的基础知识大全

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