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,或放入上述目录

    生活本就平淡,努力是本分,完成任务不算本事,你所缺少的,永远是锦上添花的能力。
  • 相关阅读:
    BF算法和KMP算法
    Python课程笔记 (五)
    0268. Missing Number (E)
    0009. Palindrome Number (E)
    0008. String to Integer (atoi) (M)
    0213. House Robber II (M)
    0198. House Robber (E)
    0187. Repeated DNA Sequences (M)
    0007. Reverse Integer (E)
    0006. ZigZag Conversion (M)
  • 原文地址:https://www.cnblogs.com/monkeyfx/p/6886464.html
Copyright © 2011-2022 走看看