python 打印生日歌 python用函数写生日歌

您所在的位置:网站首页 代表生日快乐的数字组合 python 打印生日歌 python用函数写生日歌

python 打印生日歌 python用函数写生日歌

2024-01-05 03:14| 来源: 网络整理| 查看: 265

python05(上)---第五章:函数和代码复用(数码管绘制、科赫曲线)(datetime库、递归)一、函数的语法形式:二、lambda函数:三、全局变量和局部变量:四、输出时间:datetime库五、递归:在函数定义中调用函数自身

一、函数的语法形式:

1.函数格式:

def (): return

2.生日歌(函数练习):

def happy(): print("Happy birthday to you!") def happy_name(name): happy() happy() print("Happy birthday,dear {}!".format(name)) happy() happy_name('Lily') 结果显示: Happy birthday to you! Happy birthday to you! Happy birthday,dear Lily! Happy birthday to you!二、lambda函数:

lambda函数是一种特殊的函数—匿名函数。用于简单的、能在一行内表示的函数。

语法格式如下: = lambda :

简单应用实例如下:

f=lambda x,y:x+y print(f(10,20)) 结果显示:30三、全局变量和局部变量:

1.对于整数n:

n=1 def func(a,b): n=b return a*b #对于字符串a,将其复制两次 s=func("knock~",2) print(s,n) 结果显示: knock~knock~ 1 此时n为全局变量,不改变其值。

在函数内部,声明 n为全局变量

n=1 def func(a,b): global n n=b return a*b #对于字符串a,将其复制两次 s=func("knock~",2) print(s,n) 结果显示: knock~knock~ 2 此时n为全局变量,但改变了其值。

2.对于列表类型 ls: (与整数类型大不相同)

ls=[] def func(a,b): ls.append(b)#将局部变量b增加到全局变量Ls中 return a*b s=func("knock~",2) print(s,ls) 结果显示: knock~knock~ [2] 可见,列表类型和整数类型不一致,在函数内部不需要global声明,却可以改变其值。 即:对于列表类型,函数可以直接使用全局列表而不需要采用global进行声明。

将上述代码改为:

ls=[] def func(a,b): ls=[] ls.append(b)#将局部变量b增加到全局变量Ls中 return a*b s=func("knock~",2) print(s,ls) 结果显示:knock~knock~ [] 即在函数内部创建局部列表变量,其全局变量不发生改变。四、输出时间:datetime库

1.strftime()控制时间输出 格式符

python 打印生日歌 python用函数写生日歌_全局变量

import datetime someday=datetime.datetime.now() print(someday) week=someday.isoweekday() print(week) style=someday.strftime("%Y/%m/%d") print(style) ss=someday.strftime("%A, %d %B %Y %I:%M%p") print(ss) 结果显示: 2020-04-05 18:44:49.503503 7 2020/04/05 Sunday, 05 April 2020 06:53PM

2.七段数码管绘制

数码管绘制顺序:

python 打印生日歌 python用函数写生日歌_字符串_02

import turtle,datetime #绘制单端数码管 def drawline(draw): turtle.up() turtle.fd(6)#使得单端数码管间由一丢丢小间隙 turtle.pendown() if draw else turtle.penup()#如果draw为真,则落笔 turtle.fd(40) turtle.up() turtle.fd(6) turtle.right(90) #根据数字绘制对应的数码管 def drawdigit(d): turtle.pencolor("black") 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): for i in date:# i为 对date[0:]的字符串进行遍历,例:date="2020-04=05+",则i依次为2 0 2 0 - …… if i == "-": turtle.pencolor("green") turtle.write("年",font=("Arial",18,"normal")) turtle.fd(40) elif i == "=": turtle.pencolor("green") turtle.write("月",font=("Arial",18,"normal")) turtle.fd(40) elif i == "+": turtle.pencolor("green") turtle.write("日",font=("Arial",18,"normal")) turtle.fd(40) else: drawdigit(eval(i))#将i所表示的字符串形式 转换为整数类型 #主函数 def main(): turtle.setup(800,350,200,200) turtle.penup() turtle.fd(-350) turtle.pensize(5) time_get=datetime.datetime.now().strftime("%Y-%m=%d+") #print(time_get) drawdate(time_get) turtle.hideturtle() #执行 main()

结果显示:

python 打印生日歌 python用函数写生日歌_python_03

五、递归:在函数定义中调用函数自身

1.阶乘:

def fact(n): if n==0: return 1 else: return n*fact(n-1) num=eval(input("请输入一个整数:")) print(fact(abs(int(num))))#int截取整数 结果显示: 请输入一个整数:12.1 479001600 请输入一个整数:12 479001600 请输入一个整数:11.6 39916800

2.字符串反转:

def reverse(s): if s=="": return s else: return reverse(s[1:])+s[0] str=input("请输入一个字符串:") print(reverse(str)) 结果显示: 请输入一个字符串:ASD DSA

3.科赫曲线:

阶数为0 时,表示一个长度为L的直线

阶数为1时,表示将L等分成3段,中间一段用边长为L/3的等边三角形的两个边替代。

python 打印生日歌 python用函数写生日歌_python_04

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)#setup(a,b,c,d)cd表示窗口距离屏幕的左边上边距离,默认在中央 turtle.speed(0) turtle.up() #turtle.fd(-300) turtle.goto(-200,100)#在当时的位置(400,400),操作后,向左300 向上200 turtle.pendown() turtle.pensize(2) koch(300,3) turtle.right(120) koch(300,3) turtle.right(120) koch(300,3) turtle.hideturtle() main()

结果显示:

python 打印生日歌 python用函数写生日歌_字符串_05

4.斐波那契数列:

def fb(num): if num == 0: return 0 elif num == 1: return 1 else: value=fb(num-1)+fb(num-2) return value print(fb(4)) 结果显示:3

六、几个内置函数: all:其中的每个元素都是true则返回true,否则返回false(整数0,空字符串"",空列表). any():只要组合数据类型中任何一个是true则返回true,全部元素都是false返回false。 reversed()函数:返回输入组合数据类型的逆序形式的存储位置。在其前加上list(reversed()),才是原列表的逆序排列。 sorted()函数:对序列进行从大到小排序。 type()函数:返回每个数据所对应的类型。

ls=[1,2,5,0] print(all(ls)) print(any(ls)) print(id(ls))#返回编号(地址) print(list(reversed(ls)))#必须加上list print(sorted(ls)) print(type(ls)) print(type(reverse(ls))) 结果显示: False True 2956696361672 [0, 5, 2, 1] [0, 1, 2, 5] Traceback (most recent call last): File "F:\Python\01练习\002.py", line 8, in print(type(reverse(ls))) NameError: name 'reverse' is not define



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3