动漫制作专业的学校镇江关键字优化公司
一、问答题
(1)使用函数的好处是什么?
①提高代码的可复用性,避免重复编写相同功能代码;②使代码结构更清晰,将复杂功能拆分成多个函数,便于理解和维护;③实现模块化编程,不同函数负责不同功能,增强代码的逻辑性和可读性。
(2)如何定义一个函数?如何调用一个函数?
- 定义函数:在 Python 中,使用
def
关键字,语法格式为def 函数名(参数列表): 函数体
。例如def add(a, b): return a + b
。- 调用函数:直接写函数名并在括号内传入对应参数,如
result = add(3, 5)
,这里add(3, 5)
就是调用函数。
(3)给出术语函数头、形参、实参的定义
- 函数头:函数定义中以
def
开头,包括函数名和参数列表的部分,用于标识函数名称、参数情况,如def func_name(arg1, arg2):
中def func_name(arg1, arg2)
是函数头。- 形参:函数定义时参数列表中的参数,是形式上的占位符,在函数未被调用时没有实际值,如
def add(a, b):
中a
和b
是形参。- 实参:函数调用时传递给函数的实际参数,是具有具体值的参数,如
add(3, 5)
中3
和5
是实参。
(4)无返回值函数能不能有return语句?下面语句中的return函数是否会造成语法错误?
def xFunction(x,y):print(x + y)return
- 无返回值函数可以有
return
语句,在无返回值函数(返回值类型为None
)中,return
语句可用于提前结束函数执行。在题目中,return
语句不会造成语法错误,它只是提前结束函数执行,此函数默认返回None
。
(5)编写下面函数的函数头(并指出函数是否有返回值)
-
给定销售额和提成率,然后计算销售提成。
def sales_commission(sales, rate): # 函数头# 有返回值,返回计算出的销售提成
-
给定年份和月份,然后打印该月的日历。
def print_calendar(year, month): # 函数头# 无返回值,主要用于打印日历
-
计算平方根
def square_root(number): # 函数头# 有返回值,返回计算出的平方根
-
判断一个数是不是偶数,如果是则返回true。
def is_even(number): # 函数头# 有返回值,返回布尔值表示是否为偶数
-
按指定次数打印一条消息。
def print_messages(number): #函数头#无返回值,只要用于打印消息
-
给定贷款额、还款年数和年利率,然后计算月支付额
def pay_total(amount, year, rate): #函数头#有返回值,返回计算的月支付额
-
对于给定的小写字母,给出相应的大写字母。
def daxie_letter(small_letter): #函数头#有返回值,返回相应的大写字母
(6)确定并改正下面程序中的错误
def function1(n,m):
function2(3.4)def function2(n):if n > 0:return 1elif n == 0:return 0elif n < 0:return -1
function1(2,3)
函数调用的顺序有问题,在
function1
里调用function2
之前应该对function2
进行定义。
(7)下面代码的输出是什么?
def main():print(min(5,6))def min(n1,n2):smallest = n1 if n2 < smallest:smallest = n2main()#Call the main function
5
(8)运行下面程序时会出现什么错误?
def main():print(min(min(5,6),(51,6)))
def min(n1,n2):smallest =n1if n2 < smallest:smallest =n2
main()# Call the main function
代码中
min(5, 6)
会正确返回5
,但接下来min(5, (51, 6))
会出现问题。因为内置min
函数期望比较的是可比较的元素,而(51, 6)
是一个元组,它不能直接和整数5
进行大小比较,会引发TypeError
异常。
(9)形参和实参能同名吗?
可以
形参是函数定义时括号里声明的参数,用于接收调用函数时传入的值;实参是在函数调用时实际传递给函数的参数。形参和实参同名不会产生语法错误。
(10)显示下面函数的结果
# 代码A
def main():max=0getMax(1,2,max)print(max)def getMax(value1,valaue2,max):if value1 > value2:max = vauelelse:max = value2
main()
# 代码B
def main():i=1 while i <= 6:print(function1(i,2))i+= 1def functionl(i. num):aline = ""for j in range(1,i):line += str(num) + " "num *= 2return line
main()
# 代码C
def main():# Initialize timestimes= 3print("Before the call,variable","times is", times)#Invoke nprintin and display timesnPrint("welcome to Cs!",times)print("After the call,variable","times is",times)# Print the message n times
def nPrint(message,n):while n>0:print("n=",n)print(message)n -= 1
main()
# 代码D
def main():i=0while i <= 4:function1(i)i+ 1print("i is”,i)def function1(i):line = " "while i >= 1:if i % 3 != 0:line += str(i) + " "i -= 1print(line)
main()
代码A:2
代码B:
2
2 4
2 4 8
2 4 8 16
2 4 8 16 32
代码C:
Before the call,variable times is 3
n= 3
welcome to Cs!
n= 2
welcome to Cs!
n= 1
welcome to Cs!
After the call,variable times is 3代码D:
1
2 1
2 1
4 2 1
i is 5
(11)下面代码的打印结果什么?
# 代码A
def function(x):print(x)x = 4.5y = 3.4 print(y)
x=2
y=4
function(x)
print(x)
print(y)
# 代码B
def(x,y=1,z=2):return x+y+Z
print(f(1,1,1))
print(f(y=1,x=2,z=3))
print(f(1,z=3))
代码A:
2
3.4
2
4
代码B:
3
6
5
(12)下面的代码有什么错误?
def function():x = 4.5y= 3.4print(x)print(y)function()
print(x)
print(y)
没有对全局变量
x``y
进行定义,局部变量也没有应用到全局变量。
(13)下面代码能运行吗?如果能,打印结果是什么?
x= 10
if x < 0:y = -1
else:y = 1
print("y is", y)
能 。y is 1。
(14)显示下面代码的打印结果
def f(w=1,h=2):print(w,h)
f()
f(w = 5)
f(h = 24)
f(4,5)
1, 2
5, 2
1, 24
4, 5
(15)确定下面程序的错误并改正
def main():nPrintln(5)def nPrintln(message = "Welcome to Python!",n):for i in range(n):print(message)
main() #Call the main function
函数定义顺序有误,有默认值的参数必须放在无默认值参数之后
def nPrintln(message = "Welcome to Python!",n):for i in range(n):print(message)def main():nPrintln(5)
main() #Call the main function
(16)如果在同一模块里定义两个同名的函数会发生什么?
后面定义的函数会覆盖前面定义的函数
(17)阐述函数的内存运行机制,举例代码并画图说明
def add(a, b):result = a + breturn resultx = 3
y = 4
sum_value = add(x, y)

二、编程题
(18) 回文素数【录屏讲解】
视频链接:https://meeting.tencent.com/crm/NXwge6WP1e
回文素数是指一个数既是素数又是回文数,例如131既是素数也是回文数
输出显示前100个回文素数,每行显示10个
#即是素数也是回文数输出def is_su(num):for i in range(10,num // 2 + 1 ):if num % i ==0:return Falseelse:return True
def reverse
(num):ret = 0while num !=0:gewei = num % 10num //= 10ret =ret *10 + geweireturn ret
def is_hui(num):return num == reverse(num)
num = 2
count = 0
while count < 100:if is_su(num) and is_hui(num):print(num, end=" ")count += 1if count % 10 == 0:print()num +=1
(19) 反素数
题目描述
反素数是指一个将其逆向拼写后也是一个素数的非回文数,例如17和71都是素数但不是回文数,且反转后依旧是素数
输出显示前100个反素数,每行显示10个
def is_su(num):if num < 2:return Falsefor i in range(2, int(num ** 0.5) + 1):if num % i == 0:return Falsereturn Truedef reverse(num):ret = 0while num != 0:gewei = num % 10num // = 10ret = ret * 10 + geweireturn retcount = 0
num = 10
while count < 100:reversed_num = reverse(num)if is_su(num) and is_su(reversed_num) and num != reversed_num:print(num, end=" ")count += 1if count % 10 == 0:print()num += 1
(20) 双素数
题目描述
双素数是指一对差值为2的素数,例如3和5就是一对双素数,5和7也是一对双素数
输出显示小于1000的双素数
def is_su(num):if num < 2:return Falsefor i in range(2, int(num ** 0.5) + 1):if num % i == 0:return Falsereturn Truefor num in range(3, 999): # 从3开始遍历到998,因为要找差值为2的素数对if is_su(num) and is_su(num + 2):print(f"({num}, {num + 2})", end=" ")
(21) 梅森素数
如果一个素数可以写成 2 p − 1 2^p-1 2p−1的形式,其中p是某个正整数,那么这个素数就称作梅森素数
输出p≤31的所有梅森素数
def is_su(num):#判断一个数是否为素数if num < 2:return Falsefor i in range(2, int(num ** 0.5) + 1):if num % i == 0:return Falsereturn True
p = 2
while p <= 31:mei_num = 2 ** p - 1if is_su(mei_num):print(mei_num, end=" ")p += 1
(22) 对三个数排序
提示用户输入三个数字,最后按照升序输出三个数字
def sort_numbers(num1, num2, num3):
def sort_numbers(num1, num2, num3):min_num = min(num1, num2, num3)max_num = max(num1, num2, num3)mid_num = num1 + num2 + num3 - min_num - max_numreturn max_num, mid_num, min_numif __name__ == "__main__":num1, num2, num3 =map(int,input("请输入:").split(" "))result1, result2, result3 = sort_numbers(num1, num2, num3)print(result1, result2, result3)
(23)显示模式【录屏讲解】
视频链接:http://meeting.tencent.com/crm/KeOBrDVdea
编写函数显示如下模式:
12 1
... 3 2 1
n n-1 ... 3 2 1
def display_pattern(n):
""" i(n) j k1 1 1 22 1 2 21 1
... 3 2 1 3 321 0
n n-1 ... 3 2 1 n i~1 n - i
"""def display_pattern(n):#打印行数for i in range(1, n+1):#打印空格for _ in range(n - i):print(" ", end = " ")#打印数字for j in range(i, 0, -1):print(j, end = " ")print()
display_pattern(8)
(24)数列求和【录屏讲解】
视频链接:https://meeting.tencent.com/crm/KPGmAdG974
编写一个函数计算下面的数列:
m ( i ) = 1 2 + 2 3 + . . . + i i + 1 m(i) = \frac{1}{2} + \frac{2}{3} + ... + \frac{i}{i + 1} m(i)=21+32+...+i+1i
并输出测试结果:
i m(i)
1 0.500
2 1.16
...
19 16.40
20 17.35
def shulie(i):m = 0for i in range(1, i+1):m += i / (i + 1)print(i ,f'{m:.2f}' )
shulie(20)