python学习测试题6及参考答案

本文详细介绍了Python中函数的使用,包括为何使用函数而非简单拷贝黏贴,如何创建函数,以及函数的关键字和注意事项。同时,展示了多个函数应用实例,如定义计算次幂的函数、查找水仙花数的函数等。此外,还涵盖了函数调用、参数传递和全局变量的使用,帮助读者深入理解Python函数的运用。
摘要由CSDN通过智能技术生成

1.为什么要使用函数(而不使用简单的拷贝黏贴)呢?创建函数使用什么关键字,要注意什么?

答案:

  • 使用函数:
  1. 可以降低代码量(调用函数只需要一行,而拷贝黏贴需要N倍代码)
  2. 可以降低维护成本(函数只需修改def部分内容,而拷贝黏贴则需要每一处出现的地方都作修改)
  3. 使序更容易阅读(没有人会希望看到一个程序重复一万行“I love FishC.com”)
  • 关键字,注意点

使用“def”关键字,要注意函数名后边要加上小括号“()”,然后小括号后边是冒号“:”,然后缩进部分均属于函数体的内容,例如:

def MyFun():
    # 我是函数体
    # 我也是函数体
    # 我们都属于函数MyFun()

# 噢,我不属于MyFun()函数的了

2.请问调用以下这个函数会打印什么内容?

>>> def hello():
        print('Hello World!')
        return
        print('Welcome To FishC.com!')

答案:

当Python执行到return语句的时候,Python认为函数到此结束,需要返回了(尽管没有任何返回值),因此只会打印:Hello World!

3.请问下面x,y哪个是形参,哪个是实参?

def MyFun(x):
    return x ** 3

y = 3
print(MyFun(y))

答案:

x是形式参数(形参),y是实际参数(实参)。
跟绝大部分编程语言一样,形参指的是函数创建和定义过程中小括号里的参数,而实参指的是函数在调用过程中传递进去的参数。

4.将前面做过的寻找水仙花数写为函数的形式,然后进行调用。

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

答案:

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.编写一个函数power()

模拟内建函数pow(),即power(x, y)为计算并返回x的y次幂的值,然后调用该函数打印输出。

答案:

def power(x, y):
    result = 1
    
    for i in range(y):
        result *= x

    return result

print(power(2, 3))

6.目测以下程序会打印什么内容:

def next():
    print('我在next()函数里...')
    pre()

def pre():
    print('我在pre()函数里...')
    
next()

答案:
有些编程语言不够“聪明”,向这类向前引用的方式会导致报错,但Python足够“醒目”,这段代码是正确的!因此会输出:

我在next()函数里...
我在pre()函数里...

7.目测以下程序会打印什么内容:

def fun(var):
    var = 1314
    print(var, end='')

var = 520
fun(var)
print(var)

答案:

1314520

8.目测以下程序会打印什么内容?

var = ' Hi '

def fun1():
    global var
    var = ' Baby '
    return fun2(var)

def fun2(var):
    var += 'I love you'
    fun3(var)
    return var

def fun3(var):
    var = ' 小甲鱼 '

print(fun1())

答案:

  • 程序先调用fun1函数,fun1中定义了var变量(由于声明为global,因此为全局变量,会覆盖掉原先全局变量的值)。
  • 然后调用fun2函数(即为返回值),并将var变量传递到fun2函数中,fun2中的var为形参(也为局部变量),代码var += 'I love you' 可以先写出完整形式: var = var + 'I love you ,所以得到“baby I love you”,
  • 再调用fun3函数,由于fun3函数中的var是作用在fun3函数的局部变量,并且没有返回,这个fun3没有一点效果。
  • 因此最后返回的是在fun2函数中的var,fun1返回的就是fun2返回值,答案为:
baby I love you

9.编写一个函数 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)

10.将前面做过的统计出传入字符串参数写为函数的形式,然后进行调用。

编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数。程序执行结果如图:
在这里插入图片描述

答案:

def count(*param):
    length = len(param)
    for i in range(length):
        letters = 0
        space = 0
        digit = 0
        others = 0
        for each in param[i]:
            if each.isalpha():
                letters += 1
            elif each.isdigit():
                digit += 1
            elif each == ' ':
                space += 1
            else:
                others += 1
        print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (i+1, letters, digit, space, others))
            
count('I love fishc.com.', 'I love you, you love me.')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值