零基础学习Python 作业 第18章

============ CH18 homework ============

0 请问以下哪个是形参哪个是形参?

def MyFun(x):
    return x ** 3

y = 3
print(MyFun(y))

Answer: x 是形参,y是实参

1 函数文档和直接使用’#’有为函数写注释有什么不同?

Answer: 函数文档可以通过help进行函数名查询,但’#’注释的不行

2 使用关键字参数,可以有效避免什么问题出现呢?

Answer: 准确赋值,避免赋值错误, 可以不按顺序进行赋值

3 使用help(print)查看print()这个BIF有哪些默认参数?分别起到什么作用?

Answer:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.
    # file: value, 比如一个文件; 或者系统标准输出,第一个参数如果有多个参数,作为收集参数,默认用空格隔开;
    # sep: 如果在值中间插入字符串,默认每个值之间是空格
    # end: 最后一个值的最后默认是换行
    # flush: 是否强制清除file或者说刷新流。

4 默认参数和关键字参数表面最大的区别是什么?

Answer: 关键字参数是在函数调用的时候,通过函数名制定需要赋值的参数,这样做就不怕因为搞不清参数的顺序,
出现调用出错,而默认参数是在参数定义的过程中,为形参赋初值,当函数调用的时候,不传递实参,
不传递实参,则默认使用形参的初始值代替。


Practice

0 编写一个符合以下要求的函数?
a) 计算打印所有参数的和乘以基数(base = 3)的结果
b) 如果参数中最后一个参数为(base = 5),则设定基数等于5,基数不参与求和计算。

code
def pramsCompute(*prams):
    length = len(prams)
    base1 = 3
    base2 = 5
    result = 0
    for each in prams:
        if prams[length - 1] != 5:
            result += each
        elif prams[length - 1] == 5:
            if each != 5:
                result += each

    if prams[length - 1] != 5:
        return result * base1
    else:
        return result * base2

Test Result
>>> pramsCompute(5,2,3,1)
33
>>> pramsCompute(5,2,3,5)
25
>>> pramsCompute(5,2,5,5)
10
>>>

1 寻找3位数的水仙花数?编写对应函数


code
def ShuiXianNum():
    print('[100~1000] 区间的水仙数有:', end = ' ')
    for i in range(100,1000):
        temp = i
        sum = 0
        while temp:
            sum += (temp % 10) ** 3
            temp = temp // 10
        if sum == i:
            print(i, end = ' ')
>>> ShuiXianNum()
[100~1000] 区间的水仙数有: 153 370 371 407

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

def findstr(deStr, subStr):
    count = 0
    length = len(deStr)
    if subStr not in deStr:
        print('在目标字符串中未找到字符串', subStr, '!')
    else:
        for each1 in range(length-1):
            if deStr[each1] == subStr[0]:
                if deStr[each1 + 1] == subStr[1]:
                    count += 1

        print('子字符串在目标字符串中共出现 %d 次' % count)


deStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findstr(deStr, subStr)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值