zoukankan      html  css  js  c++  java
  • python相关的编码,运算

    一 字符串的格式化

      python中使用占位符%来实现。

    name=input('name:')
    age=input('age:')
    hobby=input('hobby:')
    print('%s的年龄是%s,喜欢%s' %(name,age,hobby))

    输出结果为:

    name:Alex
    age:87
    hobby:egon
    Alex的年龄是87,喜欢egon

    如果打印%这个字符,需要在%前面再加一个%。

    例如:

    print('%s的学习进度是50%%' %'Mr3')
    

    结果:

    Mr3的学习进度是50%

    二 二级制以及编码

      计算机是本质是无数多的二极管电路。1代表高电平,0代表低电平。电脑简单,容易识别,所以电脑都是采用二进制。

      最开始美国发明计算机的时候,根据美国自己用的所有字母符号,编写了ASCII码,讲道理,美国人自己用是没有问题的。ASCII码是由1个字节8位组成,但其实最头上一位,并没用用到,所有最头上一位是0。有效的一共是0-127,一共128个。

      随之计算机的广泛应用,ASCII码远远不能满足应用。为了解决这一现象,unicode万国码应运而生。unicode采用4个字节32位,一共有4294967296变化,在目前和将来一段时间内,可以满足要求。

    uncode解决了全世界范围内所有语言计算机都能识别的问题,但是unicode有一个弊端,就是空间浪费严重。比如‘A’在ASCII中用01000001表示,但是在unicode中用00000000 00000000 00000000 01000001,相对而言,前三个字节,完全没有用处。

      为了解决unicode空间浪费严重的情况,有能包含全世界所有的语言,utf-8作为一个优化产生了。在utf-8中,一个汉字是3个字节,一个英文字母占用一个字节,这样就节省了大量的空间。

      中国人自己用的编码是GBK,包含常用汉字及常用的英文字母。GBK中一个汉字占用两个字节。

      P.S  unicode只在内存运算中存在,硬盘存储及网络传输都不会采用unicode格式。

        GBK和utf-8两者之间是不能直接转换,必须通过unicode,gbk格式转为unicode格式,然后再从unicode转为utf-8格式,unicode相当于一个中介了。

      单位换算:

      1个0或者1个1,占1位,即1bit。

      1Bytes(字节)=8bit

      1KB=1024Bytes

      1MB=1024KB

      1GB=1024MB

      1TB=1024GB

      理论说法:

      位(bit):计算机里最小的表示单位。

      字节(byte):计算机里最小的存储单位。

    三 基本的运算

      逻辑运算。

      逻辑运算如果没有括号,运算顺序是从左到右。

      逻辑运算中有一个核心思想——短路裸机。

      表达式从左到右,如果or的左侧是True,则短路or后面所有运算。

      表达式从左到右,如果and的左侧是False,则短路后面所有and运算,直到遇到or,输出and的左侧表达式到or的左侧表达式,并参与接下来的逻辑运算。

      如果or左侧是False,或者and左侧是True,不能使用短路逻辑。

      博文地址:http://www.cnblogs.com/an9wer/p/5475551.html

       例如:

      

    if 1>2 and 1<2 or 1<2:
        print('hello world')
    

      结果就是

    hello world
    

      原因就是and左侧 1>2 是False,短路后面所有and运算,直到 or, 接下来就相当于判断逻辑运算 1>2 or 1<2 ,很明显,结果为True,判定条件为真。

      

      逻辑运算一个小忽悠——逻辑运算在进行赋值的时候,起决定性作用的一侧如果是数字,字符串可以直接赋值,而不是变为布尔值后赋值。

    a=1<2 and 'abc'
    print(a)
    

      输出:  因为 and 左右两侧必须同时为True,and右侧 ‘abc’直接赋值给了a。同理  如果a=1<2 and 5,print(a),结果为 5

    abc
    

      0如果在决定性位置,也是直接赋值。

      

    a= 0 and 1<2
    print(a)

      

    a=1<2 and 0
    print(a)
    

      以上两种情况都是输出:0

      

    a=1 and 1<2
    print(a)
    

      输出:  因为 1 不在and逻辑运算的决定性位置。  起决定性位置的是 1<2,所以a=True

    True
    

      

      同理,以上规律对 or 也成立。

    a=1 or 1>2
    print(a)
    

      输出: 1  因为1 的布尔值是True,在 or 的左侧,起决定性作用,数字直接赋值。

     

    a=1<2or 1
    print(a)
    

      输出:  or 的左侧 比较运算的布尔值是True,把 1 短路掉了。布尔值True赋值给了a。

    True
    

      

      and 和 or 结合起来,也就很容易理解了。

    a=0 and 3>2 or 7
    

      输出:7

      

    a=1 and 3>2 or 7
    

      输出:

    True
    

      

      成员运算

      in not ,多采用判断语句,返回值为布尔值。应用的地方比较多,很灵活。

       

      数值运算

      + - * / % **  // 

      在python2 与python3中,有区别都是除法运算。

      比如5/2

      在python2中,只会取到整数,余数不取。

          

      而在python3中,余数会取到。

      

      如果python2 中想要取到余数,要在开头加一句,from __future__ import division。

      

  • 相关阅读:
    知识搜索
    使用 getopt() 进行命令行处理
    【新提醒】夏新大v安卓4.1尝鲜最新更新版本发布(包含进步版)1124更新 大V综合交流区 360论坛
    搜狗知立方高调亮相 开启知识计算新时代
    socat: Linux / UNIX TCP Port Forwarder
    Crontab 每两周执行一次
    python 命令行解析 optionparser
    crontab jojo's blog--快乐忧伤都与你同在 BlogJava
    搜索引擎开始「实体搜索」新领域竞争,Google、百度分别发力实体搜索产品
    netcat(nc)的替代产品 Socat
  • 原文地址:https://www.cnblogs.com/654321cc/p/7382639.html
Copyright © 2011-2022 走看看