zoukankan      html  css  js  c++  java
  • 02ython基础知识(一)

    Python基础知识(一)

    变量

    name='monkeyfx'
    

    变量定义的规则:

    • 变量名只能是 字母、数字或下划线的任意组合

    • 变量名的第一个字符不能是数字

    • 以下关键字不能声明为变量名:

      ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

    字符编码

    ascill

    默认ascill 英文 1字符1字节8个比特位

    ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

    GB2312(1980年)

    7445个字符,包括6763个汉字和682个其它符号。

    GBK(中文最常用的)

    GB2312 支持的汉字太少。GBK 27484个汉字,手机、MP3一般只支持GB2312。

    Unicode万国码

    可以代表所有字符和符号的编码Unicode(统一码、万国码、单一码)所有的字符统一1字符2字节16个比特位 即:2 **16 = 65536

    2.x版本报错:ascii码无法表示中文

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

    3.x版本默认Unicode

    UTF-8

    UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存

    注释

    单行注视:

    # 被注释内容
    

    多行注释:

    """ 被注释内容 """
    

    用户输入

    input/raw_input

    #name = raw_input("What is your name?") #only on python 2.x
    #input读入数据位str格式
    name = input("What is your name?")
    

    getpass(在pycharm中不好使)

    #输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
    import getpass
    # 将用户输入的内容赋值给 name 变量
    pwd = getpass.getpass("请输入密码:")
    

    数据类型

    数字

    int(整型)

      在32位机器上,整数的位数为32位,取值范围为-231~231-1,即-2147483648~2147483647
      在64位系统上,整数的位数为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807

    long(长整型)

      Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
      注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
    Python3没有long的概念,统一为int

    float(浮点型)

      浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。

    complex(复数)

      复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
    注:Python中存在小数字池:-5 ~ 257

    布尔值

    True FALSE
    非0 0
    非空

    字符串

    列表

    元祖

    运算符

    算数运算:

    假设变量a=10和变量b=20

    操作符 描述 例子
    + 加法 a + b = 30
    - 减法 a - b = -10
    * 乘法 a * b = 200
    / b / a = 2
    % 模(取余) b % a = 0
    ** 指数 a**b = 10的20次幂
    // 地板除(结果是将小数点后的位数被除去的商,取挣) 9//2 = 4 而 9.0//2.0 = 4.0

    比较运算:

    ==|!=|<>|>|<|>=|<=
    -|

    赋值运算:

    =|+=|-=|*=|/=|%=|**|//|
    -|

    位运算符:

    位运算符作用于位和位操作执行位。假设,如果a =60;且b =13;现在以二进制格式它们将如下:

    a = 0011 1100

    b = 0000 1101


    a&b = 0000 1100

    a|b = 0011 1101

    a^b = 0011 0001

    ~a = 1100 0011

    操作符 描述 示例
    & 按位与 (a & b) = 12 即 0000 1100
    按位并 (a 丨b) = 61 即 0011 1101
    ^ 按位异或 (a ^ b) = 49 即 0011 0001
    ~ 按位翻转 (~a ) = -61 即 1100 0011以2的补码形式由于带符号二进制数。
    << 左移运算符 a << 2 = 240 即 1111 0000
    >> 右移动运算符 a >> 2 = 15 即 0000 1111
    	a = 60            # 60 = 0011 1100
    	b = 13            # 13 = 0000 1101
    	c = 0
    	  
    	c = a & b;        # 12 = 0000 1100
    	print "Line 1 - Value of c is ", c
    	  
    	c = a | b;        # 61 = 0011 1101
    	print "Line 2 - Value of c is ", c
    	  
    	c = a ^ b;        # 49 = 0011 0001 #相同为0,不同为1
    	print "Line 3 - Value of c is ", c
    	  
    	c = ~a;           # -61 = 1100 0011
    	print "Line 4 - Value of c is ", c
    	  
    	c = a << 2;       # 240 = 1111 0000
    	print "Line 5 - Value of c is ", c
    	  
    	c = a >> 2;       # 15 = 0000 1111
    	print "Line 6 - Value of c is ", c
    

    面试题

    	1、判断一个数是否是2的N次方
    	  题目要求:用一个表达式,判断一个数X是否是2的N次方,即2,4,8,16……等,要求不可以用循环语句。
    	  解析:2,4,8,16这样的数转化成二进制是10,100,1000,10000。
    	  如果X减去1后(低一位并且二进制的每一位都是1),这个数与X做与运算,答案若是0,则X是2的N次方。
    	
    	2、两个数的交换
    	  题目要求:将a,b两个数的值进行交换,并且不使用任何的中间变量。
    	解法1:
    	             a = a+b;
    	             b = a-b;
    	             a = a-b;
    	解法2:采用异或位运算。
    	  异或运算:相同为0,相异为1。
    	      a = a^b;//a变为一个相同为0,相异为1的结果
    	      b = a^b;//该结果和b做运算,得到原来的a
    	      a = a^b;//该结果和a做运算,得到原来的b
    

    学习资料
    http://python.jobbole.com/85168/

    逻辑运算:

    运算符|描述|示例
    -|
    and |与运算符。如果两个操作数都是真的,那么则条件成立。|(a and b) 为 true.
    or |或运算符。如果有两个操作数都是非零然后再条件变为真。|(a or b) 为 true.
    not |非运算符。用于反转操作数的逻辑状态。如果一个条件为真,则逻辑非运算符将返回false。|not(a and b) 为 false.

    成员运算:

    操作符|描述|示例
    -|-
    in|计算结果为true,如果它在指定找到变量的顺序,否则false。|x在y中,在这里产生一个1,如果x是序列y的成员。
    not in|计算结果为true,如果它不找到在指定的变量顺序,否则为false。|x不在y中,这里产生结果不为1,如果x不是序列y的成员。

    运算符优先级

    运算符 描述
    ** 幂(提高到指数)
    ~ + - 补码,一元加号和减号(方法名的最后两个+@和 - @)
    * / % // 乘,除,取模和地板除
    + - 加法和减法
    >> << 左,右按位转移
    & 位'AND'
    ^ 按位异'或'和定期或'
    <= < > >= 比较运算符
    <> == != 等式运算符
    = %= /= //= -= += *= **= 赋值运算符
    is is not 标识运算符
    in not in 成员运算符
    not or and 逻辑运算符

    流程控制

    if-else

    if-elif-elif-else

    for循环

    for i in range(10):
    	print(i )
    a=[1,2,3,4]
    for item in a:
    	print(item )
    

    while 条件:

    continue用于退出当前循环,继续下一次循环

    break用于退出所有循环

    三元运算

    condition ? true_part : false_part
    判定条件?为真时的结果:为假时的结果

    	result=5>3?1:0
    	>>> 1 if True else 0
    	1
    	>>> 1 if False else 0
    	0
    	>>> "Fire" if True else "Water"
    	'Fire'
    	>>> "Fire" if False else "Water"
    	'Water'
    

    lambda表达式

    	m = lambda x,y,z: (x-y)*z
    	print m(3,1,2)
    	#结果是4
    
    
    	sum = lambda x, y:   x + y   
    	#  def sum(x,y): 
    	#		return x + y
    
    	sum = lambda x, y:   x + y   
    	#  def sum(x,y): 
    	#	return x + y
    

    杂记

    • 单双引号活用

        "I'm monkeyfx"
      
    • 模块一般放置在Python/2.7/site-packages目录下,所以自己写的模块调用记得加path,或放入上述目录

    生活本就平淡,努力是本分,完成任务不算本事,你所缺少的,永远是锦上添花的能力。
  • 相关阅读:
    一线架构师实践指南第三编阅读笔记
    学习七
    《信息领域热词分析》,如何设计编码实现六种质量属性战术
    学习六
    一线架构师实践指南第二部分阅读笔记
    学习五
    echarts实现省市区地图下钻
    python提取文本关键词
    后缀自动机复习笔记
    bzoj 1552
  • 原文地址:https://www.cnblogs.com/monkeyfx/p/6886464.html
Copyright © 2011-2022 走看看