做两个星期的python练习
感觉再不自己写写代码手就生了.想法是过一下廖雪峰老师的教程,看一下python3.之前的话总是需要用的时候查查用用,而且用的是Python2. Python还是值得作为常用语言的,毕竟这么高效方便.本学期需要用Django.之后可能需要tensorflow.再就是玩爬虫的时候以及分析数据的时候各种常用的库均源于python.做个记录,然后方便查询.完成训练之后也可以整理一下.
2018.3.8
1.写py脚本指定编码方式,在文本开头添加:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
解释:第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序. 第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码. 当然,除了申明这里以外,也要保证文本编辑器是使用的utf-8编码.
2.格式化的写法
python的格式化输出与C语言几乎一样.格式化的意思是用%占位符放到前面,然后相应的值补充在后.举例
str = 'hello, %s' % 'world'
sentence = 'there are %d apples on the %s' % (2,'desk')
控制小数点位数: 比如规定2位小数:
print('adding rate is %.2f' % rate)
ps: 如果要在字符串中输出%,使用%转义即可:
example = 'growth rate: %d %%' % 7
3.list 和 tuple
- list 和 tuple 的内容都可以是多样的,字符串,数,或者是嵌套的tuple或者list.
- list的索引可以倒数着写: example[-1] 意思就是倒数第一个元素
- len()函数
- list末尾增加元素用append:
classmates = ['Michael', 'Bob', 'Tracy']
classmates.append('Adam')
- list按索引插入元素:
classmates.insert(1,'jack')
list 的 pop() 默认移除末尾元素,添加索引移除索引元素
tuple没什么好说的,记住是不可边元素
4. 条件判断
bool = 1
if bool > 0:
print('positve')
elif bool == 0:
print('zero')
else:
print('negative')
5.循环
- 计算1加到100:记住range是左闭右开
sum = 0
for i in range(101):
sum += i
print(sum)
- while循环
sum = 0
n = 99
while n >= 0:
sum += n
n--
print(sum)
- break和continue的用法大家都一样
n = 1
while n <= 100:
if n > 10: # 当n = 11时,条件满足,执行break语句
break # break语句会结束当前循环
print(n)
n = n + 1
print('END')
n = 0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶数,执行continue语句
continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
print(n)
6.dict
dict用的是hash定位的,因此key都要放不可变的对象
- dict和STL里的map用法一样,python里是用花括号表示,新建和添加可以如下操作
di = {'Bob':100,'Jack':96,'Nacy':99}
di['Mike'] = 88
- 判断key存在的话可以用in语法或者get()方法 (get方法不带第二个参数表示会返回none.)
>>> 'Thomas' in d
False
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
- 如果要删除一个key,用pop(key)方法,对应的value也会从dict中删除:
d.pop('Bob')
pop()函数是有返回值的,即对应key的value.
7. set
set和数学上的集合的概念是一样的,可以做交或者并.
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
{1, 2, 3}
>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.remove(4)
>>> s
{1, 2, 3}
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
基本操作就这样,记住set也只能放不可边对象.
8.写函数
- 写法没什么好讲的,看两个例子就懂了,默认值什么的和其他高级语言一样.返回多个值的时候其实返回的是tuple
def test_function(x):
if x>0:
return x
else:
return -x
def nop():
pass
def move(x, y, step, angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
把写好的函数放到function.py里,然后在目标文件路径下打开terminal进入交互式界面可以用import来引用函数:
from function import move
此时就可以使用move函数了. 另外,pass是占位符,为了满足语法占位用的.
- 参数检查
如果想要是用的时候解释器做参数检查,那写函数的时候记得添加参数检查raise错误,使用isinstance来检查类型
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x