zoukankan      html  css  js  c++  java
  • python基础

    目录

    计算机基础

    计算机硬件

    计算机硬件的五大组成部分

      控制器:指挥系统

      运算器:数学运算+逻辑运算

      存储器:存取数据       例如:内存   硬盘   磁带

      输入设备:键盘、鼠标、摄像头

      输出设备:显示器 、打印机

    注意:CPU=控制器+运算器

    与运行程序有关的三大核心硬件

      cpu

      内存  存取速度快,断电后数据全部丢失

      硬盘  断电后数据保留,存取速度远远慢于内存

    操作系统

      操作系统本质就是一个软件,功能是专门用来控制硬件的

      操作系统位于计算机硬件与软件之间,用于协调、管理、控制计算机硬件资源与软件资源

      两大功能:

        将复杂的硬件操作封装成简单的功能提供给用户/应用程序使用

        将多个任务对硬件的竞争变得有序

      计算机系统分为三部分:应用软件、操作系统、计算机硬件

    编程语言

      机器语言:直接用二进制编程,直接控制硬件,需要掌握硬件的操作细节        

            优点:执行效率高
            缺点:开发效率低  

      汇编语言:用英文标签取代二进制指令去编写程序,直接控制硬件,需要掌握硬件的操作细节
            优点:开发效率比机器语言高
            缺点:仍然没有改变直接操作硬件的本质,执行效率高,但不如机器语言高

      高级语言:直接用人类的语言去编写程序,不再需要掌握硬件的操作细节     

            编译型:一次性将所有程序编译成二进制文件。
              缺点:开发效率低,不能跨平台。
              优点:运行速度快。
              如:C,C++等等。

            解释型:当程序执行时,一行一行的解释。
              优点:开发效率高,可以跨平台。
              缺点:运行速度慢。
              如:python ,php,等等。

        执行效率由高到低:机器-》汇编-》编译型-》解释型
        开发效率由高到低:解释型-》编译型-》汇编-》机器

    运行python程序的两种方式:
      方式一:交互式:
        优点:输入一行代码立刻返回结果
        缺点:无法永久保存代码
      方式二(命令行):python3 D: est.txt
        优点:以文件的方式将代码永久保存了下来,以后还可以用

    注意:运行python程序是不考虑文件后缀名的,但约定俗成,应该将python程序的后缀名命名为.py

    运行python程序的三个步骤(******)
      1、先启动python解释器
      2、将python程序当中普通的文本文件读入内存(此时没有语法的概念)
      3、python解释器解释执行刚刚读入内存的代码,开始识别python的语法

    python2 与 python3 区别
    宏观上:
      python2 源码不标准,混乱,重复代码太多,
      python3 统一 标准,去除重复代码。

      python2默认编码方式是ascii码,解决方式:在文件的首行:#-*- encoding:utf-8 -*-
      python3 默认编码方式utf-8

    与用户交互  

      程序等待用户输入一些数据,然后程序执行完毕后为用户反馈信息 

        在python3中,input会将用户输入的任何内容都存成字符串类型
         在python2中:raw_input会将用户输入的任何内容都存成字符串类型

        在python2中:input要求用户必须输入一个明确的数据类型,输入什么类型就存成什么类型

    流程控制

    流程控制之if判断

      多分枝
      强调:if的多分枝=但凡有一个条件成立,就不会再往下判断其他条件了

     if 条件1:
         code1
         code2
         code3
         ....
     elif 条件2:
         code1
         code2
         code3
         ....
     elif 条件3:
         code1
         code2
         code3
         ....
     ........
     else:
         code1
         code2
         code3
         ....
    View Code

    流程控制之while循环

      while + break: break代表结束本层循环

    # while + break: break代表结束本层循环
    # user_from_db='egon'
    # pwd_from_db='123'
    #
    # while True:
    #     inp_user=input('please input your username: ')
    #     inp_pwd=input('please input your password: ')
    #     if inp_user == user_from_db and inp_pwd == pwd_from_db:
    #         print('login successfull')
    #         break
    #     else:
    #         print('user or password err')
    View Code

      while+continue:continue代表结束本次循环(本次循环continue之后的代码不在运行),直接进入下一次循环
      强调:continue一定不要作为循环体的最后一步代码

      while + else
         else的代码会在while循环没有break打断的情况下最后运行

    user_from_db='yb'
    pwd_from_db='123'
    
    count=0
    tag=True
    while tag:
         if count == 3:
             print('输错次数过多')
             break
         inp_user=input('please input your username: ')
         inp_pwd=input('please input your password: ')
         if inp_user == user_from_db and inp_pwd == pwd_from_db:
             print('login successfull')
             while tag:
                 cmd=input('>>>: ') # cmd='quit'
                 if cmd == 'quit':
                     tag=False
                     break
                 print('%s run......' %cmd)
         else:
             print('user or password err')
             count+=1 #count=3 # 输错3次

    流程控制之for循环

    names=['yb','zs','yxd','lb']
    i=0
    while i < len(names): #4 < 4
         print(names[i])
         i+=1
    # for循环:可以不依赖索引而取指
    names=['yb','zs','yxd','lb']
    for item in names:
         print(item)
    
    dic={'x':1,'y':2,'z':3}
    for k in dic: #k='x'
        print(k,dic[k])
    
    """
    x 1
    y 2
    z 3
    """

    for vs while

      for可以不依赖于索引取指,是一种通用的循环取指方式

      for的循环次数是由被循环对象包含值的个数决定的,而while的循环次数是由条件决定的

    '''
    1*1=1
    2*1=2 2*2=4
    3*1=3 3*2=6 3*3=9
    ...
    9*1=9.................9*9=81
    '''
     for i in range(1,10): #i=3
         for j in range(1,i+1):
             print('%s*%s=%s ' %(i,j,i*j),end='') #i=2 j=2
         print()
    九九乘法表
    '''            max_level=5
        *          current_level=1 空格数=4 星号=1
       ***         current_level=2 空格数=3 星号=3
      *****        current_level=3 空格数=2 星号=5
     *******       current_level=4 空格数=1 星号=7
    *********      current_level=5 空格数=0 星号=9
    '''
    max_level=10
    for current_level in range(1,max_level+1):
        # 先不换行打印打印空格
        for x in range(max_level-current_level):
            print(' ',end='')
        # 再不换行打印*
        for y in range(2*current_level - 1):
            print('*',end='')
        print()
    打印金字塔

     字符编码

    字符------编码(字符编码表)------->二进制
    
            ASCII:只能表示英文字符,用1Bytes对应一个英文字符
                内存:ASCII
                硬盘:ASCII
    
            GBK:可以表示中文和英文字符,用1Bytes对应一个英文字符,2Bytes对应一个中文字符
                内存:GBK
                硬盘:GBK
    
            Shift-JIS:
                内存:Shift-JIS
                硬盘:Shift-JIS
    
            Euc-kr:
                内存:Euc-kr
                硬盘:Euc-kr
    
            unicode: 可以对应万国字符,统一用2Bytes对应一个字符
                内存:unicode
    
                两大特点:
                    1 可以兼容万国字符
                    2 与万国字符编码都有一种数字与数字的对应关系
                        GBK数字-----解码decode----->unicode数字
                        Shift-JIS数字-----解码decode----->unicode数字
    
                        GBK数字<-----编码encode-----unicode数字
                        UTF-8数字<-----编码encode-----unicode数字
            utf-8:
                3Bytes对应一个中文字符
                1Bytes对应一个英文字符
    
    
            保证不乱码的关键:
                1 字符当初以什么编码的,就应该以什么编码取解码
    
                    强调:此时计算机只使用unicode与字符的对应关系
    
    
            python test.py
            在python2中:
                1 (执行python程序的第二个阶段)解释器在将test.py当普通的文本文件读入内存时默认使用的编码是ASCII
                2 有两种字符串类型:
                    str:x="" # 文件头指定的编码格式的二进制
                    unicode:x=u"" # 存成unicode格式的二进制
    
                    ps:pyhon2中unicode就是python3的str类型
    
            在python3中:
                1 (执行python程序的第二个阶段)解释器在将test.py当普通的文本文件读入内存时默认使用的编码是UTF-8
                2 (执行python程序的第三个阶段,开始识别语法),会字符类型的值开辟一个内存空间存入unicode格式的二进制
                    即python3中的str类型是unicode编码的二进制
    
                3 字符串类型
                    1 str: x="" # 存成unicode格式的二进制
                4 字节串(等同于二进制)
                    字节串=str.encode('utf-8')
    
            文件头:
                在文件首行写上:coding:utf-8
                就是在告诉python解释器,不要用其默认的编码,用文件头指定的编码

    扫盲知识点:

    1.输入输出统称为Input/Output,或者简写为IO
        2.在字符串中,r"
    ",r""表示字符串内部默认不转义,那么打印出来的结果中就会显示
    之类的转义字符
            如果字符串内既包含‘又包含“,且两者都是要被打印出来的,那么此时在符号的左侧加上来标识
        3.布尔值的与或非
            and运算,只有所有都为True,and结果才是True
            or运算,其中一个为True,or运算结果就是True
            not运算是非运算,它是一个单目运算符,把True改为False或者把False改为True
        4.全部大写的变量表示常量
        5.字符编码
            8比特(bit)=1字节    一个字节表示的最大的整数就是255
            Unicode 用两个字节表示一个字符(偏僻字符需要4个字节)
            UTF-8    常用英文字母1个字节 
                    汉字3个字节
                    生僻字符4-6个字节
                    
            ps:python提供了  ord()函数获取字符的整数表示  例如ord('A')打印出来就是65
                            chr()函数把编码转换为对应的字符  chr(66)打印出来就是 B
            
            占位符
                %d    整数
                %f    浮点数
                %s    字符串
                %x    十六进制整数    
                print('%2d-%02d' % (3, 1)) #%2d指的是两位整数,%02d是两位整数,不足用0在前面补齐
                print('%.2f' % 3.1415926)  #%.2f指的是保留两位小数
    
                format()方法
                #'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
                #'Hello, 小明, 成绩提升了 17.1%'
                
        6.列表list
            insert()    把元素插入指定的位置    #classmates.insert(1, 'Jack')
            pop()        删除list末尾的元素        #classmates.pop()
                        删除指定位置的元素,用pip(i)    #classmates.pop(1)
        7.元组touple
            python在显示只有一个元素的touple,也会加一个逗号,以免误解成数学计算意义上的括号
            当一个元组中某元素为列表,可以对列表进行索引改值操作,例如: t = ('a', 'b', ['A', 'B'])
        
        8.if判断
            if x:
                print('True')
            只要x是非零数值,非空字符串,非空list,就判断为True,否则为False
        
        9.再议input
            birth = input('birth: ')
            if birth < 2000:
                print('00前')
            else:
                print('00后')      #当输入1982的时候,报错
            原因:input返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数
                即    s = input('birth: ')
                    birth = int(s)
        
        10.字典dict
            全称dictionary,在其他语言中,也称map,使用键值对存储
            注意:在dict的get()的方法中,如果不存在,返回None,返回None的时候Python交互环境不显示结果
                删除一个key,用pop(key),对应的value也会从dict中删除
                
                dict的key是不可变对象
                    在python中,字符串,整数等都是不可变的,因此可以作为key,而list是可变的,就不能作为key
                
            dict和list的比较
                dict:
                    1.查找和插入的速度极快,不会随着key的增加而变慢
                    2.需要占用大量的内存,内存浪费多
                list:
                    1.查找和插入的时间随着时间的增加而增加
                    2.占用空间小,浪费内存很少
            
            哈希算法:通过key计算位置的算法
            
        11.集合set
            去重性:可以重复添加add(key)相同元素,但是不会有效果
            
            删除元素可以用remove(key)方法
            sort():对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。
            
        12.函数
            可以把函数赋给一个变量,相当于给这个函数起了一个别名
            
            isinstance(object,type)是Python中的一个内置函数,用来判断一个函数是否是一个已知的类型,类似 type()。
            
            raise的用法(显示引发异常):
                1.当程序出错时,python会自动触发异常,也可以用过raise显示引发异常
                2.一旦执行了raise语句,raise之后的语句不在执行
                3.如果加入了try,except,那么except里的语句会被执行
                
            可变参数:就是传入的参数个数是可变的
                        定义可变参数,在参数前面加一个*
                        #nums = [1, 2, 3],*nums表示把nums这个list的所有元素作为可变参数传进去。
            关键字参数
                def person(name, age, **kw):
                    print('name:', name, 'age:', age, 'other:', kw)
                    #extra = {'city': 'Beijing', 'job': 'Engineer'},
                    #**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数
            命名关键字参数
                def person(name, age, *, city, job):
                    #和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。
                def person(name, age, *args, city, job):
                    #如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了
                    
            *args 是可变参数,args接收的是一个tuple
            **kwargs 是关键字参数,kwargs接收的是一个dict
    扫盲知识点整理1
  • 相关阅读:
    js 数组扁平
    leetcode 15 三数之和
    leetcode 1 两数之和
    编写一个自定义事件类,包含on/off/emit/once方法
    css常见双栏和三栏布局
    关于js中this指向的问题
    函数防抖和节流
    ie6 js报错汇总
    windows PHP配置随笔
    上传文件表单file,限制上传文件类型的方法--参数accept
  • 原文地址:https://www.cnblogs.com/sanqiansi/p/10000346.html
Copyright © 2011-2022 走看看