28 Jul 2015
命名规则:变量名必须是大小写英文、数字和_的组合,且不能用数字开头。避免使用keywords,以下是keywords列表
>>> import keyword >>> print keyword.kwlist ['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']
PS:不能使用数字开头是为了避免系统混淆(和int型的混淆)
变量实质:变量其实就是内存地址
>>> a = "various a" >>> b = a >>> print('a address:',id(a),' b address',id(b)) ('a address:', 140651413012032, ' b address', 140651413012032)
变量赋值:赋值号”=”
# 普通变量 >>> twelve = 12 >>> thirtyfour = 34 >>> print 'twelve:',twelve,'thirtyfour:',thirtyfour twelve: 12 thirtyfour: 34 # 变量赋值 >>> one,two = 1,2 >>> print 'one:',one,'two:',two one: 1 two: 2 # 变量交换 >>> one,two = two,one >>> print 'one:',one,'two:',two one: 2 two: 1 # 赋值空变量 >>> job = None >>> print job None
基本类型:整数、浮点数、字符串、布尔值、空值
PS:python还可以创建列表、数组和字典等多种数据类型,还可以自定义数据类型
>>> a=10 >>> print(type(a),a) (<type 'int'>, 10)
>>> a=10.0 >>> print(type(a),a) (<type 'float'>, 10.0)
>>> a=int(10.1) >>> print(type(a),a) (<type 'int'>, 10)
>>> a=float(10) >>> print(type(a),a) (<type 'float'>, 10.0)
>>> print type(int_max),"int_max:",int_max,"\n",type(int_more),"int_more:",int_more <type 'int'> int_max: 9223372036854775807 <type 'long'> int_more: 9223372036854775808 >>> int_more 9223372036854775808L # <----- L是长整型的标识
>>> sys.float_info sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1) # 科学计数法解释 >>> 2e+3 2000.0 >>> 1e-1 0.1
>>> s='This is a string' >>> print(s) This is a string >>> s="This is a string" >>> print(s) This is a string
>>> s=''' ... This ... is ... A string ... ''' >>> print(s) <------ #这是一个空行 This is A string
>>> s='''\ ... This ... is ... A string ... ''' >>> print(s) This <------ #空行没有了 is A string
>>> s='This is \na string' >>> print(s) This is a string
>>> s='This is \\na string' <------ #用'\'来转义 >>> print(s) This is \na string >>> s=r'This is \na string' <------ #用'r'来转义整个字符串的特殊符号 >>> print(s) This is \na string
老方式
>>> a='Hello' >>> b='This is a string,%s' %a >>> print(b) This is a string,Hello
新方式
>>> a='Hello' >>> s='This is a string,{}'.format(a) >>> print(s) this is a string,Hello
#Python默认采用ascii编码,而中文编码不再ascii编码能够表示的范围之内 >>> sys.getdefaultencoding() 'ascii'
>>> running = True >>> while running: ... print "good" ... break ... good
>>> 1 == 1.0 True >>> 1 == 2 False
>>> job = None >>> print job None
- PS:区分数据类型,会节省内存的使用(不同的数据类型分配不同的内存容量)
- PS:区分数据类型,会分离不同的针对数据类型的操作
加+ 减- 乘* 除/ 地板除// 模%
>>> 5 + 3 - 3 / 5 # 运算顺序,除法是优先于加减的 8 >>> (5 + 3 - 3) / 5 # 用()来使运算过程清晰化 1 >>> 5/6 # v2.x版本里整形之间除法得到的结果也是整形,python3里面会改善这个 0 >>> 5.0 / 6 # 浮点型与整形计算会得到浮点型 0.8333333333333334 >>> float(5) / 6 # float函数 0.8333333333333334 >>> 5 % 6 # 模也是取余数,余数是5 5 >>> 6 % 5 1 >>> 5.0 / 2 # 来看下除法和地板除的区别 2.5 >>> 5.0 // 2 2.0 >>> import math # math模块里的floor函数和//是同样的功效 >>> math.floor(5.0/2) 2.0
&:按位与; |:按位或;^:按位异或;~:取反;<<:左移;>>:右移作
>>> 3 & 6 2 # '&'与操作结果:'2'的二进制是0010(同时为1,则为1,其他为0) >>> 3 | 6 7 # '|'或操作结果:'7'的二进制是0111(只要有一个是1,则为1,其他为0) >>> 3 ^ 6 5 # '^'异或操作结果:'5'的二进制是0101(只有一个是1,才为1,其他为0)
>>> ~6 -7 # [十进制6 > 二进制0110 > 补码00110>] 取反11001 [补码10111 > 二进制-0111 > 十进制-7] >>> ~3 -4 # [十进制3 > 二进制0011 > 补码00011>] 取反11100 [补码10100 > 二进制-0100 > 十进制-4] >>> ~-8 7 # [十进制-8 > 二进制1000 > 补码11000>] 取反00111 [补码00111 > 二进制0111 > 十进制7] # 内存中数字以补码的形式保存 # 正数的补码和反码都是本身 # 负数的补码是符号位不变,其余各位取反,末尾加1;反码是符号位不变,其余各位取反
In [3]: t = 'abcd' In [4]: r = '' In [5]: for i in t: ...: r += chr(ord(i) << 1) ...: print r ...: ???? In [6]: new_t = '' In [7]: for i in r: ...: new_t += chr(ord(i) >> 1) ...: print new_t ...: abcd
>>> "string".upper() 'STRING' >>> "STRING".lower() 'string'
>>> i = 5 >>> for i in range(10): ... print i ... 0 1 2 3 4 5 6 7 8 9 >>> i 9 # i变成了9
>>> i = 9 >>> while i in range(11): ... i += 1 ... print i ... 10 11 >>> i 11
#!/usr/bin/python #Filename:2907_if_num.py ''' aim to check user's input, if num yes, else no, retry pls. ''' while True: try: input_user = int(raw_input('Input a number : ')) print 'the number is %d'% input_user break except ValueError: print 'what you input is not a number!' else: print 'Done'
#!/usr/bin/python #Filename:2907_if_prime.py ''' aim to find all prime from 0 to the number user give. ''' while True: try: input_user = int(raw_input('Input a number : ')) print '==========start========' num_div = input_user // 2 + 1 for num_find in range(2,input_user + 1): count_div = 0 for i in range(2,num_div): result_div = float(num_find) / i result_div_int = num_find / i #print "num:",num_find,'-',i,'-',result_div,'-',result_div_int if result_div == result_div_int and num_find != i: count_div = 0 continue else: count_div += 1 #print count_div if len(range(2,num_div)) == count_div: print "prime : %d" % num_find break except ValueError: print 'what you input is not a number!' print '==========Done========'
课后题:
while True: try: input_user = int(raw_input('Input a number : ')) except ValueError: print 'what you input is not a number!' continue print '==========start========' num_div = input_user // 2 + 1 for num_find in range(2,input_user + 1): is_prime = False for i in range(2,num_div): if num_find % i == 0 and num_find != i: is_prime = False break else: is_prime = True if is_prime: print "prime : %d" % num_find break print '==========Done========'
变量命名规则主流方式:
- 匈牙利命名:开头用变量类型的缩写,其余用变量的英文或缩写,单词第一个字母大写 For example: long lSum = 0; #“l”是类型的缩写;
- 小驼峰式:(little camel-case) 第一个单词首字母小写,后面其他单词首字母大写 For example: string firstName = string.Empty;
- 大驼峰式:(big camel-case) 每个单词的第一个字母都大写 For example:string FirstName = string.Empty;
但是,python倾向于下划线分割的方式来命名变量(For example:is_prime = True)