今天学了学递归,所有语言的递归都是一个思想吧。拿递归画了个小雪花,还蛮好玩的。哈哈哈哈哈哈。
科赫小雪花:
import turtle def koch(size, n): if n == 0: turtle.fd(size) else: for angle in [0, 60, -120, 60]: turtle.left(angle) koch(size / 3, n - 1) def main(): turtle.setup(800, 800) turtle.penup() turtle.goto(-300, -50) turtle.pendown() turtle.pensize(2) level = 3 koch(400, level) turtle.right(120) koch(400, level) turtle.right(120) koch(400, level) turtle.hideturtle() main()
集合操作符:
并操作:S | T
差操作:S - T
交操作:S & T
补操作:S ^ T
关系操作符:<=,>=,<,>
集合处理方法:
S.add(x) 如果x不在集合S中,将x增加到S
S.discard(x) 移除S中元素x,如果x不在集合S中,不报错
S.remove(x) 移除S中元素x,如果x不在集合S中,产生KeyError异常
S.clear() 移除S中所有元素
S.pop() 随即返回S的一个元素,更新S,若S为空产生KeyError异常
S.copy() 返回集合S的一个副本
len(S) 返回集合S的元素个数
x in S 判断S中元素x,x在集合S中,返回True,否则返回False
x not in S 判断S中元素x,x不在集合S中,返回True,否则返回False
set(x) 将其他类型变量x转变为集合类型
集合的利用:
数据去重:
l = "hello" s = set(l) l = list(s) print(l)
序列类型通用操作符:
x in s 如果x是序列s的元素,返回True,否则返回False
x not in s 如果x是s的元素,返回False,否则返回True
s + t 连接两个序列s和t
s * n 或n * s 将序列s复制n次
s[i] 索引,返回s中第i个元素,i是序列的序号
s[i : j] 或 s[i : j : k] 切片,返回序列s中第i到j以k为步长的元素子序列
序列类型操作实例:
ls[::-1] 反转一个序列
序列类型通用函数和方法:
len(s) 返回序列s的长度,即元素个数
min(s) 返回序列s的最小元素,s中元素需要可比较
max(s) 返回序列s的最大元素,s中元素需要可比较
s.index(x) 或 s.index(x, i, j) 返回序列s从i开始到j位置中第一次出现元素x的位置
元组类型操作:
元组类型创建后无法修改
print(ls[::-1]) 反转输出一个元组类型,但是并不改变原有的顺序
列表注意事项:
ls = ['cat'] lt = ls lt[0] = 'rat' print(ls[0]) #这样将ls复制lt,只是lt,ls指向同一片存储空间,并没有重新创建一个列表,所以修改lt[0]的值会改变ls[0]的值
列表类型操作函数和方法
ls.append(x) 在列表ls最后增加一个元素x
ls.clear() 删除列表ls中所有元素
ls.copy() 生成一个新列表,赋值ls中所有元素
ls.insert(i, x) 在列表ls的第i位置增加元素x
ls.pop(i) 将列表ls中第i位置元素去除并删除该元素
ls.remove(x) 将列表中出现的第一个元素x删除
ls.reverse() 将列表ls进行反转
列表元素的操作运用:
lt = [] for i in range(5): lt.append(i) lt[1] = 5 lt.insert(1, 6) del lt[0] del lt[0:3] if 0 in lt: print("YES") else: print("NO") lt.append(0) pos = lt.index(0) size = len(lt) max_element = max(lt) print(lt) print(pos) print(size) print(max_element) lt.clear()