一、python基础
输入与输出
输出
print('hello world','jumps over','the lazy dog') print('1+2=',1+2)
hello world jumps over the lazy dog 1+2= 3
输入
name = input()
当你输入name = input()并按下回车后,Python交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后完成输入。下次输入name就变成了你之前设
定的那个值
name = input() # Enter a print('hello',name)
hello,a
name = input('please enter you name:') # Enter b print('hello',name)
please enter you name:b hello b
print('\\\n\\')#\n表示换行,\\等价于\ print(r'\\\t\\')#加了r之后内部的字符串默认不转义 print('''line1 line2 line3''')#也可以用这个表示多行内容
\ \ \\\t\\ line1 line2 line3
python基础
1.数据类型与变量
1.1布尔值
True and True #True not True #False
布尔值的应用
age=20 if age>=18: print('adult') else: print('teenager')
adult
2.变量
a = 'ABC'
python 解释器干了两件事情
1).在内存中创建了一个’ABC‘字符串
2).在内存中创建了一个名为a的变量,并把它指向’abc‘
3.常量
一般除法
10/3 #3.333333333
整除
10//3 #3
取余
20%3 #2
4.字符串和编码
Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输时,就转换为UTF-8编码
很多网页的源码上会有类似的<meta charset="UTF-8" />的信息,表示该网页正是用的UTF-8编码
python中的字符串是以Unicode编码的
ord('A') #65 ord('中')#20013 chr(66)#'B' chr(25991)#'文'
print('%2d-%02d' % (3, 1))
3-01
%d:整数,%2d,整数的宽度是2位,若不足两位,左边补空格;%02d整数输出,整数的宽度是2位,若不足两位,左边补0;%.2d整数输出,整数的有效数字是2位
%f:浮点数,%s:字符串,%x:十六进制整数
print('Hello, %s' % 'world') print('Age: %d. Gender:%s' % (25,True)) print('growth rate: %d %%' % 7)
Hello, world Age: 25. Gender:True growth rate: 7 %
'hello,{0},成绩提升了{1:.1f}%'.format('小明',17.25) 'hello:{0:.2s},xiaoming,chengji:{1:.2f}'.format('dididid',123)
'hello,小明,成绩提升了17.2%' 'hello:{0:.2s},xiaoming,chengji:{1:.2f}'.format('dididid',123)
5.list和tuple
列表
list 是一种有序的集合,可以随时添加和删除其中的元素
classmates = ['Michael','Bob','Tracy'] len(classmates)
3
列表的查找
classmates[0]
classmates[-1]
'Michael' 'Tracy'
列表的添加
classmates.append('mon')#在最后面添加 classmates.insert(1,'sam')#在第一个位置添加元素
列表的删除
classmates.pop()#删除最后一个元素 classmates.pop(1)#删除指定位置的元素
列表的替换
classmates[1]='gulu'
列表里面的元素也可以是不同的
a = [123,True,'adidas']
另一种有序列表叫做元组:tuple,tuple和list相似,但是一旦初始化就不能修改
classmates = ('Michael','Bob','Tracy')
此时不能进行添加,删除和替换
不可变的tuple的意义在于:因为tuple不可变,所有代码更安全,如果可能,能用tuple代替list就尽量用tuple
只定义一个元素的tuple,必须加逗号
t = (1,)
可变的tuple
t = ('a','b',['A','B'])#a:位置0,b:位置1,['A','B']:位置2 t[2][0] = 'X' t[2][1] = 'Y' t
('a', 'b', ['X', 'Y'])
L = [ ['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', 'PHP'], ['Adam', 'Bart', 'Lisa'] ] L
[['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', 'PHP'], ['Adam', 'Bart', 'Lisa']]
6.条件判断
age = 3 if age>18: print('your age is',age) print('adult') else: print('your age is',age) print('teenager')
your age is 3 teenager
age = 3 if age>18: print('you are a adult:', age) elif age>6: print('you are a teenager:',age) else: print('you are a baby:' ,age) #可以看出一个循环用else,多个循环用elif
you are a baby: 3
birth = input('age:') #input默认输入类型是str birth = int(birth) if birth<2000: print('00前') else: print('00后')
7.循环
for ... in循环,依次把list或tuple中的每个元素迭代出来
names = ['Michael','Bob','Tracy'] for name in names: print(name)#for i in ...循环就是把每个元素代入变量i,然后执行缩进快的语句
Michael Bob Tracy
sum = 0 for i in range(11): sum = sum + i print(sum) #0加到10------》55
list(range(5)) #[0, 1, 2, 3, 4]
while循环
只要条件满足,就不断循环,条件不满足时退出,从头执行
如果print()在循环里面,那么每次都打印,如果在最外面则打印出一个总的
sum = 0 n = 99 while n>0: sum = sum + n n = n - 2 print(sum) #99+97+...+1
2500
break语句可以提前退出循环,例如,本来要循环打印1-100的数字
n = 1 while n <=100: print(n) n = n+1 print('END')
1 2 3 ... END
n = 1 while n <= 100: if n>10: break print(n) n = n + 1 print('END')
1 2 ... 10 END
continue:跳出当前这次循环,直接开始下一次循环
n = 0 while n<10: n = n+1 print(n)
10
只想打印奇数,可以用continue语句跳过某些循环
n = 0 while n<10: n = n+1 if n%2 == 0: #如果n是偶数,执行continue语句 continue #continue语句会直接继续下一轮循环,后续的print()不会执行 print(n)
1 3 5 7 9
break是结束整个循环体,continue是结束单次循环,直接开始下一次循环。
break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。
8.dict和set
dict:使用键值存储,具有极快的查找速度
d = {'Michael':95, 'Bob':75, 'Tracy':85} d['Michael']
95
把数据放入dict的方法,除了初始化时指定外,还可以通过key放入,即新增
d['Adam'] = 67 d['Adam'] d
{'Michael': 95, 'Bob': 75, 'Tracy': 85, 'Adam': 67}
由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉
d['Jack'] = 90 d['Jack'] d['Jack'] = 88 d['Jack']
88
如果key不存在,dict就会报错,要避免key不存在的错误,有两种方法:
1).
'Thomas' in d
2).
d.get('Thomas',0)#如果不在就直接返回0
要删除一个key,用pop(key)方法,对应的value也会从dict中删除
d.pop('Bob') d
{'Michael': 95, 'Tracy': 85, 'Adam': 67}
dict内部存放的顺序和key放入的顺序是没有关系的
和list比较,dict有以下几个特点:
1).查找和插入的速度极快,不会随着key的增加而变慢
2).需要占用大量的内存,内存浪费多
而list相反:
1).查找和插入的时间随着元素的增加而增加
2).占用空间小,浪费内存很少
所以,dict是用空间来换取时间的一种方法
dict的key是不可变对象,在python中,字符串、整数等都是不可变的,因此可以放心做为key,而list可变,不能作为key
set和dict类似,也是一组key的集合,但不存储value,由于key不能重复,所以,在set中,没有重复的key
s = set([1,2,3])
重复元素在set中自动过滤
s = set([1,1,2,2,3,3,])
s
{1, 2, 3}
s = set([1,1,2,2,3,3,]) s.add(3) s
{1, 2, 3}
s = set([1,1,2,2,3,3,]) s.remove(3) s
{1, 2}
可以进行数学运算
s1 = set([1,2,3]) s2 = set([2,3,4]) s1&s2 s1 | s2
{2, 3} {1, 2, 3, 4}
str是不变对象,list是可变对象
a = ['c','b','a'] a.sort() a
['a', 'b', 'c']