Python语言程序设计基础(第二版)P151答案示例

P151程序练习题参考示例

5.1 程序3.5输出了一个简单的田字格,用函数简化代码,输入超大田字格。示例如下:

def top():
    t = ('+' + '--'*4)
    return t*4 + '+'


def body():
    b = ('|' + ' '*8 )
    return b*5

 #拼接起来即可
for i in range(4):
    print(top())
    for i in range(4):
    	print(body())
print(top())

在这里插入图片描述
5.2 实现isOdd()函数,参数为整数,如果整数为奇数,返回True,否则返回False。代码:

#实现isOdd函数
def isOdd(num):
	num = int(num)#转换为整型作为参数
	if num%2 != 0:
		return True
	else:
		return False

result = isOdd(3)
print(result)

在这里插入图片描述

5.3 实现isNum()函数,参数为一个字符串,如果这个字符串属于整数、浮点数或复数的表示,则返回True,否则返回False。代码如下:

#实现isNum函数
def isNum(str1):
	if type(str1) in [complex,int,float]:
		return True
	else:
		return False


result = isNum(22)
print(result)

在这里插入图片描述

5.4 实现multi()函数,参数个数不限。返回所有参数的乘积。代码:

#实现mulit()函数
def multi(a,*b):
	for n in b:
		a *= n
	return a


s = multi(1,9,9)#1*任何数都为任何数
print(s)

在这里插入图片描述

5.5 实现isPrime()函数,参数为整数,要有异常处理。如果整数是质数,返回True,否则返回False。代码:

def isPrime(num):


        if num <= 1:
            return False
        num1 = 2
        while num1 * num1 <= num:
            if num % num1 == 0:#如果输入的数字可以被其他数字整除,也不是素数
                return False
            num1 += 1
        return True


while True:
    try:
        result = eval(input("请输入整数:"))
        print(isPrime(result))
    except:
        print("输入格式有误!")

在这里插入图片描述
5.6 使用datetime库,对时间输出不少于10种日期格式。代码:

#对自己生日输出十钟格式
from datetime import datetime


today = datetime.now()#返回当前日期
print(today)

print("今天是{0:%Y}年{0:%m}月{0:%d}日".format(today))#运用format的格式化字符串方法

today = datetime.utcnow()#返回当前日期的UTC表示
print(today)

today = datetime(2020,4,14,12,00,00)#返回一个datetime类型的对象,时间可以自己模拟
print(today)

print(today.isoformat())#采用ISO 8601标准时间显示
print(today.weekday())#返回一个整数代表星期几,星期一为 0,星期天为 6。 
print(today.isoweekday())#根据日期计算周几
print(today.isocalendar())#返回一个 3 元组 (ISO 年份, ISO 周序号, ISO 周日期)

print(today.strftime('%Y.%m.%d %H:%M:%S'))#此方法是格式化字符串的最好方法,支持任意通用格式
print(today.strftime('%Y.%m.%d'))
print(today.strftime('%A, %d. %B %Y %I:%M%p'))

在这里插入图片描述
5.7 汉诺塔问题。汉诺塔问题是一个数学难题,其问题秒速为如何将所有圆盘编写一个汉诺塔的移动函数,采用递归方法解决这个难题,要求输入汉诺塔的层数,输出整个移动流程。(这道题还是无法去吃透代码)代码示例:

# 汉诺塔问题
def hanoi(n,x,y,z):
    if n == 1:
        print(x,'-->',z)
    else:
        hanoi(n-1,x,z,y)#将前n-1的盘子从x移动到y
        print(x,'-->',z)
        hanoi(n-1,y,x,z)#将后n-1的盘子从y移动到z

n = int(input('请输入汉诺塔层数:'))

hanoi(n,'1','2','3')
# 疑问:为什么 第二个参数 不会显示。

在这里插入图片描述在这里插入图片描述

分享结束,这次做题还是相对进步许多,但是花的时间有点多。
如有代码出现错误,留下宝贵意见。
bye。

原创文章 27 获赞 34 访问量 2601

猜你喜欢

转载自blog.csdn.net/weixin_46313446/article/details/105510984
今日推荐