python语言程序设计MOOC

第三周:

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使用






圆周率的计算

第五周:函数和代码复用

5.1函数的定义和使用

函数的参数传递

函数定义时,可设计可变数量参数,即不确定参数总数量: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())
5.2   七段数码管
#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()

5.3  代码复用与函数递归
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)
5.4  pyinstaller库

将py文件转换成可执行文件

(cmd命令行)   pyinstaller  -F 文件名.py

 参数 描述
     -clean 清理打包过程中的临时文件
-h 查看帮助
-D,--onedir 默认值,生成dist文件夹
-F,--onefile 在dist文件夹中只生成独立的打包文件
-i<图标文件名.ico> z指定打包程序所使用的 图标文件


5.5  绘制雪花
#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()


第六周:组合数据类型

6.1  集合类型及操作

集合用大括号{}表示,元素间用逗号分隔,集合中每个元素唯一,且不存在相同的元素,集合之间的元素是无序的。

S | T 返回一个新集合,包括集合S和集合T
S - T 返回一个新集合,包括集合S但不在集合T
S & T 返回一个新集合,包括同时在集合S和集合T中的元素
S  ^ T 返回一个新集合,包括集合S和集合T的非相同元素
S <=T或S<T 返回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)
6.2  序列类型及操作

 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的次数
元组类型定义:元组是序列类型的一种扩展,元组是一种序列类型,一旦被创建就不能被修改,使用小括号()或tuple()创建,元素间用逗号分隔,可以使用或不适用小括号,函数return回的就是元组类型。

列表是序列类型的一种扩展,十分常用,列表是一种序列类型,创建后可以随意被修改,使用[]或list()创建,元素箭用逗号分隔,可以使用或使用小括号



ls[i] = x  
   
   
   
   
   



6.4  字典类型及操作




6.5  结巴库的使用











猜你喜欢

转载自blog.csdn.net/wosinihuo/article/details/79719259