《Python语言程序设计基础》嵩天著-第5章程序全练习题答案


Python课上的作业。
贴到这里,供大家参考哦~
欢迎交流指正,共同进步,欸嘿!
这次把全部练习题写完了
至于运行结果,大家可以自己去试试

program practice 5.1 更大的田字格

def tian(n): #为了让田字格看起来更像是田字也是没谁了
    a = 5*n+1
    for i in range(1,a+1):
        if i % 5 == 1:
            print("+—————"*n,end="") #确定单个田字格的横线
            print("+")
        else:
            print("|          "*n,end="") #确定单个田字格竖线的间隔 
            print("|")
def main():
    n = eval(input("please enter n for width you want: "))
    tian(n) # 可以输出任意个田字格,因为截图原因就输出的了3*3个
main()

program practice 5.2 实现isOdd() 函数

def isOdd():
    try:
        i = eval(input("please enter a N you want: "))
        if i % 2 == 1 : # 判断是否为奇数
            return True
        else:
            return False
    except:
        print("the format u entered is wrong")
isOdd()

program practice 5.3 实现isNum()函数

def isnum(n):
    try:
        n = eval(n)
        if isinstance(n,float) or isinstance(n,complex) or isinstance(n,int):
            return True
        else:
            return False
    except:
        print("the format u entered is wrong")
n = input("please enter a C: ")
isnum(n)

program practice 5.4 实现multi函数

def multi(*b):
    a = 1
    for i in b:
        if isinstance(i,float) or isinstance(i,complex) or isinstance(i,int):
            a *= i
        else:
            print("the variable {} is illegal".format(i))
    return a
multi(2,87,"ss")

program practice 5.5 实现isprime()函数

def isprime(): # 判断一个输入是否为素数
    n = input("please enter a number: ")
    try:
        n = eval(n) # 若输入不为数字则报错
        if isinstance(n,int): # 判断为整数
            if n > 1 :# 网络上找到判断素数的方法
                for i in range(2,n): 
                    if n % i == 0: #遍历除法,若能被整除即不为素数
                        return False # 第一次被整除后就跳出
                        break
                else: 
                    return True
            else: # 小于1的必然不是素数
                return False
        else:
            return False
    except:
        print("the format is wrong ")
isprime()

program practice 5.6 生日输出

import datetime as t
bir = t.datetime(2020,1,30,13,2,3)
print(bir.strftime("%Y-%m-%d %X"))
print(bir.strftime("%Y-%B-%d %X"))
print(bir.strftime("%Y-%b-%d %X"))
print(bir.strftime("%x %X"))
print(bir.strftime("%x %X"))
print(bir.strftime("%Y|%m|%d|%H|%M|%S")) # %i 中间的字符随便改即可 

program practice 5.7 汉诺塔

直接解释一波

# program practice 5.7 汉诺塔 只需要确定n与n-1的关系即可
c = 0
def hanoi(n,src,dst,mid): # n为第几块圆盘
    global c
    if n == 1: 
        print("{}:{}->{}".format(1,src,dst)) # 第一块圆盘的移动
        c += 1
    else: # n与n-1的移动
        hanoi(n-1,src,mid,dst) #把n-1个圆盘移动到中柱子,而右柱子成为中转站
        print("{}:{}->{}".format(n,src,dst)) # 再把第n个圆盘移动到右柱子
        c += 1 
        hanoi(n-1,mid,dst,src) # 再把左柱子作为中转站,把在中柱子的n-1个圆盘移动到右柱子
hanoi(3,"A","C","B")
print("Toally, it took {} steps".format(c))
print(c)
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值