python基础

目录

 

 

 

 

计算机基础

计算机硬件

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

  控制器:指挥系统

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

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

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

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

 

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

 

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

  cpu

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

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

 

操作系统

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

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

 

  两大功能:

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

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

 

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

 

编程语言

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

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

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

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

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

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

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

 

运行python程序的两种方式:
  方式一:交互式:
    优点:输入一行代码立刻返回结果
    缺点:无法永久保存代码
  方式二(命令行):python3 D:\test.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"\n",r""表示字符串内部默认不转义,那么打印出来的结果中就会显示\n之类的转义字符
        如果字符串内既包含‘又包含“,且两者都是要被打印出来的,那么此时在符号的左侧加上\来标识
    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

 

posted @ 2018-11-22 12:32  三千丝  阅读(184)  评论(0编辑  收藏  举报