文章编辑日期: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