python log 3 done

判断一个数字处于某个值域,可以 1<x<10,也可以 x in range(1,10),其中range(1,10)是10>x>=1,包含1不包含10。

range(0,10)可以直接赋值给一个list。

序数,ordinal number

基数,cardinal number

 

If 语句的规则:

1. 每一个“if语句”必须包含一个else。

2. 如果这个“else”永远都不应该被执行到,因为它本身没有任何意义,那你必须在else语句后面使用一个dead/die函数,让它打印出错误信息并且死给你看,可以找出很多错误。

3. “if语句”的嵌套不要超过2层,最好尽量保持只有1层。如果在if里面又有了一个if,那你就需要把第二个if移到另一个函数里去。

4. 将“if语句”当做段落来对待,其中的每一个if,elif,else组合的最前面和最后面留一个空行加以区分。

5. 布尔条件测试应该很简单,如果很复杂的话,需要将它们的运算事先放到一个变量里,并且为变量取一个好理解的名字。

遵循上面的规则,会写出比大部分程序员都易读更好的代码。但在日常编程中不要成为这些规则的奴隶。觉得很蠢就不要用。

 

循环的规则:

1. 只有在循环永不停止时使用“while循环”,可能永远用不到。这条只在python中成立。

2. 其他类型的循环都使用“for循环”,尤其是在循环的对象数量固定或有限的情况下。

规则是可以打破的!

TIPS:

每个程序员在开始一个新的大项目时,都会被非理性的恐惧影响到。为了避免这种恐惧,他们会拖延时间,到最后一事无成。避免这种情况的最好的方法是把自己要做的事情列出来,一次完成一样。

 

join方法 是连接string中的元素

str.join = join(…)

    S.join(iterable) -> string

    Return a string which is the concatenation of the strings in the

    iterable.  The separator between elements is S.

eg:

>>> s=”abcd”

>>> “,”.join(s)

‘a,b,c,d’

>>> “,”.join([‘a’,’b’,’c’])

‘a,b,c’

>>> “,”.join((‘a’, ‘b’, ‘c’))

‘a,b,c’

>>> “,”.join({‘a’:1, ‘b’:2, ‘c’:3})

‘a,c,b’

join的四个参数有str,list,tuple,dict

Python主要有三种数据类型:字典、列表、元组。
分别由花括号,中括号,小括号表示。
字典:dic={'a':1,'b':3}
列表:list=[1,2,3,4]
元组:tup=(1,2,3,4)

dir(something)

给dir()提供一个模块名字,返回在那个模块中定义的名字的列表。对于一个模块,包括在模块中定义的函数,类和变量。

当没有为其提供参数时, 它返回当前模块中定义的名字的列表。

>>> dir(list)

[‘__add__’, ‘__class__’, ‘__contains__’, ‘__delattr__’, ‘__delitem__’, ‘__delslice__’, ‘__doc__’, ‘__eq__’, ‘__format__’, ‘__ge__’, ‘__getattribute__’, ‘__getitem__’, ‘__getslice__’, ‘__gt__’, ‘__hash__’, ‘__iadd__’, ‘__imul__’, ‘__init__’, ‘__iter__’, ‘__le__’, ‘__len__’, ‘__lt__’, ‘__mul__’, ‘__ne__’, ‘__new__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’, ‘__reversed__’, ‘__rmul__’, ‘__setattr__’, ‘__setitem__’, ‘__setslice__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’, ‘append’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’]

class Song(object):

#object是类实例化时传进来的对象

#在__init__函数中,参数即是类实例化时的参数对象

        def __init__(self, lyrics):

                self.lyrics = lyrics

#在函数中 调用self,self即可看作一个数据对象,在下面的函数中调用了self的lyrics数据。

        def sing_me_a_song(self):

                for line in self.lyrics:

                        print line

#在实例化happy_birthday这个对象时,参数作为Song这个类的参数传了进去。

happy_birthday = Song([“Happy birthday to you”,

                        “I don’t want to get sued”,

                        “So I’ll stop right here”])

 

 

python log 2 done

“%r\n%r\n%r\n” % (line1, line2, line3)是一个string格式,格式化的字符串,可以作为一个参数传入函数。比如,

line1 = raw_input(“line 1: “)

line2 = raw_input(“line 2: “)

line3 = raw_input(“line 3: “)

print “Now I’m going to write these to the file.”

target.write(“%r\n%r\n%r\n” % (line1, line2, line3))

cat  连接 concatenate

open(file).read() 无需再执行close () ,因为read()一旦运行,文件就会被读到结尾并被close掉。

*args  是一个list,参数解包 unpack

f = open(file), 然后执行f.seek(0) 文件读写头回到文件的开始

在read()之后调用readline()要先调用seek(0)回到文件的开始,不然此时read()之后的读取位置是在文件末尾,再调用readline()读取不到内容。

print的句尾加一个逗号, print不会把\n打出来换行

import modules时不需要加.py后缀

帮助文档是定义函数时放在””” “””之间的 是documentation comments,文档注解

在自己写的模块中 help(test25),出现下面的解释,COOL.

Help on module test25:

NAME

    test25 – #coding=utf-8

FILE

    /Users/DoraZhang/Documents/p_testcase/test25.py

FUNCTIONS

    break_words(stuff)

        This function will break up words for us.

    

    print_first_and_last(sentence)

        Prints the first and last words of the sentence.

    

    print_first_and_last_sorted(sentence)

        Sorts the words then prints the first and last one.

    

    print_first_word(words)

        Prints the first word after popping it off.

    

    print_last_word(words)

        Prints the last word after popping it off.

    

    sort_sentence(sentence)

        Takes in a full sentence and returns the sorted words.

    

    sort_words(words)

        Sorts the words.

(END)

import module 是把整个模块引入

from module import * 是把模块内的所有函数引入

区别在于:

第一种引入在调用函数时 需要module.function()

第二种引入在调用函数时 可以直接function()

问题来了:引入的不同模块命名有冲突怎么办?

Answer:使用import,避免使用from module import **

python中可以直接进行字符串的比对,像“test” == “test”, True。

python中用!=表示“不等于”

False True 第一个字母大写。

相似语句粘贴时,记得回查不同的部分是否已正确修改,不要粘贴之后不检查。

python的规则里,一行以冒号“:”结尾,它接下来的内容就应该有缩进。

174 of 365

这两天悟到一个道理:

遇到别人的反问还有质疑时,不要急于反思自己,责怪自己。

立足第三方,思考当前的情形,是否真的是原因在你。

有时候,对方可能受个人因素,个人经历的局限,产生质疑。

冷静之后,再去反思自己。

python log 1 done

vim 能不能命令和结果同窗口显示?command+shift+{ or } 切换标签页

python的格式化字符有哪些?            %s,%d, %r

%r与%s的区别?                                 r表示输出原始数据,s是以字符串输出

python的单位转换方式:kg to pound,cm to inch?

找到换算公式,计算。自己可以写一个转换库的。

for i in [“/”, “-“, “|”, “\\”, “|”]:

        print “%s\r” % i,

 加了末尾的“,”不换行,通过\r控制光标回到行首,就出现了闪烁的画面。

debug时使用%r,打印出变量的raw_data.