命令行
pwd(‘print working directory’)
cd ~ 可以回到home路径
mkdir 创建文件夹,如有空格要加" ",如"i have fun"
cd ../.. 回到上两层目录
PYTHON
round() 四舍五入浮点数
''' ''' 定义多行字符串
%r是原始表示,raw,用于调试
print后面加逗号,print就不会输出换行符
raw_input()返回的是字符串,input()返回整型或字符串。intput()输入字符串要加引号如'aaa'。当输入一个式子比如4+5,input()输出9,raw_input()输出4+5,input()避免使用input()
(python3没有raw_input(),input()返回的是字符串)
int(raw_input())强制转换为整型
代码太长时,括号可以拆成两行
win下,python -m pydoc raw_input 可以查看raw_input()的帮助函数
argv和raw_input()的不同在于,argv是用户在执行命令时就要输入参数,如果是脚本运行过程中需要用户输入,用raw_input()命令行参数是字符串。
在提示符下使用open打开一个文件:txt=open('sample.txt') txt.read()
txt=open(filename)返回的不是文件内容,是一个”file object”
关于from sys import argv,sys是一个软件包,从该软件包中取出argv这个特性来用,类比c中的#include<>
读写:'a'(append追加),w+,r+,a+,同时读写的方式打开。open(filename)默认用'r'打开
用’w’模式打开文件,会清除文件内容,即覆盖掉旧文件,之后不需要target.truncate()
text.read()返回值是字符串
控制台中 cat 1.txt 可以直接显示文件内容
f.seek(0)回到文件开始位置,f.seek(1)定位到当前位置
f.readline()会读取文件的一行,然后将“磁头”移动到\n后面
print 语句会自动添加一个\n,在print后面加个逗号就不会自动添加了
函数内部的变量是临时的
split()函数 http://www.runoob.com/python/att-string-split.html
str.split(str="", num=string.count(str)) txt=open("sample.txt") (txt.read()).split(' ')
sorted() 函数 https://www.cnblogs.com/woshitianma/p/3222989.html
pop()函数 https://www.cnblogs.com/sunxiaotao/p/4462347.html
pop(-1) 列表最后一个元素出栈
import ex25 不需要加 .py ,把ex25.py当做一个“模块”,可以直接调用里面的函数
help(ex25)可得到模块帮助文档。
from ex25 import * 可以导入模块,就可以直接在控制台调用函数了
if、else 后面要跟冒号,只要有冒号,下面的代码块就要缩进
if、elif、else 只会运行一个
1<x<10 ?可用 x in range(1,10) 表示
x=int(raw_input('>')) if x in range(1,10): print '1<x<10'
range()函数 http://www.runoob.com/python/python-func-range.html
list http://www.runoob.com/python/python-lists.html
if not next.isdigit() :#判断是不是数字http://blog.csdn.net/hjxu2016/article/details/60112572
exit(0)正常退出 exit(1)发生错误中断
python 关键字 https://www.cnblogs.com/xueweihan/p/4518022.html
mystuff.append(“hello”) 的工作原理:找到mystuff对应的变量,是个列表,找到列表的append函数,真正运行的是append(mystuff,”hello”)
‘-‘.join(stuff) 用’-‘连接stuff中的字符串 原理:join(‘-‘,stuff)
stuff[3:5]是个列表切片,从第三个元素开始取值,直到第五个元素,不包含第五个。类比range(3,5)
字典方法item(),返回(键, 值)元组数组
states={'BJ':'BeiJing','SH':'ShangHai'} for key,value in states.items(): print value
输出:
ShangHai
BeiJing
字典方法get(),查找有没有该键,没有就返回默认值 http://www.runoob.com/python/att-dictionary-get.html
states={'BJ':'BeiJing','SH':'ShangHai'} state1=states.get('BJ') print state1 state2=states.get('GZ') print state2 state3=states.get('GZ','can\'t find') print state3
输出:
BeiJing None can't find
python有个通用的模式:
1.拿一个类似“键=值”风格的容器
2.通过“键”的名称获取其中的“值”
对于字典来说,键是一个字符串,获取值的语法是"[键]"。对于模块来说键是函数,获取值的语法是".键"
模块的另一种理解:把它当做一种特殊的字典,通过"."来访问里面的代码。类是一种相似的结构。
类,迷你模块。模块的导入对应类的实例化。“实例化”意思是创建,一个类实例化之后,就得到了一个对象。
class MyStuff(object): def __init__(self): self.tangerine = "And now a thousand years between" def apple(self): print "I AM CLASSY APPLES"
thing = MyStuff() thing.apple() print thing.tangerine
输出:
I AM CLASSY APPLES
And now a thousand years between
上面代码的过程:
1.python看到MyStuff()并且知道了他是已定义的类;
2.python创建一个空对象self,里面包含该类中用def创建的函数,__init__(self)和apple(self);
3.python会检查是否创建了一个__init__函数,如果有创建,就会调用这个函数,从而对刚创建的空对象实现了初始化;
4.__init__中的参数self就是刚刚创建的空对象,可以对他进行类似模块、字典的操作;
5.self.tangerine = "And now a thousand years between",初始化了该对象
6.python将刚刚新建的对象self赋给一个叫thing的变量
类:一个新的类型的东西
对象:最基本的东西或者某个东西的实例
实例:一个新创建的东西
对象是类的实例。对象属于某个类,而某个类又属于另一个类。
self:在类的函数中,self指代被访问的对象或者实例的一个变量。self代表类的实例,而非类。
继承:一个类继承另一个类的特性,类比父与子
组合:一个类可以将别的类作为他的部件构建起来,类比车子和车轮
属性:来自于组合,通常是一个变量
是什么(is-a):用来描述继承关系,鲑鱼是一种鱼(Salmon is-a fish)
有什么(has-a):用来描述某个东西是由别的东西组成的,或者某个东西有某个特征,鲑鱼有一张嘴(Salmon has-a mouth)
class X(Y):创建一个叫X的类,它是Y的一种。(继承)
b=a[:] ,将列表a复制给b 如果是b=a,只是地址赋给b
class Name(object) object是一个类
super()函数:在super机制里可以保证公共父类仅被执行一次,执行的顺序是按照MRO(Method Resolution Order)方法解析顺序进行的。https://www.jianshu.com/p/45619cf50aa7
面向对象的分析和设计:
1.写出要解决的问题,或者画出流程图
2.将关键概念摘录出来
3.创造类图
4.用代码实现类
这是一个自顶向下的流程,将抽象的概念逐渐细化,直到变成具体的代码。