Python程序设计与算法基础教程·第八章上机实践

python版本:3.6
好久没有更新博客了,这次跳过第七章和第六章,因为我们老师跳过直接讲第八章

  • 8.1
# -*- coding: utf-8 -*-
def fact(n):
    #return 1 if n==1 or n==0 else fact(n-1)*n
    #递归
    r=1
    for i in range(1,n+1):r*=i
    return r
    #非递归
n=int(input('请输入整数n(n>=0):'))
print('%d!=%d'%(n,fact(n)))

讲真,递归的阶乘我好多章前就实现了(微笑),于是我把它注释掉了

  • 8.2
# -*- coding: utf-8 -*-
def fib(n):
    s=[1,1]
    for i in range(n):
        s.append(s[-1]+s[-2])
    for i in range(n):
        print('%5d'%s[i],end='')
        if (i+1)%10==0:print()
fib(20)
#非递归
def fib2(n):
    return 1 if n==0 or n==1 else fib2(n-1)+fib2(n-2)
for i in range(20):
    print('%5d'%fib2(i),end='')
    if (i+1)%10==0:print()
#递归

结果如下图,非递归我直接把输出也写进函数了
啊

  • 8.3
# -*- coding: utf-8 -*-
def min_n(a,b,*c):
    if c:#空的元组判断为FALSE
        r=min(c)
        return min(a,b,r)
    else:return min(a,b)
print('最小值为:',min_n(8,2))
print('最小值为:',min_n(16,1,7,4,15))

结果和书上一样,我就不放图了

  • 8.4
# -*- coding: utf-8 -*-
def t8_4(s):
    ma=max(s)
    mi=min(s)
    l=len(s)
    return (ma,mi,l)
s1=[9,7,8,3,2,1,55,6]
s2=['apple','pear','melon','kiwi']
s3='TheQuickBrownFox'
print('list=',s1)
print(str.format('最大值={},最小值={},元素个数={}',t8_4(s1)[0],t8_4(s1)[1],t8_4(s1)[2]))
print('list=',s2)
print(str.format('最大值={},最小值={},元素个数={}',t8_4(s2)[0],t8_4(s2)[1],t8_4(s2)[2]))
print('list=',s3)
print(str.format('最大值={},最小值={},元素个数={}',t8_4(s3)[0],t8_4(s3)[1],t8_4(s3)[2]))

这道题意义何在?
Python程序设计与算法基础教程·第八章上机实践_第1张图片

你可能感兴趣的:(学习笔记)