02_python基础
01_1-1走进python
Python2到3的程序2to3.py
标识符是指python语言中允许作为变量名或其他对象名称的有效符号:首字符是字母或下划线;其余可以是字母、下划线、数字;大小写敏感(PI和pi是不同的标识符)
表达式:用运算符连接各种类型数据的是式子就是表达式:算数运算符(乘方**正负号±乘除*/整除//取余%加减±),位运算符(取反~与&或|异或^左移<<右移>>),比较运算符(小于 大于 小于等于 大于等于 等于 不等于),逻辑运算符(非not 与and 或or)
#变量第一次赋值,同时获得类型和“值”:python是动态的强类型语言;不需要显示生命,根据“值”确定类型;以“引用”的方式实现赋值
#赋值——增量赋值,增量赋值操作符:+= -= *= /= %= **= <<= >>= &= ^= |=
m = 18
m *= 3
print (m)
#赋值——多重赋值
PI = pi =3.14159
print(PI)
print(pi)
#赋值——多元赋值:等号左右两边都以元组的方式出现
x = 1
y = 2
print (x,y)
x,y = y,x
print (x,y)
54
3.14159
3.14159
1 2
2 1
语句:完成一个任务,如打印一份文件
表达式:任务中的一个具体组成部分,如这份文件的具体内容
04_4-python数据类型
#Python标准数据类型:(长)整型、浮点型、复数型、布尔型、字符串、列表、元组、字典
#整型/长整型:整型和长整型并不严格区分,整型值后加“L”即为长整型,与机器有关,32位:-2的31次方~2的31次方-1,-2的63次方到2的63次方-1,在python中整型基本没有溢出的问题
#布尔型:整型的子类;仅有2个值:True、False;本质上使用整型的1、0分别存储的
x = True
print(int(x))
y = False
print (int(y))
#浮点型:即数学中的实数,可以类似科学计数法标识
a = 9.8e3
print(a)
print(3.2e-3)
#复数型
a = 5+3j
print(a)
print(a.imag) #虚部
print(a.real) #实部
print(a.conjugate()) #共轭
type(a)
1
0
9800.0
0.0032
(5+3j)
3.0
5.0
(5-3j)
complex
#序列类型:
#字符串:单引号、双引号、三引号内的都是字符串,不可变类型
#列表:强大的类型,用方括号[]界别,可变类型
#元组:与列表相似,用小括号()界别,不可变类型
#字符串的表示
a = 'hello,world'
print (a)
b = "hello,world"#直接打双引号
print (b)
c = '''hello,
world'''#三引号是三个单引号
print (c)
hello,world
hello,world
hello,
world
#映射类型 字典:用大括号{}界别,类似于哈希表的键值对
d = {'a':'sin','b':3,'c':2.5}
d['a']
'sin'
05_5 python 基本运算
#比较运算:数值的比较,按值比大小;字符串的比较,按ASCII码值大小
3<4<7#same as (3<4) and (4<7)
#原始字符串操作符(r/R):用于一些不希望转移字符起作用的地方
#Unicode字符串操作符(u/U):转换成Unicode字符串
#u
print(u'hello\nworld')
print('hello\nworld')
f = open(r'D:\software\python.py','w')
f.close()
#比较运算和逻辑运算都是布尔值
hello
world
hello
world
06_6 函数模块和包
#内建函数-cmp(),str()和type()适用于所有标准类型
#数值型内建函数:abs(),bool(),oct(),coerce(),int(),hex(),divmod(),long(),ord(),pow(),float(),chr(),round(),complex()
#实用函数:dir(),input(),help(),open(),len(),range()
import math
print (math.pi)
import numpy as np
a = np.arange(1,10)
b = range(1,5)
print (a)
print (list(b))
c = input('input a number')
# 包:一个有层次的文件目录结构,定义了一个由模块和子包组成的python应用程序执行环境
#库:一组具有相关功能的模块的组合
3.141592653589793
[1 2 3 4 5 6 7 8 9]
[1, 2, 3, 4]
input a numberf
02_1-2python面面观
#01_1条件
if expression:
expr_true_suite
elif expression2:
expr2_true_suite
else:
none_of_the_above_suite
#02_2 range arange xrange
#python3中,range()变为list(range()),xrange()变为range()
异同 list(range()) range()
语法 列表 生成器
生成 真实列表 用多少生成多少
import numpy as np
a = range(1,10,2)
print (list(a))
b = range(10,1,-2)
print (list(b))
c = np.arange(1,10,2)
print(c)
d = np.arange(10,1,-2)
print(d)
print(range(1,8,3))
[1, 3, 5, 7, 9]
[10, 8, 6, 4, 2]
[1 3 5 7 9]
[10 8 6 4 2]
range(1, 8, 3)
#03_3循环
#while expression:
# suite_to_repeat
sum = 0
i = 1
while (i < 10):
sum += i
i += 1
print ('sum = ',sum)
sum = 45
#for循环
# for iter_var in iterable_object:
# suite_to_repeat
# 可以明确循环的次数:遍历一个数据集内的成员;在列表解析中使用;生成器表达式中使用
# iterable_object:string;list;tuple;dictionary
#数据量较大就用生成器表达式(后两句,用圆括号),较小就用列表解析(前6句,用方括号)
a = [i+1 for i in range(10)]
print (a)
b = [i+1 for i in list(range(10))]
print (b)
c = [i+1 for i in range(10) if i%2 == 0]
print (c)
c = (i+1 for i in range(10) if i%2 == 0)
print (c)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 3, 5, 7, 9]
<generator object <genexpr> at 0x000001F64C5ECA40>
04_4 break continue else
#break 语句终止当前循环,转而执行循环后的语句
sum = 0
i = 1
while (True):
sum += i
i += 1
if (sum > 10):
break
print('sum = %d , i = %d'%(sum,i))
sum = 15 , i = 6
#输出2到100之间的素数
#while和break
from math import sqrt
j = 2
while (j<=100):
i = 2
while (i <= sqrt(j)):
if (j%i ==0):
break
i += 1
if (i>sqrt(j)):
print (j)
j = j+1
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
#for和break
from math import sqrt
for a in range(2,101):
flag = 1
for b in range(2,int(sqrt(a))+1):
if (a%b == 0):
flag = 0
break
if (flag == 1):
print (a)
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
#continue语句
#在while和for语句中,用于:停止当前循环,重新进入循环;while循环则判断循环条件是否满足,for循环则判断迭代是否已经结束
import numpy as np
a = np.random.randint(0,300)
print (a)
c = 'y'
while ( c == 'y' ):
b = int(input('input a number'))
if (b == a):
print('congrutuations')
break
elif (b >a):
print('too big')
else:
print ('too small')
c = input('do you want to try again?y/n')
if (c == 'n'):
print ('game over')
break
211
input a number200
too small
do you want to try again?y/ny
input a number215
too big
do you want to try again?y/ny
input a number211
congrutuations
import numpy as np
a = np.random.randint(0,300)
print (a)
while (True):
b = int(input('input a number'))
if (b == a):
print('congrutuations')
break
elif (b >a):
print('too big')
else:
print ('too small')
104
input a number2
too small
input a number188
too big
input a number104
congrutuations
#循环中的else:如果循环代码从break处终止,跳出循环,正常结束循环,则执行else中的代码
k = 4
for i in range(1,10):
if (k == 3):
break
else:
print(i)
print(i)
9
9
05_5自定义函数
#函数名加上函数运算符,一对小括号:括号之间是所有可选的参数;即使没有参数,小括号也不能省略
#print 函数.__doc__ 查看函数的注释
# def function_name([arguments]):
# "optional documentation string"
# function_suite
from math import sqrt
def isprime(x):
if (x == 1 or x == 0):
return False
i = 2
while(i < sqrt(x)):
if ( x%i == 0):
return False
i += 1
if (i >sqrt(x)):
return True
for a in range(0,101):
if (isprime(a)):
print (a)
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
#默认参数:函数的参数可以有一个默认值,如果提供有默认值,在函数定义中,默认参数以赋值语句的形式提供
#默认参数的值可以改变
#默认参数一般需要放置在参数列表的最后
#关键字参数是让调用者通过使用参数名区分参数。允许改变参数列表中的参数顺序
def f(x=True):
"whether x is a correct word or not"
if (x == True):
print('x is a correct word')
# print('OK')
a = f()
print (a)
#传递函数:函数可以像参数一样传递给另一个函数
def addmetome(x):
return(x+x)
def self(f,y):
return f(y)
print (self(addmetome,2.2))
#lambda 函数
r = lambda x :x+x
print(r(5))
x is a correct word
None
4.4
10
06_6递归
#递归必须要由边界条件,即停止递归的条件,典型例子:汉诺塔游戏
#递归的执行在系统资源消耗上比循环大,逐层递归调用,遇到边界体哦阿健停止递归,逐层返回调用至最初层
def fib(n):
a,b = 0,1
count = 1
while count < n:
a,b = b,a+b
count = count +1
print (a)
def fib(n):
if (n == 0 or n == 1):
return n
else:
return (fib(n-1)+fib(n-2))
07_7变量作用域
#python没有变量声明,变量出现在哪里,就是什么变量:全局变量在程序的整体部分,局部变量在函数部分
#全局变量和局部变量同名时,优先使用局部变量,这是内层屏蔽外层的机制
a = 3
def f(a):
a = 5
print ('a')
print (a*3)
print (f(a))
a
15
None
#需用global语句强调a是全局变量,才可以在函数中改变a的值
def f(x):
a = 5
print (a)
print (a+x)
a = 3
f(8)
5
13
def f(x):
global a
print (a)
a = 5
print (a)
print (a+x)
a = 3
f(8)
3
5
13