美文网首页
Python基础(一): 注释, 变量, 运算符, 输入输出语句

Python基础(一): 注释, 变量, 运算符, 输入输出语句

作者: 伯wen | 来源:发表于2017-12-07 01:10 被阅读32次

    注释

    • 单行注释: 使用#进行单行注释
    # 这是单行注释
    
    • 多行注释: 使用 ''' '''""" """ 进行多行注释
    '''
    这里是多行注释
    这里是多行注释
    '''
    
    """
    这里是多行注释
    这里是多行注释
    """
    
    • 特殊注释: 中文支持
      • # encoding=utf-8
      • # coding-utf-8
      • # _*_coding:utf-8_*_ (推荐写法)

    变量

    • 定义:
      • 变量名 = 值
      • 变量1, 变量2 = 值1, 值2
      • 变量1 = 变量2 = 值
    a = 10
    
    b, c = 5, 2
    
    d = e = 10
    
    • 为什么产生变量:

      • 方便维护, 一处改, 处处改
      • 节省空间
    • 注意事项:

      • 一个变量只能引用一个值
      • 命名规范:
        • 字母数字下划线, 且不能以数字开头
        • 见名知意
        • 驼峰命名
        • 非关键字
        • 区分大小写
      • 变量名使用前一定要赋值

    数据类型

    • 数据类型: 对程序处理的数据, 进行的分类, 比如整数, 浮点数, 字符串等

    • 为什么区分数据类型

      • 区分存储空间: 使用不同大小的空间存储不同的类型的值, 尽可能减少空间浪费
      • 根据不同数据类型的特性, 做不同的数据处理
        • 6 + 6: 数字相加, 结果是12
        • "6" + "6": 字符串拼接, 结果是"66"
    • 数据类型的常用分类:

      • Numbers (数值类型)
      • Bool (布尔类型)
      • String (字符串)
      • List (列表)
      • Set (集合)
      • Tuple (元组)
      • Dictory (字典)
      • NoneType (空类型)
    • 获取数据的类型: type(数据), 例如: type(6), type("6")

    • 静态类型: 变量类型一经定义, 就不可更改, 比如 a = 10, a的类型是Int, 不能改成Str类型, 即只能引用Int类型数据, 不能引用其他数据类型的数据

    a = 10     # a的类型为Int
    a = "10"   # 静态类型不能引用其他类型的数据, 报错
    
    • 动态类型: 变量在定义之后, 可以改变类型, 比如 a = 10, 此时a为Int类型, a = "10", 此时a为Str类型
    a = 10     # a的类型为Int
    a = "10"   # 的类型为Str
    
    • 强类型: 数据定义后, 类型不会轻易改变, 比如 a = "1", 执行 b = a + 1, 此时a的类型不会变为Int, 1也不会变为"1", 所以执行直接报错
    a = "1"
    b = a + 1  # 强类型, 报错
    
    • 弱类型, 数据定义后, 类型会发生改变, 比如a = "1", 指定 b = a + 1, 此时1的类型可能变成Str, 最后b的结果是11
    a = "1"
    b = a + 1  # 弱类型, 结果为 b = "11"
    

    Python是强类型的, 动态类型的语言

    运算符

    • 算数运算符
    加: "+"        
        a = 1 + 2, 结果 a = 2
    减: "-"        
        b = 5 - 3, 结果 b = 2
    乘: "*"        
        c = 2 * 3, 结果 c = 6
    幂: "**"       
        d = "3 ** 5", 结果 d = 243
    除: "/"        
        e = 5 / 2, 结果: e = 2.5
    整除: "//"      
        f = 5 // 2, 结果: f = 2
    取余: "%"       
        g = 5 % 2, 结果: g = 1
    赋值: "="       
        h = 3, i = 5
    优先级: "()"    
        j = 3 + 2 / 2 + 1, j = 5。    k = 3 + 3 / (2 + 1), k = 4。
    
    • 复合运算符
    +=: 
        a = 10, a += 5, 结果: a = 15      等价于  a = a + 5
    -=:
        a = 10, a -= 5, 结果: a = 5       等价于  a = a - 5
    *=:
        a = 10, a *= 5, 结果: a = 50      等价于 a = a * 5
    /=:
        a = 10, a /= 4, 结果: a = 2.5     等价于 a = a / 4
    %=:
        a = 10, a %= 4, 结果: a = 2       等价于 a = a % 4
    **=:
        a = 10, a **= 2, 结果: a = 100    等价于 a = a ** 2
    //=:
        a = 10, a //= 4, 结果: a = 2      等价于 a = a // 4
    
    • 比较运算符
      • 比较运算符的结果是Bool类型的值, 取值分别是 True 和 False
    >:
        a = 10 > 2,     结果 a = True
    <:
        b = 10 < 2,     结果 b = False
    !=:
        c = 10 != 5,    结果 c = True
    <>: Python2版本支持, 等价于 !=, Python3版本不支持<>
        d = 5 <> 5,     结果 d = False
    >=:
        e = 5 >= 5,     结果 e = True
    <=:
        f = 5 <= 6,     结果 f = False
    ==:
        g = 3 == 3,     结果 g = True
    
    is: 比较唯一标识, 通过id(值), 获取唯一标识
        num = 10, id(10)
        h = [1]
        i = [1]
        result = h is i, 结果: result = False
    
    链式比较运算符: 
        num = 10
        j = 5 < num < 20, 结果: j = True    其他语言写作: j = num > 5 && num < 20
    
    • 逻辑运算符
    not: 非, 取反, 真 -> 假, 假 -> 真, 其他语言中的 !
        a = True,  b = not a,   结果: b = False
        c = False, d = not c,   结果: d = True
    
    and: 与, 并且, and的两边, 必须都是真, 最终才会是真, 其他语言中的 &&
        e = True and False,     结果: e = False
        f = True and True,      结果: f = True
        即: 一假全假, 全真才真
    
    or: 或, 或者, or的两边, 只要有一个条件是真的, 那么最终都是真的
        g = True or False,      结果: g = True
        h = False or False,     结果: g = False
        即: 有真即真, 全假才假
    
    非Bool值的类型, 判断真假, 与OC一样, 非零即真, 非空即真
        print(False or 1),      打印: 1
        print(bool(1)),         打印: True
        print(bool(0)),         打印: False
        print(False or ""),     打印: False
        print(3 and 1),         打印: 1
        print(1 and 3),         打印: 3
    

    输入

    Python2:

    • raw_input
      • 格式: result = raw_input("提示信息")
      • 功能:
        • 会等待用户输入内容, 直到用户按下Enter
        • 会将用户输入的内容当做"字符串", 传递给接收的变量
    • input
      • 格式: result = input("提示信息")
      • 功能:
        • 会等待用户输入内容, 直到用户按下Enter
        • 会将用户输入的内容当做"代码"进行处理

    eval函数, 将一段字符串当做代码运行处理

    result = eval("1+1"), 结果 result = 2
    
    • 所以Python2中的input相当于 raw_input + eval 的功能组合

    Python3

    • input: 相当于Python2中的 raw_input
      • 格式: result = input("提示信息")
      • 功能:
        • 会等待用户输入内容, 直到用户按下Enter
        • 会将用户输入的内容当做"字符串", 传递给接收的变量

    输出

    Python2

    • 打印: print语句
    输出一个值:
    print  5
    
    输出一个变量:
    num = 5
    print num
    
    输出多个变量:
    num1 = 10
    num2 = 20
    num3 = 30
    print num1, num2, num3
    
    格式化输出:
    name = "张三"
    age = 18
    方式一: print "名字是%s, 年龄是%d"%(name, age)
        结果: 名字是张三, 年龄是18
    方式二: print "名字是{0}, 年龄是{1}".format(name, age)
        结果: 名字是张三, 年龄是18
    
    输出到文件当中:
    file = open("text.py", "w")    第一个参数: 文件名, 第二个参数: 权限
    print >>file, "xxxxxx"         第一个参数: 输出文件, 第二个参数: 输出内容
    
    输出不换行: 在结尾加一个逗号","  中间以空格分割
    print 1,
    print 2
    打印: 1 2
    
    使用"-"分割多个参数输出
    print "-".join(["a", "b", "c"])
    打印: a-b-c
    

    Python3

    输出一个值:
    print(123)
    
    输出一个变量:
    num = 123
    print(num)
    
    输出多个变量
    num1 = 1
    num2 = 2
    num3 = 3
    print(num1, num2, num3)
    
    格式化输出:
    name = "zhangsan"
    age = 18
    print("我的名字是%s, 年龄是%d"%(name, age))
    print("我的名字是{0}, 年龄是{1}".format(name, age))
    
    输出到文件:
    f = open("test.py", "w")
    print("xxx", file=f)
    
    输出不换行:
    print("xxx", end=""), end的值默认为\n换行符
    
    输出多个参数时, 使用指定分割方式分割:
    print("1", "2", "3", sep="&&"),  打印:1&&2&&3
    
    立即输出:
    print("xxx", fluse=True)
    

    补充: 占位格式符

    • 格式: %[(name)][flags][width][.precision]typecode
    • (name): 用于选择指定名称对应的值 (根据字典的key, 取出对应的value)
    dictionary = {"age": 18, "name": "zhangsan"}
    print("我的名字是%(name)s, 年龄是%(age)d" % (dictionary))
    打印: 我的名字是zhangsan, 年龄是18
    
    • width: 表示显示的宽度
    num = 5
    print("%3d" % num), 打印: "  5", 这里双引号为了展示5的前面有一个空格, 实际打印不存在双引号
    即: 当打印目标宽度不出3时, 在前面以空格的形式补齐3位
    
    num1 = 3
    print("%5d" % num), 打印: "    5", 双引号同上
    此时打印宽度为5, 由于3的宽度只有1个位置, 所以前面有四个空格
    
    • flags: 主要与width配合使用, 主要有四个作用:
    作用一: 不写时, 默认右对齐
    num = 5
    print("%3d" % num), 打印: "  5", 双引号同上
    
    作用二: -(负号), 表示左对齐
    print("%3d" % num), 打印: "5  ", 双引号同上
    
    作用三: 空格, 主要用在数字前面加一个空格,与负数的负号对齐
    num = 5
    print("% d", num), 打印: " 5", 不论中间加几个空格, 最后结果只显示一个
    例如:print("%    d", num), 打印: " 5", 只打印一个空格
    
    作用四: 0, 不足部分, 使用0补齐
    num = 5
    print("%02d"), 打印: 05
    主要应用场景, 对时间进行格式化
    minutes = 5
    seconds = 8
    print("%02d : %02d" % (minutes, seconds)), 打印: 05 : 08
    
    • . precision: 表示浮点数后精度
    保留小数点后2位:
    num = 10.32131
    print("%.2f" % num), 打印: 10.32
    
    保留小数点后3位:
    print("%.3f" % num), 打印: 10.321
    
    不保留小数点
    print("%.0f" % num), 打印: 10
    
    保留小数点后7位:
    print("%.7f" % num), 打印: 10.3213100
    

    typecode, 必填项, 主要格式

    数值:

    • i/d: 将证书, 浮点数转成十进制整数
    num = 10.321
    print("%d" % num), 打印: 10
    
    • o: 将整数, 转成八进制
    num = 10
    print("%o" % num), 打印: 12
    
    • x:将整数, 转成十六进制
    num = 10
    print("%x" % num), 打印: a
    
    • e: 将整数, 浮点数转成科学计数法
    num = 1111111111
    print("%e" % num), 打印: 1.111111e+09
    
    • E: 将整数, 浮点数转成科学计数法
    num = 1111111111
    print("%e" % num), 打印: 1.111111E+09
    
    • f: 将整数, 浮点数格式化成浮点数, 并保留六位小数
    num = 5
    print("%f" % num), 打印: 5.000000
    
    num1 = 5.312231232
    print("%f" % num1), 打印: 5.312231
    
    num2 = 5.312
    print("%f" % num2), 打印: 5.312000
    
    • g: 自动调整将整数, 浮点数转成浮点数, 超过六位数, 用科学计数法
    num1 = 23.321000
    print("%g" % num1), 打印: 23.321
    
    num2 = 231.32
    print("%g" % num2), 打印: 231.32
    
    num3 = 100.1111111
    print("%g" % num3), 打印: 100.111
    
    num4 = 100111111111
    print("%g" % num4), 打印: 1.00111e+11
    
    • G: 与g相同

    字符串

    • s: 获取传入对象的__str__方法的返回值, 并格式化到指定位置
    • r: 获取传入对象的__repr__方法的返回值, 并格式化到指定位置
    • c: 整数, 将数字转成对应的uniode对应的值, 范围: 0<= i <= 1114111, py27之至此0-255

    %%

    • 当字符串中存在格式化标识时, 需要使用%%表示一个百分号
    num = 90
    print("%d%%" % num), 打印: 90%
    

    注意: Python中不存在将整数转成二进制的格式符, Python中不存在%b这个格式符

    相关文章

      网友评论

          本文标题:Python基础(一): 注释, 变量, 运算符, 输入输出语句

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