python語言程序設計基礎課后答案-第五章(嵩天)


教材:

  1.七段數碼管繪制

  2.函數的遞歸

  3.科赫曲線繪制

習題:

  1. 輸出田字格。
  2. 實現isOdd()函數。
  3. 實現isNum()函數。
  4. 實現multi()函數。
  5. 實現isPrime()函數。
  6. 使用datetime庫,對自己的生日輸出不少於10種日期格式。
  7. 輸入漢諾塔層數,輸出整個移動流程。

 1.七段數碼管繪制

import turtle, datetime
def drawLine(draw):   #繪制單段數碼管
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(40)
    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):  #獲得要輸出的數字
    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(datetime.datetime.now().strftime('%Y%m%d'))
    turtle.hideturtle()
main()

import turtle, datetime
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))  #注意: 通過eval()函數將數字變為整數
def main():
    turtle.setup(800, 350, 200, 200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate(datetime.datetime.now().strftime('%Y-%m=%d+'))
    turtle.hideturtle()
main()

 (數碼管繪制10進制變為16進制,作為字符串輸入)

import turtle, datetime
a=input('') 
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','a','b','d','e','f'] else drawLine(False)
    drawLine(True) if d in ['0','1','3','4','5','6','7','8','9','a','b','d'] else drawLine(False)
    drawLine(True) if d in ['0','2','3','5','6','8','9','b','c','d','e'] else drawLine(False)
    drawLine(True) if d in ['0','2','6','8','a','b','c','d','e','f'] else drawLine(False)
    turtle.left(90)
    drawLine(True) if d in ['0','4','5','6','8','9','a','b','c','e','f'] else drawLine(False)
    drawLine(True) if d in ['0','2','3','5','6','7','8','9','a','c','e','f'] else drawLine(False)
    drawLine(True) if d in ['0','1','2','3','4','7','8','9','a','d'] else drawLine(False)
    turtle.left(180)
    turtle.penup()
    turtle.fd(20) 
def drawDate(date):  #獲得要輸出的數字
    turtle.pencolor("red")
    for i in date:
        drawDigit(i)
def drawDate1(date):  #獲得要輸出的數字
    turtle.pencolor("red")
    count=0
    for i in date:
        count+=1
        if count>2:
            drawDigit(i)
def main():
    turtle.setup(800, 350, 200, 200)
    turtle.penup()
    turtle.fd(-300)
    turtle.pensize(5)
    drawDate(a)
    turtle.fd(20)
    turtle.pendown()
    turtle.fd(145)
    turtle.penup()
    turtle.fd(20)
    b=hex(int(a))
    print(b)
    drawDate1(str(b))
    turtle.hideturtle()
main()

 

 

 2.科赫曲線繪制

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.speed(0)#控制繪制速度
    turtle.penup()
    turtle.goto(-300,-50)
    turtle.pendown()
    turtle.pensize(2)
    koch(600,3)#0階科赫曲線長度,階數
    turtle.hideturtle()
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():
    turtle.setup(400,400)
    turtle.speed(0)#控制繪制速度
    turtle.penup()
    turtle.goto(-200,-100)
    turtle.pendown()
    turtle.pensize(2)
    turtle.pencolor("green")
    level=5
    koch(300,4)
    turtle.right(120)
    turtle.pencolor("blue")
    koch(300,4)
    turtle.right(120)
    turtle.pencolor("red")
    koch(300,4)
    turtle.hideturtle()
main()

 

輸出田字格。

def drawss(n):
    line=3*n+1
    for i in range(1,line+1):
        if i%3==1:
            print(n*"+----",end="")
            print("+")
        else:
            print("|    "*n,end="")
            print("|")
def main():
    n=eval(input("請輸入您要的階數:"))
    drawss(n)
main()

 

實現isOdd()函數。

def odd(d):
    if d%2==0:
        return True
    else :
        return False
d=int(input())
print(odd(d))

 

 

 

實現isNum()函數。

實現multi()函數。

def multi(*args):
    sum=1
    count=1
    for i in args:
        if type(i) is type(1) or type(i) is type(1.):
            sum*=i
    return sum
print(multi(2,3,1,0.5,4.99))
print(multi(2,1,'str'))

 

 

實現isPrime()函數。

 

使用datetime庫,對自己的生日輸出不少於10種日期格式。

輸入漢諾塔層數,輸出整個移動流程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM