zoukankan      html  css  js  c++  java
  • Day2----Python学习之路笔记(2)

    学习路线:

    Day1    Day2    Day3    Day4    Day5    ...待续 

    一、简单回顾一下昨天的内容

    1. 昨天了解到了一些编码的知识

    1.1. 我们写好的.py文件头没有加# -*- coding:utf-8 -*-这样的声明,那么在Windows终端中调用Python2解释器运行时,文件中的中文会显示乱码,为何?原来我们Windows终端是以GBK编码来读的,而Python2中不是默认的utf8的编码格式。调用Python3解释器就没问题,有中文就不会出现乱码,由此引出Python3的编码格式。

    1.2. Python3中是没有字符这种编码类型的,默认都是字节编码,也就是没有Unicode这种类型,但本质上它又全是Unicode,只是你看着它是字符编码这种类型。(这句话有点拗口)

    1.3. Python3的内部机制:utf-8形式写入文件---->utf-8读到内存中转为Unicode的编码形式---->Windows终端以GBK形式去读的时候,Unicode转换为GBK形式给显示出来。(所以说Python3中没编码声明# -*- coding:utf-8 -*-,中文不会乱码)

    1.4. utf-8和GBK编码并不能直接转换,中间要借助Unicode编码作为桥梁,其实现原理可以用下面的图表示:

    1.5. 在文件内部用一种形式的编码格式写和存,但我们看的时候一般用另一种编码格式去看的。

    2. 动手开始编写了一些简单代码

    2.1. 学习了用Python语言写一句输出:

    #!/usr/bin/env python  
    # -*- coding: utf-8 -*-  
      
    print('Hello world!')  
      
    输出结果:Hello World! 

    2.2. 学习了Python中变量名的命名规则和注意点

    2.3. 简单学习了基本数据类型中的数字,字符串

    2.4. 学习了if条件语句

    2.5. 简单的while循环

    #continue原理  
    count = 0  
    while count < 10:  
        if count == 7:  #遇到continue直接  
            count += 1  #跳到while条件入口  
            continue   #而后面的代码不执行  
        print(count)  
    print('------end------')  
      
    输出结果:0, 1, 3, 4, 5, 6, 8, 9  
    ------end------  
      
    #break原理  
    count = 0  
    while count < 10:  
        count = count + 1    
        print(count)  
        break           #遇到break直接  
        print(count)     #跳出while循环  
    print('------end------')  
      
    输出结果:1  
    ------end------  

    2.6. 小练习:用户登录(三次重试)

    count = 0  
    while count < 3:  
        user = input('用户名>>>')  
        pwd  = input('密码>>>')  
        if user == 'jack' and pwd == '123'  
            print('登录成功,欢迎使用!')  
            break  
        else:  
            print('用户名或密码错误,请重试!')  
        count = count + 1   #也可以count += 1  

    二、今天的内容

    0. 准备工作

      • 第一天我们主要在Python自带的IDLE和Windows终端中编写Pyhton代码运行,这样初学还可以,可到以后写代码保存管理并不方便,由此我们就需要一个专门的编辑器,或集成开发环境IDE来开发我们的Python程序和管理工程,可以用来写Python的IDE有很多,比如Pycharm、eclipse,Pycharm是专门针对Python的IDE,这里推荐这款,去官网下载即可:http://www.jetbrains.com/pycharm/
      • 下载专业版
      • 用原版,最好不要汉化,因为汉化可能造成有些原版比较方便的功能用不了
      • 虽然专业版是付费版,但是为了学习我们还是有很多办法让他免费的,你懂的,教程如下:http://www.cnblogs.com/shwee/p/8886680.html

    1. Python中的运算符

    1.1. 算数运算符

    算数运算符

    乘方取余取商
    + - * / ** % //

     

    1.2. 逻辑运算符

    逻辑运算符

    等于大于小于大于等于小于等于不等于不等于
    == > < >= <= != <>
           
    and or not        

    PS:布尔(bool)逻辑条件判断(与或非等)的顺序:and/or/not没有优先级,有括号先算括号里面的逻辑表达式计算出布尔值,然后从前到后依次计算判断

      • True or         ---->True
      • True and      ---->继续往后走
      • Flase or        ---->继续往后走
      • Flase and     ---->Flase

    2. 继续学习基本数据类型

    2.1. Python3中六个标准的基本数据类型:

      • Number(数字)
      • String(字符串)
      • Sets(集合)
      • Tuple(元组)
      • List(列表)
      • Dictionary(字典)

    2.2. Python3中六个标准的基本数据类型中:

      • 不可变数据(四个):Number(数字)、String(字符串)、Sets(集合)、Tuple(元组)
      • 可变的类型(两个):List(列表)、Dictionary(字典)

    2.3. Number(数字)

      • Pyhton3支持 int、float、bool、complex(复数)。
      • 在Python3中,只有一种整数类型,为长整型,Python2中有两种:整型和Long
      • Python中type()函数可以用来查询变量所指的对象类型
      • a, b, c, d = 2, 3.5, True, 5+2j  
        print(type(a), type(b), type(c), type(d))  
          
        输出结果:  
        <class 'int'> <class 'float'> <class' bool'> <class 'complex'> 

    2.4. String(字符串)

      • Python中的字符串用单引号('***')、双引号("***")、三引号('''***''')或三双引号("""***""")括起来,使用反斜杠()转义特殊字符

      • 字符串的截取的语法格式是:变量[头下标:尾下标], 索引值从0开始,-1为从末尾的开始位置

      • 字符串的连接符是加号(+),星号(*)表示复制当前字符串,如'abc' * 3,紧跟的数字表示字符串复制的次数

      • str = 'abcde'  
        print (str)          # 输出字符串  
        print (str[0])       # 输出字符串第一个字符  
        print (str[0:-1])    # 输出第一个到倒数第二个的所有字符  
        print (str[1:4])     # 输出从第2个开始到第4个的字符  
        print (str[2:])      # 输出从第三个开始的后的所有字符  
        print (str * 3)      # 输出字符串3次  
        print (str + "fgh") # 连接字符串  
        print ('------end------')  
          
        输出结果:  
        abcde  
        a  
        abcd  
        bcd  
        cde  
        abcdeabcdeabcde  
        abcdefgh  
        ------end------  
      • Python 中使用反斜杠()转义特殊字符,如果不想让反斜杠转义,可以在字符串前面添加一个r,表示原始字符串

      • print("abcdefgh")
        
        输出结果:
        abcde
        fgh
        
        print(r"abcdefgh")
        
        输出结果:
        abcdefgh
      • 另外,反斜杠()可以作为续行符,表示下一行是上一行的延续。也可以使用 """...""" 或者 '''...''' 跨越多行。

        注意,Python 没有单独的字符类型,一个字符就是长度为1的字符串。

      • 与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。

    2.5. Sets(集合)

      • 集合(set)是一个无序不重复元素的序列。

      • 基本功能是进行成员关系测试和删除重复元素。

      • 可以使用大括号 { } 或者 set() 函数创建集合。

      • 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

      • 创建格式:

      • parame = {value1, value2, ...}
        或
        set(value)
      • 实例:
      • student = {'Alex', 'Jim', 'Tom', 'Mary', 'Alex', 'Jack'}
        print(student) # 输出集合,重复的元素被自动去掉
        
        # 成员测试
        if('Tom' in student) :
            print('Tom 在集合中')
        else :
            print('Tom 不在集合中')
        
        # set可以进行集合运算
        a = set('abcdebaeba')
        b = set('ahbcdm')
        print(a)
        print(a - b) # a和b的差集
        print(a | b) # a和b的并集
        print(a & b) # a和b的交集
        print(a ^ b) # a和b中不同时存在的元素
        print('------end------')
        
        输出结果:
        {'Jack', 'Alex', 'Jim', 'Tom', 'Mary'}
        Tom 在集合中
        {'d', 'a', 'b', 'c', 'e'}
        {'e'}
        {'d', 'h', 'a', 'b', 'c', 'm', 'e'}
        {'d', 'a', 'b', 'c'}
        {'e', 'm', 'h'}
        ------end------
      • 例子:
    
    

    2.6. Tuple(元组)

      • 元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
      • tup1 = ()       # 空元组
        tup2 = (20,)    # 一个元素,需要在元素后添加逗号
        tup2[0] = 10    # 修改元组元素的操作是非法的
        
        终端错误提示:
        Traceback (most recent call last):
          File "<pyshell#1>", line 1, in <module>
            tup2[0] = 10
        TypeError: 'tuple' object does not support item assignment
      • 元组中的元素类型也可以不相同:
      • 元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取。
      • 其实,可以把字符串看作一种特殊的元组。
      • 实例:
      • tuple1 = ( 'abc', 123 , 1.23, 'dashen', 45.6 )
        tuple2 = (123, 'dashen')
        print (tuple1)          # 输出完整元组
        print (tuple1[0])       # 输出元组的第1个元素
        print (tuple1[1:3])     # 输出从第2个元素开始到第3个元素
        print (tuple1[1:])      # 输出从第2个元素开始的所有元素
        print (tuple2 * 3)      # 输出3次元组
        print (tuple1 + tuple2) # 连接两个元组
        print('------end------')
        
        输出结果:
        ('abc', 123, 1.23, 'dashen', 45.6)
        abc
        (123, 1.23)
        (123, 1.23, 'dashen', 45.6)
        (123, 'dashen', 123, 'dashen', 123, 'dashen')
        ('abc', 123, 1.23, 'dashen', 45.6, 123, 'dashen')
        ------end------
     
      • 虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
      • 构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
      • tup1 = ()    # 空元组
        tup2 = (20,) # 一个元素,需要在元素后添加逗号
      • string、list和tuple都属于sequence(序列)。
      • 注意:
        • 1、与字符串一样,元组的元素不能修改。
        • 2、元组也可以被索引和切片,方法一样。
        • 3、注意构造包含0或1个元素的元组的特殊语法规则。
        • 4、元组也可以使用+操作符进行拼接。

    2.7. List(列表)

      • List(列表)是 Python 中使用最频繁的数据类型。
      • 列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
      • 列表是写在方括号([])之间、用逗号分隔开的元素列表。
      • 和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
      • 列表截取的语法格式如下:
      • 变量[头下标:尾下标]
      • 索引值以 0 为开始值,-1 为从末尾的开始位置。
      • 加号(+)是列表连接运算符,星号(*)是重复操作。
      • 实例
      • list1 = ['abc', 123 , 1.23, 'dashen', 45.6 ]
        list2 = [123, 'dashen']
        print (list1)          # 输出完整列表
        print (list1[0])       # 输出元组的第1个元素
        print (list1[1:3])     # 输出从第2个元素开始到第3个元素
        print (list1[1:])      # 输出从第2个元素开始的所有元素
        print (list2 * 3)      # 输出3次列表(list2)
        print (list1 + list2)  # 连接两个列表
        print('------end------')
        
        输出结果:
        ['abc', 123, 1.23, 'dashen', 45.6]
        abc
        [123, 1.23]
        [123, 1.23, 'dashen', 45.6]
        [123, 'dashen', 123, 'dashen', 123, 'dashen']
        ['abc', 123, 1.23, 'dashen', 45.6, 123, 'dashen']
        ------end------
      • 与Python字符串不一样的是,列表中的元素是可以改变的:
      • 实例
      • >>> a = [1, 2, 3, 4, 5, 6]
        >>> a[0] = 7
        >>> a[2:5] = [8, 9, 10]
        >>> a
        [7, 2, 8, 9, 10, 6]
        >>> a[2:] = []    #将对应的元素值置为[]
        >>> a
        [7, 2]
        >>> 
      • List内置了有很多方法,例如append()、pop()等等,我们把这些方法称为魔法,后面继续学。
      • 注意:
        • 1、List写在方括号之间,元素用逗号隔开。
        • 2、和字符串一样,list可以被索引和切片。
        • 3、List可以使用+操作符进行拼接。
        • 4、List中的元素是可以改变的。

    2.8. Dictionary(字典)

      • 字典(dictionary)是Python中另一个非常有用的内置数据类型。
      • 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
      • 字典是一种映射类型,字典用"{ }"标识,它是一个无序的键 : 值(key: value)对集合。
      • 键(key)必须使用不可变类型,在同一个字典中,键(key)必须是唯一的。
      • 实例
      • dict1 = {}                     #建一个空字典
        dict1['key1'] = "Python"
        dict1[1] = "study"
        dict2 = {'name': 'shw', 'age':18, 'home': 'chongqing'}
        print (dict1['key1'])         # 输出键为 'key1' 的值
        print (dict1[1])               # 输出键为 1 的值
        print (dict1)                  # 输出完整的字典dict1
        print (dict2)                  # 输出完整的字典dict2
        print (dict2.keys())           # 输出所有键
        print (dict2.values())         # 输出所有值
        print('------end------')
        
        输出结果:
        Python
        study
        {'key1': 'Python', 1: 'study'}
        {'name': 'shw', 'age': 18, 'home': 'chongqing'}
        dict_keys(['name', 'age', 'home'])
        dict_values(['shw', 18, 'chongqing'])
        ------end------
      • 构造函数 dict() 可以直接从键值对序列中构建字典如下:
      • 实例
      • #终端命令行运行
        >>> dict(name = 'shw', age = 18, home = 'chongqing')
        {'name': 'shw', 'age': 18, 'home': 'chongqing'}
        
        >>> dict([('name', 'shw'), ('age', 18), ('home', 'chongqing')])
        {'name': 'shw', 'age': 18, 'home': 'chongqing'}
        
        >>> {x: x**3 for x in (2, 3, 4)}
        {2: 8, 3: 27, 4: 64}
      • 字典类型也有一些内置的函数,例如clear()、keys()、values()等等,我们叫这样的方法为魔法。
      • 注意:
        • 1、字典是一种映射类型,它的元素是键值对。
        • 2、字典的关键字必须为不可变类型,且不能重复。
        • 3、创建空字典使用 { }

    3. Python数据类型转换

      • 有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。
      • 下面的一些内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。
    函数描述

    int(x [,base])

    将x转换为一个整数

    float(x)

    将x转换到一个浮点数

    complex(real [,imag])

    创建一个复数

    str(x)

    将对象 x 转换为字符串

    repr(x)

    将对象 x 转换为表达式字符串

    eval(str)

    用来计算在字符串中的有效Python表达式,并返回一个对象

    tuple(s)

    将序列 s 转换为一个元组

    list(s)

    将序列 s 转换为一个列表

    set(s)

    转换为可变集合

    dict(d)

    创建一个字典。d 必须是一个序列 (key,value)元组。

    frozenset(s)

    转换为不可变集合

    chr(x)

    将一个整数转换为一个字符

    ord(x)

    将一个字符转换为它的整数值

    hex(x)

    将一个整数转换为一个十六进制字符串

    oct(x)

    将一个整数转换为一个八进制字符串

     

  • 相关阅读:
    Effective Java 19 Use interfaces only to define types
    Effective Java 18 Prefer interfaces to abstract classes
    Effective Java 17 Design and document for inheritance or else prohibit it
    Effective Java 16 Favor composition over inheritance
    Effective Java 15 Minimize mutability
    Effective Java 14 In public classes, use accessor methods, not public fields
    Effective Java 13 Minimize the accessibility of classes and members
    Effective Java 12 Consider implementing Comparable
    sencha touch SortableList 的使用
    sencha touch dataview 中添加 button 等复杂布局并添加监听事件
  • 原文地址:https://www.cnblogs.com/shwee/p/9044564.html
Copyright © 2011-2022 走看看