python123【函数和代码复用】练习五+测验五

练习五

一:七段数码管的绘制

import time,turtle
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(digit):
    drawlint(True) if digit in [2,3,4,5,6,8,9] else drawline(False)
    drawlint(True) if digit in [0,1,3,4,5,6,7,8,9] else drawline(False)
    drawlint(True) if digit in [0,2,3,5,6,8,9] else drawline(False)
    drawlint(True) if digit in [0,2,6,8] else drawline(False)
    turtle.left(90)
    drawlint(True) if digit in [0,4,5,6,8,9] else drawline(False)
    drawlint(True) if digit in [0,2,3,5,6,7,8,9] else drawline(False)
    drawlint(True) if digit in [0,1,2,3,4,7,8,9] else drawline(False)
   turtle.left(180)
   turtle.penup()
   turtle.fd(20)
def drawdata(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(-300)
    turtle.pensize(5)
    drawDate(time.strftime('%Y-%m=%d+',time.gmtime()))
    turtle.hideturtle()
    turtle.done()
main() 

二:科赫雪花小包裹

# 请在...补充一行或多行代码

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(level):
    turtle.setup(600,600)
    turtle.penup()
    turtle.goto(-200, 100)
    turtle.pendown()
    turtle.pensize(2)
    level = 3      
    koch(400,level)     
    turtle.right(120)
    koch(400,level)
    turtle.right(120)
    koch(400,level)
    turtle.hideturtle()
try:
    level = eval(input("请输入科赫曲线的阶: "))
    main(level)
except:
    print("输入错误")

三:任意积累

# 请在...补充一行或多行代码
def cmul(a,*b):
    m = a
    for i in b:
        m *= i
    return m
print(eval("cmul({})".format(input())))

四:斐波那契数列计算

# 请在...补充一行或多行代码
def fbi(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fbi(n-1) + fbi(n-2)
        
n = eval(input())
print(fbi(n))

五:汉诺塔实践

# 请在...补充一行或多行代码
steps = 0
def hanoi(src, des, mid, n):
    global steps
    if n == 1:
        steps += 1
        print("[STEP{:>4}] {}->{}".format(steps, src, des))
    else:
        hanoi(src, mid,des, n-1)
        steps += 1
        print("[STEP{:>4}] {}->{}".format(steps, src, des))
        hanoi(mid,des,src,n-1)
N = eval(input())
hanoi("A", "C", "B", N)

测验五

选择题

1
以下选项不是函数作用的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬A
A:提高代码执行速度
B:复用代码
C:增强代码可读性
D:降低编程复杂度
2

def f(a,b):
	a = 4
	return a+b
def main():
	a = 5
	b = 6
	print(f(a,b),a+b)
main()

输出结果

10 11

3
以下关于Python函数说法错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬B

def func(a,b):
  c=a**2+b
  b=a
  return c
a=10
b=100
c=func(a,b)+a

A:执行该函数后,变量a的值为10

B:执行该函数后,变量c的值为200

C:该函数名称为func

D:执行该函数后,变量b的值为100
4
以下关于函数调用描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬A
A:自定义函数调用前必须定义
B:Python内置函数调用前需要引用相应的库
C:函数在调用前不需要定义,拿来即用就好
D:函数和调用只能发生在同一个文件中
函数调用前必须已经存在函数定义,否则无法执行。
Python内置函数直接使用,不需要引用任何模块。

5
模块内高耦合、模块间低耦合。
6
递归不提高程序执行效率。

任何递归程序都可以通过堆栈或队列变成非递归程序(这是程序的高级应用)。
7
调用函数不需要知道函数内部实现原理,只需要知道调用方法(即接口)即可。
8
def vfunc(*a, b) 是错误的定义:*a表示可变参数,可变参数只能放在函数参数的最后。
9
函数可以包含0个或多个return语句
10
每个递归函数至少存在一个基例,但可能存在多个基例。

一:随机密码生成

#请在...补充代码
import random

def genpwd(length):
    a = pow(10,length - 1)
    b = pow(10,length) - 1
    return "{}".format(random.randint(a,b))
length = eval(input())
random.seed(17)
for i in range(3):
    print(genpwd(length))

二:连续质数计算

# 请在...补充一行或多行代码
def prime(m):
    for i in range(2,m):
        if m % i == 0:
            return False
    return True
            
n = eval(input())
n_ = int(n)
n_ = n_ + 1 if n_ < n else n_
count = 5
while count > 0:
    if prime(n_):
        if count > 1:
            print(n_,end = ",")
        else:
            print(n_,end = "")
        count -= 1
    n_ += 1
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尾迹双冒号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值