学Python

学Python的010天

2019-10-15  本文已影响0人  XIAO油菜花

原创:XIAO油菜花
学习进度记录:
《零基础入门学习Python》P19:函数:灵活即强大
《Python开发入门与爬虫项目实战》:Python中的函数:递归查找

课后思考

def MyFun((x, y), (a, b)):
    return x * y - a * b
>>> def hello():
        print('Hello World!')
        return
        print('I Love XIAO油菜花!')
def MyFun(x):
    return x ** 3

y = 3
print(MyFun(y))

答案

  • 可以降低代码量(调用函数只需要一行,而拷贝黏贴需要N倍代码)
  • 可以降低维护成本(函数只需修改def部分内容,而拷贝黏贴则需要每一处出现的地方都作修改)
  • 使程序更容易阅读
>>> def MyFun(x, y):
        return x[0] * x[1] - y[0] * y[1]

>>> MyFun((3, 4), (1, 2))
10

实战
0.编写一个函数power()模拟内建函数pow(),即power(x, y)为计算并返回x的y次幂的值。

def power(x, y):
    result = 1

    for i in range(y):
        result *= x

    print(str(x)+'的'+str(y)+'次幂是:'+str(result))

1.编写一个函数,利用欧几里得算法求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。

def gcd(x,y):
    while y:
        t = x % y
        x = y
        y = t

    return x

2.编写一个将十进制转换为二进制的函数,要求采用“除2取余”的方式,结果与调用bin()一样返回字符串形式。

def my_bin(x):
    temp = []
    result = ''
    
    while x:
        #取余
        y = x % 2
        #地板除法
        x = x // 2
        #用append()在列表的最后添加一个元素
        temp.append(y)

    while temp:
        #用pop()移除列表中的最后一个元素,并且返回该元素的值
        result += str(temp.pop())
    
    return result

3.编写一个符合以下要求的函数:

def base(*value):
    base = 3
    
    if value[-1] == 5:
        base = 5
        h = sum(value[0:(len(value)-1)])
        result = h*base
    else:
        h = sum(value)
        result = h*base

    return result

#参考答案
def mFun(*param, base=3):
    result = 0
    for each in param:
        result += each

    result *= base
    
    print('结果是:', result)

mFun(1, 2, 3, 4, 5, base=5)

4.寻找水仙花数: 如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 = 13+53+3^3,因此153是一个水仙花数。编写一个程序,找出所有的水仙花数。

def flower():
    for x in range(100,1000):
        if x == (x//100)**3 + (x%100//10)**3 + (x%10)**3:
            print(x, end = ' ')

#参考答案:
def Narcissus():
    for each in range(100, 1000):
        temp = each
        sum = 0
        while temp:
            sum = sum + (temp%10) ** 3
            temp = temp // 10  # 注意这里用地板除

        if sum == each:
            print(each, end='\t')

print("所有的水仙花数分别是:", end='')
Narcissus()

5.编写一个函数 findstr(),该函数统计一个长度为 2 的子字符串在另一个字符串中出现的次数。例如:假定输入的字符串为“You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.”,子字符串为“im”,函数执行后打印“子字母串在目标字符串中共出现 3 次”。程序执行效果:


def findStr(desStr, subStr):
    count = 0
    length = len(desStr)
    if subStr not in desStr:
        print('在目标字符串中未找到字符串!')
    else:
        for each1 in range(length-1):      
            if desStr[each1] == subStr[0]:
                if desStr[each1+1] == subStr[1]:
                    count += 1
                    
        print('子字符串在目标字符串中共出现 %d 次' % count)

desStr = input('请输入目标字符串:')
subStr = input('请输入想要查找的子字符串(两个字符):')
findStr(desStr, subStr)

如果你关注了我,希望你监督我,鼓励我,与我一起学习,一起成长!❤

上一篇下一篇

猜你喜欢

热点阅读