当前位置 博文首页 > xuyanwei5的博客:python开发基础 从入门到放弃

    xuyanwei5的博客:python开发基础 从入门到放弃

    作者:[db:作者] 时间:2021-08-29 19:32

    python学习笔记

    第一章 计算机的初步认识

    1.1计算机的组成

    1. 硬件:cpu ( 中央处理器. 相当于人的大脑.运算中心,控制中心),内存(临时存储数据. 优点:读取速度快。 缺点:容量小,造价高,断电即消失),硬盘(长期存储数据. 优点:容量大,造价相对低,断电不消失。 缺点:读取速度慢),主板,U盘,显卡,网卡,鼠标,显示器等

    2. 软件:操作系统(统一管理计算机软硬件资源的程序)包括win7.10.xp/linux(centos,ubuntu,rethat)/mac,应用软件等

    在这里插入图片描述

    1.2认识python

    # ### (1)python 简介
        89年开发的语言,创始人范罗苏姆(Guido van Rossum),别称:龟叔(Guido). 
        python具有非常多并且强大的第三方库,使得程序开发起来得心应手. 
        Python程序员的信仰:人生苦短,我用python!
        开发方向: 机器学习人工智能 ,自动化运维&测试 ,数据分析&爬虫 ,python全栈开发
     
    # ### (2)python 版本
        python 2.x 版本,官方在 2020 年停止支持,原码不规范,重复较多
        python 3.x 版本,功能更加强大且修复了很多bug,原码清晰,简单
    
    # ### (3)编译型与解释型语言区别:
    	编译型:一次性,把所有代码编译成机器能识别的二进制码,在运行
    		代表语言:c,c++
    		优点: 执行速度块
    		缺点: 开发速度慢,调试周期长
    		
    	解释型:代码从上到下一行一行解释并运行 
    		代表语言:python,php
    		优点: 开发效率快,调试周期短
    		缺点: 执行速度相对慢
    	*linux 操作系统默认支持python语言,可直接使用
    
    # ### (4)python的解释器:
        (1)Cpython(官方推荐)
        	把python转化成c语言能识别的二进制码
        (2)Jpython
        	把python转化成java语言能识别的二进制码
        (3)其他语言解释器
        	把python转化成其他语言能识别的二进制码
        (4)PyPy
        	将所有代码一次性编译成二进制码,加快执行效率(模仿编译型语言的一款python解释器)
    
    

    龟叔

    1.2编译器/解释器/虚拟机安装

    2.2.1下载

    • python2.7.16(2020年不再更新)
    • python3.6.8(*)

    2.2.2安装

    2.2.3添加环境变量
    添加环境变量

    • 填入你安装的文件路径

    • 开发工具:pycharms/文本编译器

    2.2.4打开终端运行

    安装成功

    1.3python第一个脚本

    • 打开电脑终端(功能键+R)

    • 输入命令:解释器路径 脚本路径(.py)

      print('你好')
      

    1.4编码

    1.4.1分类

    • ASCII:(python2默认编码),英文,8位表示一个元素。2**8

      8位 = 一字节

    • Unicode:万国码,32位表示一个元素。2**32

      32位 = 四字节

      • ecs2:二字节
      • ecs4:四字节
    • Utf-8:(python3默认编码),给万国码压缩,以8位为单位(*)

      最少一字节,最多4字节,中文三字节

    • utf-16:

    • gbk:中文两字节

    • gb2312:中文两字节

    • 单位: 8bit = 1byte

      ? 1024byte = 1KB

      ? 1024KB= 1MB

      ? 1024MB = 1GB

      ? 1024GB = 1TB

    1.4.2python2解释器编码转换

    ? 修改默认解释器编码

    # -*-  coding :utf-8 -*-
    

    1.4.3文件编码

    • 编写文件时,要用 utf-8 格式
    • 以什么编码保存就用什么编码打开

    1.5解释器

    #!/usr/bin/env python 在Linux中指定解释器编码
    # -*- coding:utf-8 -*-
    

    1.6输出

    print(想要输出的内容)
    
    • 特殊
      • py2:print“你好”
      • py3:print(“你好”)

    1.7输入

    input(需要输入的内容)
    
    user_name = input('请输入用户名')
    password = input("请输入密码")
    #用户名和密码拼接
    count = "你的用户名是"  +  user_name + ";你的密码是:" +  password
    
    
    print (count)
    

    py版本区别

    • py2:raw_input(“请输入姓名”)
    • py3: input(“请输入姓名”)

    1.8进制

    • 二进制(计算机内部)
      • 00、01、10、11、100、101···
    • 八进制
      • 1、2、3、4、5、6、7、10、11···
    • 十进制(日常生活计算)
      • 1、2、3、4、5、6、7、8、9、10、11···
    • 十六进制
      • 1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、10、11···

    1.8.1 二进制 转化成 十进制

    #例:	0b10100101  
    '''
    运算:1* 2^0 + 0* 2^1 + 1* 2^2 + 0* 2^3 + 0* 2^4 + 1* 2^5 + 0* 2^6 + 1* 2^7= 
    1 + 0 + 4 + 0 + 0 + 32 + 0 + 128 = 165
    '''
    

    1.8.2 八进制 转化成 十进制

    #例:	0o127
    '''
    运算:7*8^0 + 2*8^1 + 1*8^2 = 7+16+64 = 87
    '''
    

    1.8.3 十六进制 转化成 十进制

    #例:	0xff
    '''
    运算:15*16^0 + 15*16^1 = 255
    '''
    

    1.8.4 十进制 转化成 二进制

    426 => 0b110101010  
    '''
    运算过程:   用426除以2,得出的结果再去不停地除以2,
    			直到除完最后的结果小于2停止,
    			在把每个阶段求得的余数从下到上依次拼接完毕即可
    '''
    

    1.8.5 十进制 转化成 八进制

    426 => 0o652
    '''
    运算过程:   用426除以8,得出的结果再去不停地除以8,
    			直到除完最后的结果小于8停止,
    			在把每个阶段求得的余数从下到上依次拼接完毕即可
    '''
    

    1.8.6 十进制 转化成 十六进制

    '''
    运算过程:   用426除以16,得出的结果再去不停地除以16,
    			直到除完最后的结果小于16停止,
    			在把每个阶段求得的余数从下到上依次拼接完毕
    '''
    

    1.8.7 二进制与八进制转换

    '''
    二进制与八进制对应关系:
    八进制  二进制
    0		000
    1		001
    2		010
    3		011
    4		100
    5		101
    6		110
    7		111
    '''
    
    例:1010100101
    八进制:从右向左 3位一隔开 不够三位用0补位 变成:
    001 010 100 101
    0o   1    2   4   5
    

    1.8.8 二进制与十六进制转换

    十六进制  二进制
    0		  0000
    1		  0001
    2		  0010
    3		  0011
    4		  0100
    5		  0101
    6		  0110
    7		  0111
    8		  1000
    9		  1001
    a		  1010
    b		  1011
    c		  1100
    d		  1101
    e		  1110
    f		  1111
    
    例:1010100101
    十六进制:从右向左 4位一隔开 不够四位用0补位 变成:
    0010 1010 0101 
    0x2a5
    

    1.8.9 八进制 与 十六进制的转换

    先转换成二进制 再去对应转换 
    比如:0x2a5 转换成 1010100101 再转8进制 0o1245
    

    1.9原码,反码,补码

    # 1.原码 或 补码 都是二进制数据  
        原码: 二进制的表现形式
        反码: 二进制码0变1,1变0叫做反码,[原码][补码]之间的转换形式.(首位符号位不取反)
        补码: 二进制的存储形式     
    
    	数据用[补码]形式存储
    	数据用[原码]形式显示
        [原码] 和 [补码] 可以通过[反码]互相转化,互为取反加1
    
    # 2.提出补码的原因
    	补码的提出用于表达一个数的正负(可实现计算机的减法操作)
    	计算机默认只会做加法,实现减法用负号: 5+(-3) => 5-3
    	乘法除法:是通过左移和右移 << >> 来实现
    
    # 3.[原码]形式的正负关系:
        原码特点: 第一位是1
               00000000 1  表达数字正1
               10000000 1  表达数字负1
           
    # 4.[补码]形式的正负关系:
        补码特点: 高位都是1
               00000000 1  表达数字正1
               11111111 1  表达数字负1
    
    # 5.运算顺序:
        补码 -> 原码 -> 最后人们看到的数
        ***进制转换的时候需要先把内存存储的补码拿出来变成原码在进行转换输出***
    
        转换规律:
            如果是一个正数:  原码 = 反码 = 补码
            如果是一个负数:  原码 与 反码 之间 ,  互为取反加1 
                           原码 = 补码取反加1   给补码求原码
                           补码 = 原码取反加1   给原码求补码
    
    

    1.9变量

    变量:可以变化的量
    为某个值创建一个昵称,以后在使用可直接调用

    1.9.1要求

    1.变量名只能包含: 字符串/数字/下划线,首字符不能是数字
    2.见名知意:变量命名有意义
    3.不能用python关键字
    4.不能使用中文(占用内存大)

    1.10注释

    (1)注释的分类 : 1.单行注释 2.多行注释
    
        # 1.单行注释   以#号开头 ,右边的所有东西都被当做说明文字 ,程序不进行编译运行。
        print(‘hello world’)
        
        # 2.多行注释   三个单引号 或 三个双引号
        '''
        这是第一行
        这是第二行
        '''
        
    (2)注释的注意点
    	如果外面使用三个单引号,里面使用三个双引号,反之亦然。
    (3)注释的排错性
    	先注释一部分代码,然后执行另外一部分,看看是否报错,逐层缩小报错范围,找到最终错误点。
    

    1.11条件判断

    • 判断数据类型 isinstance
     '''
     语法: 
     	用法一
     	isinstance(要判断的值,要判断的类型)返回True 或者False
     	用法二
     	isinstance(要判断的值,(可能的类型1,可能类型2,..)返回True 或者False
    '''
    	# 用法一
    	res = isinstance(3,int)
    	res= isinstance('23',tuple)
    	print(res)
    	#用法二
    	res = isinstance([1,3,4,6],(str,dict,set,list))
    	print(res)
    
    • 代码块 : 以冒号作为开始,用于缩进来划分作用域(作用的区域,作用的范围)
    • 流程控制
      • 流程: 对代码执行的过程
      • 控制: 对代码执行过程的一种把控
      • 三大结构:
        • 顺序结构: 默认代码从上到下执行
        • 分支结构: 4 种(单项,多项,双项,巢状)
        • 循环结构 : for while
    #1.单项分支
    if 条件表达式:
    	code
    #条件成立时,返回True,执行对应代码块,反之不执行
    #2. 双项分支
    if 条件表达式:
    	code
    else:
    	code2
    #条件表达式成立,执行if 对应的代码块
    #如果不成立,执行else对应代码块
    #if 代码块也叫真区间
    #else 代码块也叫假区间
    #3. 多项分支
    if 条件表达式1:
    	code1
    elif 条件表达式2:
    	code2
    elif 条件表达式3:
    	code 3
    ...
    else:
    	code...
    
    '''
    如果条件一成立,返回True,执行对应代码块,反之则向下执行
    如果条件二成立,返回True,执行对应代码块,反之则向下执行
    ...
    最后,任何条件都不成立(满足),执行else这个分支的代码块
    '''
     4. 巢状分支:单项,双项,多项分支的相互嵌套
    
    #  巢状练习
    youqian = False
    youfang = False
    youche = False
    youyanzhi = False
    youtili = False
    
    if youqian == True :
        if youfeng == True:
            if yoyanzhi == True :
                if youtili == True :
                    print('老娘今天要嫁给你')
                else :
                    print('恭喜你,备胎一号')
            else:
                print('去韩国整整容')
    else :
        print('出门右拐,二路汽车')
    
    #多项练习:对于性别的判断
    gender = input('请输入性别')
    if gender == '男' :
    	print('再见')
    elif gender == '女':
    	print('来来来')
    else :
        print('好走,不送')
    
    #双项练习:用户名和密码登录
    user_name = input('请输入用户名')
    password = input('请输入密码')
    if  user_name == 'alxe' and password  == 'oldboy' :
       print('欢迎登陆')
    else  :
    	print('用户名或密码错误')
    

    第二章 运算符

    2.1while循环

    特点: 减少冗余的代码,提升代码的效率
    语法:
    	while 条件表达式:
    		code1
    1.初始化一个变量
    2.写上循环的判断条件
    3.自增自减的变量值
    
    # 示例
    count = 1
    while True :
        print(count)
        count += 1
        
    
    #练习:数字一到十
    count = 1
    while count <= 10 :
        print(count)
        count += 1
    
    #练习:输入数字一到十,不含7
    count = 1
    while count <= 10 :
        if count != 7  :
        	print(count)
        count += 1
    
    方法二
    count = 1
    while count <= 10 :
        if count == 7:
            pass
        else:
            print(count)
        count += 1
    
    • 单项循环的练习
    # 1. 打印一行十个小星星
    i = 0
    while i <10:
    	print('*',end='')# 打印不换行
    	i +=1
    # 2. 通过打印变量实现一行十个小星星
    i = 0
    strvar = ''
    while i<10:
    	strvar += '*'
    	i += 1
    print(strvar)
    # 3. 打印一行十个小星星,奇数个为★,偶数个为☆
    i = 0 
    while i < 10:
    	if i % 2 == 0:
    		print('★',end='')
    	else:
    		print('☆',end ='')
    	i += 1	
    # 4. 循环打印十行十列的小星星
    i = 0
    while i < 100:
    	if i % 10 == 9:
    		print()
    	print('*',end='')
    	i += 1
    # 5. 一个循环打印十行十列隔列换色的小星星
    i = 0 
    while i < 100:
    	if i % 2 ==0 :
    		print ('★',end='')
    	else:
    		print('☆',end='')
    	if i % 10 == 9:
    		print()
    	i += 1