文章编辑日期:2021-11-18 16:55
预定发布日期:2021-11-22 23:59

填空题

4-1 使用return语句可以返回函数值并退出函数。
4-2 在函数内部定义的变量称作局部变量。
4-3 变量的作用域 (高教社,《Python 编程基础及应用》习题 8-1)
写出下述程序的执行结果。
注意: print () 函数会在两个参数的输出间加入一个空格。

def func():
    x = 77
    z = y * 2
    print("x+z=",x+z)
x = 1
y = 1
func()
print("x=",x)
print("y=",y)

执行结果第 1 行:x+z= 79
执行结果第 2 行:x= 1
执行结果第 3 行:y= 1
空格不可漏。
4-4 下面程序的输出是41

f = lambda p:p+5
t = lambda p:p*3
x=7
x=f(x)
x=t(x)
x=f(x)
print(x)

4-5 执行下列语句后的显示结果是什么? 3 2

def f1(x = 1, y = 2):
    x = x + y
    y += 1
    print(x, y)
f1(2,1)

4-6 执行下列语句后的显示结果是什么? 10

def xfunction(n):
    if n == 1:
        return 1;
    else:
        return n + xfunction(n - 1)
print(xfunction(4))

5-1 平方数之和

题目要求:

飞飞特别喜欢平方数,可是他数学并不好,你能帮他计算n与m之间所有平方数之和吗?
提示:若一个整数的开方还是整数,它就是平方数。例如:4、9、16、25是平方数。

输入:

第一行 T 代表数据的组数。
接下来有 T 行,每行两个整数n,m (0 <= n, m <= 100000000), n、m数值大小不确定。

输出:

对于每行输入,输出一个整数,代表所求区间内平方数之和。

样例输入:

3
1 4
3 10
17 20

样例输出:

5
13
0

程序代码:

import math
#定义函数fun,拥有参数x,判断x是否为平方数。
___3分

n=int(input())        #获得键盘输入的需要处理的数据行数
for i in range(n):    #循环共执行n次
    a,b=___1分(int,input().split())    #获得键盘输入的2个整数
    if a>b:                        #若第一个数a(起点) 比第二个数b(终点)大,则交换顺序,保证起点小于终点数值
        a,b=b,a
    f1=___1分(fun,range(a,b+1))     #调用fun函数,将其应用到[a,b]区间,得到过滤后的平方数集合对象
    lst=___1分(f1)         #将平方数集合对象变成list对象lst
    print(___1分(lst))   #对lst集合求和,并打印

题解

1.定义函数(不唯一)

def fun(x):
    return True if int(math.sqrt(x)) == math.sqrt(x) else False

2.赋值

map

3.过滤

filter

4.转为列表

list

5.求和

sum

本体难点在于使用了未接触过的函数,通过关键词可推测使用的函数。


6-1 偶数是两个素数的和 (20 分)

编写函数,接收一个正偶数为参数,输出两个素数,并且这两个素数之和等于原来的正偶数。如果存在多组符合条件的素数,则全部输出。

函数接口定义:

在这里描述函数接口。例如:
def  evenprimesum( n ):

在这里解释接口参数。n 为传递的整数,不一它是偶数,也不一定是大于0的数据。函数将所有是偶数的素数输出,输出格式为:素数 + 素数 = 偶数,数据之间分隔符为一个空格

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:
/* 请在这里填写答案 */

n = int(input())
evenprimesum(n)

输入样例:

在这里给出一组输入。例如:

100

输出样例:

在这里给出相应的输出。例如:

3 + 97 = 100
11 + 89 = 100
17 + 83 = 100
29 + 71 = 100
41 + 59 = 100
47 + 53 = 100

题解


import math


def is_prime(number):
    result = False
    if number > 1:
        for i in range(2, int(math.sqrt(number)) + 1):
            if (number % i) == 0:
                break
        else:
            result = True
    return result


def evenprimesum(n):
    string = ""
    if n > 2:
        cycles = int(n / 2)
        for i in range(cycles):
            if is_prime(i):
                if is_prime(n - i):
                    string += "{} + {} = {}\n".format(i, n - i, n)
    if string != "":
        print(string.strip("\n"), end="")

6-2 编写函数,接收圆的半径作为参数,返回圆的面积。 (15 分)

题解

重复出题,参考第三次作业。


6-3 编写生成斐波那契数列的函数并调用。 (5 分)

本题要求实现一个函数,可实现计算最后一项小于1000的斐波那契数列。

函数接口定义:

在这里描述函数接口。例如:
def fib(n):

n是用户传入的参数。 函数须输出最后一项小于1000的斐波那契数列。

裁判测试程序样例:

例如:
’‘’
你写的函数在这里
‘’‘

fib(1000)

输入样例:

在这里给出一组输入。例如:

本题无输入

输出样例:

在这里给出相应的输出。例如:

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 

题解

写法一:

### 题解
def fib(n):
    lst = []
    a, b = 1, 1
    while b < n:
        a, b = b, a + b
        lst.append(a)
    for i in lst:
        print(i, end=' ')

写法二(复用了前几次内容的代码):


def fib(n):
    if n < 3:
        print("1")
    else:
        num1, num2, string, i = 1, 1, "1 1 ", 0
        while True:
            i = i + 1
            if i % 2 == 0:
                num2 += num1
                if num2 > n:
                    break
                string += str(num2) + " "
            else:
                num1 += num2
                if num1 > n:
                    break
                string += str(num1) + " "
        print(string)

6-4 两个数的最大值 (10 分)

编写一个名为max的函数,接受两个整数作为参数,并返回两者中的较大值。例如,如果7和12作为参数传递给函数,该函数将返回12。

函数接口定义:

 max(x, y)

x 和 y是传入的两个整数。

裁判测试程序样例:


/* 请在这里填写答案 */

def main():
    a = int(input())
    b = int(input())
    print(max(a, b))

main()

输入样例:

在这里给出一组输入。例如:

2
3

输出样例:

3

题解


def max(m, n):
    return m if m > n else n

6-5 人民币美元双向兑换 (10 分)

本题要求实现一个人民币与美元的双向兑换函数change(money),可实现1美元=6.709人民币的双向兑换。输出兑换的结果保留2位小数。

函数接口定义:

在这里描述函数接口。例如:
change( money )

其中 money都是用户传入的参数,表示待兑换的钱数。

裁判测试程序样例:

/\* 请在这里填写答案 \*/

x = input()

change(x)

输入样例1:

在这里给出一组输入。例如:

$1

输出样例1:

在这里给出相应的输出。例如:

1美元 = 6.71人民币

输入样例2:

在这里给出一组输入。例如:

¥1

输出样例2:

在这里给出相应的输出。例如:

1人民币 = 0.15美元

题解


def change(money):
    length = len(money)
    value = money[1:length]
    if money[0] == "$":
        print("{}美元 = {:.2f}人民币".format(value, eval(value) * 6.709), end="")
    elif money[0] == "¥":
        print("{}人民币 = {:.2f}美元".format(value, eval(value) / 6.709), end="")
    else:
        pass