第三周:
3.1数字类型及操作
整型:pow(x,y)x的y次方
浮点型:
复数类型:
数值运算与操作符:加减乘除 x/y产生小数,10/3=3.3333 x//y如:10//3=3
正+ ,负-,x%y取余,
x**y当 y是小数时,开方运算。
类型之间可进行混合运算,生成结果为最宽的类型。
数值运算函数:int(x)把x舍弃小数部分变成整数int(123.34)为123 int("123")结果为123
float(x)功能和int()相反
3_2.实例:工作日的力量
day = 1.0
dayfactor = 0.01
for i in range(365):
if i%7 in [6,0]:
day = day*(1-dayfactor)
else:
day = day*(1+dayfactor)
print("工作日的力量{:2f}".format(day))
3.3字符串类型及操作
单双引号只能一行,三单双引号可以多行
字符串操作:str[]索引
高级切片:str[M:N:K], M和N可以缺省,表示到字符串开头或者末尾
字符串操作符:
字符串处理函数:len() str() eval()
----------------------------
3.4 time库的使用
时间格式化:
程序计时应用:
3.5 文本进度条
print()默认打印完换行,于是()中添加end=""是使print最后字符串是空字符串,覆盖换行字符、\r表示在打印槽信息之前,先把光标回退到行首
'abcd'<'ad'返回Ture 是怎么比较的?
可以导入中文名称的模块
第四周:程序的控制结构
4.1程序的分支结构
format里面的内容就是二分支结构的紧凑形式:
程序的异常处理:
4.2 身体的值数
4.3程序的循环结构
遍历循环,无限循环
循环控制保留字 break continue
s = s[:-1]表示去掉最后一个字符
4.4random使用
圆周率的计算
函数的参数传递
函数定义时,可设计可变数量参数,即不确定参数总数量:def 函数名(<参数>,*b)
def fact(n,*b):
s = 1
for i in range(1,n+1):
s*=i
for item in b:
s *=item
return s
print(fact(10,3))
print(fact(10,3,5,8))
默认参数放在非默认参数后面
局部变量为组合数据类型且未创建,等同于全局变量
ls = ["F","f"]
def func(a):
ls.append(a)
return
func("C")
print(ls) 结果:['F', 'f', 'C']
ls = ["F","f"]
def func(a):
ls = []
ls.append(a)
return
func("C")
print(ls) 结果:['F', 'f']
lamda函数
<函数名> = lamda<参数1,参数2>:<表达式>
f = lambda x,y:x+y
a=f(10,15)
g = lambda :"lambda函数"
print(g())
#SevenDigitsDrawV1.py 简易七段管
import turtle
def drawLine(draw): #绘制单段数码管
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
turtle.right(90)
def drawDigit(digit): #根据数字绘制七段数码管
drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,6,8] else drawLine(False)
turtle.left(90)
drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
def drawDate(date): #获得要输出的数字
for i in date:
drawDigit(eval(i)) #通过eval()函数将数字变为整数
def main():
turtle.setup(800, 350, 200, 200)
turtle.penup()
turtle.fd(-300)
turtle.pensize(5)
drawDate('20181010')
turtle.hideturtle()
turtle.done()
main()
版本二:
#SevenDigitsDrawV2.py
import turtle, time
def drawGap(): #绘制数码管间隔
turtle.penup()
turtle.fd(5)
def drawLine(draw): #绘制单段数码管
drawGap()
turtle.pendown() if draw else turtle.penup()
turtle.fd(40)
drawGap()
turtle.right(90)
def drawDigit(d): #根据数字绘制七段数码管
drawLine(True) if d in [2,3,4,5,6,8,9] else drawLine(False)
drawLine(True) if d in [0,1,3,4,5,6,7,8,9] else drawLine(False)
drawLine(True) if d in [0,2,3,5,6,8,9] else drawLine(False)
drawLine(True) if d in [0,2,6,8] else drawLine(False)
turtle.left(90)
drawLine(True) if d in [0,4,5,6,8,9] else drawLine(False)
drawLine(True) if d in [0,2,3,5,6,7,8,9] else drawLine(False)
drawLine(True) if d in [0,1,2,3,4,7,8,9] else drawLine(False)
turtle.left(180)
turtle.penup()
turtle.fd(20)
def drawDate(date):
turtle.pencolor("red")
for i in date:
if i == '-':
turtle.write('年',font=("Arial", 18, "normal"))
turtle.pencolor("green")
turtle.fd(40)
elif i == '=':
turtle.write('月',font=("Arial", 18, "normal"))
turtle.pencolor("blue")
turtle.fd(40)
elif i == '+':
turtle.write('日',font=("Arial", 18, "normal"))
else:
drawDigit(eval(i))
def main():
turtle.setup(800, 350, 200, 200)
turtle.penup()
turtle.fd(-350)
turtle.pensize(5)
# drawDate('2018-10=10+')
drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
turtle.hideturtle()
turtle.done()
main()
def fact(n):
if n==0:
return 1
else:
return n*fact(n-1)
a=fact(5)
print(a)
def rvs(s): //字符串反转
if s=="":
return s
else:
return rvs(s[1:])+s[0]
def f(n): //数列
if n==1 or n==2:
return 1
else:
return f(n-1)+f(n-2)
def hanoi(n,src,dst,mid): //汉诺塔
global count
if n==1:
print("{}:{}->{}".format(n,src,dst))
count += 1
else:
hanoi(n-1,src,mid,dst)
print("{}:{}->{}".format(n,src,dst))
count += 1
hanoi(n-1,mid,dst,src)
hanoi(3,"A","C","B")
print(count)
将py文件转换成可执行文件
(cmd命令行) pyinstaller -F 文件名.py
参数 | 描述 |
-clean | 清理打包过程中的临时文件 |
-h | 查看帮助 |
-D,--onedir | 默认值,生成dist文件夹 |
-F,--onefile | 在dist文件夹中只生成独立的打包文件 |
-i<图标文件名.ico> | z指定打包程序所使用的 图标文件 |
#KochDrawV1.py
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,400)
turtle.penup()
turtle.goto(-300, -50)
turtle.pendown()
turtle.pensize(2)
koch(600,3) # 0阶科赫曲线长度,阶数
turtle.hideturtle()
main()
#KochDrawV2.py
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(600,600)
turtle.penup()
turtle.goto(-200, 100)
turtle.pendown()
turtle.pensize(2)
level = 3 # 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 & T | 返回一个新集合,包括同时在集合S和集合T中的元素 |
S ^ T | 返回一个新集合,包括集合S和集合T的非相同元素 |
S <=T或S |
返回Ture/False,判断S和T的子集关系 |
S >=T或S>T |
返回Ture/False,判断S和T的包含关系 |
S |= T | 更新集合S,包括在集合S和T中的所有元素 |
S -= T | 更新集合S,包括在集合S但不在T中的元素 |
S &= T | 更新集合S,包括同时在集合S和T中的元素 |
S ^= T | 更新集合S,包括集合S和T中的非相同元素 |
S,add(x) | 如果不在集合S中,将x增加到S |
S,discard(x) | 移除S中元素x,如果x不在集合S中,不报错 |
S,remove(x) | 移除S中元素x,如果x不在集合S中,产生异常 |
S,clear(x) | 移除S中的所有元素 |
S,pop(x) | 随机返回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中,返回False,否则返回True |
set(x) | 将其他类型变量x转变为集合类型 |
try:
while True:
print(A.pop(),end=" ")
except:
pass
ls = ["p","p","y","y",123]
s = set(ls)
{'p','y',123}
lt = list(s)
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为步长的元素子序列 |
len(s) | 返回序列的长度 |
min(s) | 返回序列s的最小元素,s中元素需要可比较,不然返回错误 |
max(s) | 返回序列s的最大元素,s中元素需要可比较,不然返回错误 |
s.index(x) | 返回序列s中x第一次出现的位置 |
s.index(x,i,j) | 返回序列s中从i到j位置,x第一次出现的位置 |
s.count(x) | 返回序列s中出现x的次数 |
列表是序列类型的一种扩展,十分常用,列表是一种序列类型,创建后可以随意被修改,使用[]或list()创建,元素箭用逗号分隔,可以使用或使用小括号
ls[i] = x | |