1 字符串语法
'go'+'bear'
#output:'gobear'
'draw'[::-1]
#output:'ward'
下面是一段文字的操作/玩耍
shakes = open('shakespeare.txt')
text = shakes.read().split()
len(text) ## 长度(有几个词)
#output:105
text[:25]
#output:text的前25个单词
text.count('the')
#output:text里‘the’出现过的次数
words = set(text)
words
#output:text里出现过的所有单词
{w[0] for w in words}
#output:words里每个单词的第一个字母的集合
'computer'in words
#output:False(words里没有computer这个词)
# 找回文字符串
{w for w in words if w== w[::-1]}
{w for w in words if w== w[::-1] and len(w)>4}
2 操作符 操作数 函数
操作符和操作数也是表达式
从外往里拆看结构-先运算符(operator),然后操作数子表达式(operand subexpression)
从里往外开始算-先把操作数子表达式都得到,再计算运算符
2.1 计算
max(2,4,5,6)
#output:6
from operator import add,mul,sub
x=add(2,3)
y=mul(2,2)
print(x,y)
#output:5 4
pow(2,3)
#output:8
5/3
#output:1.66666667
5//3
#output:1
5%3
#output:2
以上,
①max add mul sub都是函数。
②pow求幂。pow(底数,次数)
③在python中,一个反斜杠 ‘ / ’会输出完整运算结果,即会输出小数点后的,返回的是浮点类型结果。
而双反斜杠“ // ” 会输出整数结果,即返回整型结果。
符号%是取余数
2.2 赋值与函数
from math import pi,sin
pi
output:3.141592653589793
sin(pi/2)
output:1.0
radius=10
area=pi*radius*radius
area
#output:314.1592653589793
radius=5
area
#output:314.1592653589793
以上,
这里是赋值,于是赋值后改变radius的值,area的值是不会变化的。
如要可变化、灵活性的采用函数:
def area(): #no operand
return pi*radius*radius
area()
#output:78.53981633974483
radius=8
area()
#output:201.06192982974676
2.3 函数的两组区分
01 Return
def f(x):
a = x+1
return a
a = f(5)
a
#output:6
a的值是5
01 No Return
def f(X):
add(x,x)
a = f(5)
a
#output:None
a的值是None
02 Pure functions :
函数有输入(their arguments) and 输出(the result of applying them),比如一些内置函数(built in function)
def f(x):
a = x+1
return a
m=5
f(m)
02 Non-pure functions:
除了返回一个值,非纯函数可能产生副作用(side effect)。常见的side effect 是生成除了返回值外的输出,比如print function
def f(x):
print(x)
a = x+1
return a
m=5
f(m)
值得注意,result = with_if_function()是除了得到返回值同时还会运行函数(即print的内容也会出现)。而print(result)则只会输出函数返回值(值或者None)。【详见同专栏cs61a-hw1】
x=print(-2)
#output:-2
print(x)
#output:None
>>> print(print(1),print(2))
1
2
None None
3 其余概念
3.1 找一个变量
①first look for it in the local/current frame(当前所在frame,每引用一个函数就进入了它的frame)
②if not found,look for it in global frame
***the local frame is created when you #call the function 不是定义的时候噢!