1、编写函数求三个整数的最大值,函数原型为 def max3(a, b, c)
2、编写函数main()接收一个包含若干整数的列表参数lst,要求返回其中大于8的偶数组成的新列表,如果不存在就返回空列表。如果接收到的参数lst不是列表或者列表中不都是整数,就返回‘数据不符合要求’。
3、函数 main()接受3个分别表示年、月、日的正整数year,month,day,要求返回表示year年month月day日是周几的整数,1表示周一,2表示周二,以此类推,7表示周日。例如main(2020,10,5)返回1.可导入必要的标准库。
4、编写函数,函数原型为 def f(n),求 f(x)的值。函数的定义如下图所示:
5、输入两个正整数 m 和 n(m<n),求 m 到 n 之间(包括 m 和 n)所有素数的和,要求定义并调用函数 is_prime(x)来判断 x 是否为素数(素数是除 1 以外只能被自身整除的自然数)。例如,输入 1 和 10,那么这两个数之间的素数有 2、3、5、7,其和是 17
输入:m n
输出:素数和
样例输入:1 10
样例输出:17
6、编写程序,利用元组作为函数的返回值,求系列类型中的最大值、最小值和元素个数,并编写测试代码,假设测试数据分别为s1=[9,8,7,3,2,1,55,6]、s2=['apple','pear','melon','kiwi'],s3='TheQuickBrownFox'。运行效果如下:
s1=[9,8,7,3,2,1,55,6]
最大值=55,最小值=1,元素个数=8
s2=['apple','pear','melon','kiwi']
最大值=pear,最小值=apple,元素个数=4
s3='TheQuickBrownFox'
最大值=x,最小值=B,元素个数=16
提示:函数形参为系列类型,返回值是形如“(最大值,最小值,元素个数)”的元组
7、列表 L = [(92,88), (79,99), (84,92), (66, 77)]有 4 项数据,每项数据表示学生的语文和数学成绩。求数学成绩最高的学生的成绩。提示:应用 max 函数,然后设计 lambda 函数来实现, max(L, key=lambda ________ )
8、1920 年代后期,数学家大卫•希尔伯特的学生 Gabriel Sudan 和威廉•阿克曼,当时正研究计算的基础。Sudan 发明了一个递归却非原始递归的 Sudan 函数。1928 年,阿克曼又独立想出了另2021一个递归却非原始递归的函数。它需要两个自然数作为输入值,输出一个自然数。它的输出值增长速度非常高,仅是(4,3)的输出已大得不能准确计算。阿克曼函数定义如下:
输入:两个整数(不大于 4 和 3),中间以空格分开
输出:这两个整数的参数值
9、编写函数,接收一个字符串,判断该字符串是否为回文。所谓回文是指,从前向后读和从后向前读是一样的。
10、编写函数,接收参数 a 和 n,计算并返回形式如 a + aa + aaa + aaaa +…+ aaa…aaa 的表达式前 n 项的值,其中 a 为小于 10 的自然数。
Python实验三报告
一.****实验内容:
编写函数求三个整数的最大值,函数原型为 def max3(a, b, c)
- 实验过程:
- 用input()先从键盘上录入三个整数
- 定义一个max3()函数,并传入三个参数。
- 定义两个局部变量temp,max1
- 用if..else判断
- 先前两个数比较,将较大的数存入temp中。
- 再用temp和另一个数比较
- 将较大的数存入max1中。
- 输出max1
- 调用max3()。
- 实验结果:
- 实验小结:
运用简单函数,传入参数。
在函数里面做判断,然后输出较大的。
代码:
# 1、编写函数求三个整数的最大值,函数原型为 def max3(a, b, c)
x,y,z = eval(input("请分别输入三个整数,用,隔开:"))
# y = int(input("第二个整数:"))
# z = int(input("第三个整数:"))
def max3(a, b, c):
temp = 0
max1 = 0
if a > b:
temp = a
else:
temp = b
if temp > c:
max1 = temp
else:
max1 = c
print('最大值为', max1)
max3(x, y, z)
一.****实验内容:
编写函数main()接收一个包含若干整数的列表参数lst,要求返回其中大于8的偶数组成的新列表,如果不存在就返回空列表。如果接收到的参数lst不是列表或者列表中不都是整数,就返回‘数据不符合要求’。
- 实验过程:
- 用input()先从键盘上录入n值a.
- 定义一个sum_n()函数,传入参数a。
- 定义一个sum1变量
- 用for循环遍历。
- 返回sum1。
- 输出值。
- 实验结果:
- 实验小结:
求连续的和时,要会运用遍历思想。
代码:
# 2、编写函数求 1~n 之和,函数的原型为 def sum_n(n)。
a = int(input('请输入1~n的和的n值:'))
def sum_n(n):
sum1: int = 0
for i in range(1,n+1):
sum1 += i
return sum1
print('值为:', sum_n(a))
一.****实验内容:
函数 main()接受3个分别表示年、月、日的正整数year,month,day,要求返回表示year年month月day日是周几的整数,1表示周一,2表示周二,以此类推,7表示周日。例如main(2020,10,5)返回1.可导入必要的标准库。
- 实验过程:
- 导入import包datetime
- 在键盘录入年月日
- 定义函数main()
- 利用datetime.strptime().weekday()求出天数是周几
- 输出天数。
- 调用main()。
三.实验结果:
四.实验小结:
难点在于要学会使用datetime.strptime().weekday(),之后就能一步解决。
代码:
# 3、函数 main()接受3个分别表示年、月、日的正整数year,month,day,要求返回表示year年month月day日是周几的整数,
# 1表示周一,2表示周二,以此类推,7表示周日。例如main(2020,10,5)返回1.可导入必要的标准库。
from datetime import datetime
def main(str):
week = datetime.strptime(str, "%Y%m%d").weekday()
print("今天是星期", end='')
print(week+1)
a = input('请输入年月日:')
main(a)
一.****实验内容:
编写函数,函数原型为 def f(n),求 f(x)的值。函数的定义如下图所示:
二.实验过程:
1.定义函数f(n);
2.从键盘录入x值
3.在函数里面用if..elif..else判断。
4.返回计算的值到y里面。
5.输出y
三.实验结果:
四.实验小结:
定义一个变量来接受函数返回的值就是所求的y值。
代码:
# 4、编写函数,函数原型为 def f(n),求 f(x)的值。函数的定义如下图所示:
def f(n):
if n < 1:
return n
elif 1 <= n < 10:
return 2 * n - 1
elif n >= 10:
return 3 * n - 11
else:
print('您输入数字有误。')
x = eval(input("请输入一个数:"))
y = f(x)
print('值为:', y)
一.****实验内容:
输入两个正整数 m 和 n(m<n),求 m 到 n 之间(包括 m 和 n)所有素数的和,要求定义并调用函数 is_prime(x)来判断 x 是否为素数(素数是除 1 以外只能被自身整除的自然数)。例如,输入 1 和 10,那么这两个数之间的素数有 2、3、5、7,其和是 17
输入:m n
输出:素数和
样例输入:1 10
样例输出:17
二.实验过程:
1.从键盘录入两个整数m,n(m<n)。
2.定义一个空列表lst
3.定义函数is_prime()
4.遍历m,n之间的数,判断是否为素数。
5.将符合条件的用append函数添加到列表中。
6.遍历is_prime函数。
7.用sum()函数将列表内的值相加。
三.实验结果:
四.实验小结:
要了解何为素数(只有一和它本身),然后接下来要对两个数之间的数进行遍历,筛选出满足条件的数,最后再用sum()函数进行相加。
代码:
# 5、输入两个正整数 m 和 n(m<n),求 m 到 n 之间(包括 m 和 n)所有素数的和,要求定义并调用函数 is_prime(x)来判断 x 是否为素数(素数是除 1 以外只能被自身整除的自然数)。例如,输入 1 和
# 10,那么这两个数之间的素数有 2、3、5、7,其和是 17
# 输入:m n
# 输出:素数和
# 样例输入:1 10
# 样例输出:17
m = int(input("请输入m:"))
n = int(input('请输入n:'))
lst = []
def is_prime(x):
try:
b = 0
for i in range(1, x + 1):
if x % i == 0:
b += 1
if b == 2:
print(True)
lst.append(i)
else:
print(False)
except:
print('请输入整数:')
for i in range(m, n + 1):
is_prime(i)
print(sum(lst))
一.实验内容:
编写程序,利用元组作为函数的返回值,求系列类型中的最大值、最小值和元素个数,并编写测试代码,假设测试数据分别为s1=[9,8,7,3,2,1,55,6]、s2=['apple','pear','melon','kiwi'],s3='TheQuickBrownFox'。运行效果如下:
s1=[9,8,7,3,2,1,55,6]
最大值=55,最小值=1,元素个数=8
s2=['apple','pear','melon','kiwi']
最大值=pear,最小值=apple,元素个数=4
s3='TheQuickBrownFox'
最大值=x,最小值=B,元素个数=16
提示:函数形参为系列类型,返回值是形如“(最大值,最小值,元素个数)”的元组
二.实验过程:
- 将题意给的三组数分别定义为s1,s2,s3。
- 定义函数print_info()
- 分别用max(),min(),len().求出对应的值。
- 输出。
三.实验结果:
四.实验小结:
主要需要掌握max(),min(),len()函数的运用。
代码:
# 编写程序,利用元组作为函数的返回值,求系列类型中的最大值、最小值和元素个数,
# 并编写测试代码,假设测试数据分别为s1=[9,8,7,3,2,1,55,6]、s2=['apple','pear','melon','kiwi'],s3='TheQuickBrownFox'。
def print_info(x):
i = max(x)
j = min(x)
l = len(x)
print("最大值是%s" % i)
print("最小值是%s" % j)
print("元素个数是{0}".format(l))
return i, j, l
s1 = [9, 8, 7, 3, 2, 1, 55, 6]
s2 = ['apple', 'pear', 'melon', 'kiwi']
s3 = 'TheQuickBrownFox'
q = print_info(s1)
print(q)
w = print_info(s2)
print(w)
e = print_info(s3)
print(e)
- 实验内容:
- 实验过程;
- 输入列表
- 用max()函数。
- 再用lambda函数。
- 输出
- 实验结果:
- 实验小结:
要知道max()函数和lambda函数的如何使用。
代码:
# 列表 L = [(92,88), (79,99), (84,92), (66, 77)]有 4 项数据,每项数据表示学生的语文和数学成绩。
# 求数学成绩最高的学生的成绩。提示:应用 max 函数,然后设计 lambda 函数来实现, max(L, key=lambda ________ )
L = [(92, 88), (79, 99), (84, 92), (66, 77)]
# res = [x[1] for x in L]
# print(res)
# max(res,key=lambda x:[res])
#def main(x,y):
# return x+y
#
#t1 = lambda x,y:x+y
#
a = max(L, key=lambda x: x[1])
print(a)
- 实验内容:
、1920 年代后期,数学家大卫•希尔伯特的学生 Gabriel Sudan 和威廉•阿克曼,当时正研究计算的基础。Sudan 发明了一个递归却非原始递归的 Sudan 函数。1928 年,阿克曼又独立想出了另2021一个递归却非原始递归的函数。它需要两个自然数作为输入值,输出一个自然数。它的输出值增长速度非常高,仅是(4,3)的输出已大得不能准确计算。阿克曼函数定义如下:
输入:两个整数(不大于 4 和 3),中间以空格分开
输出:这两个整数的参数值
- 实验过程:
- 从键盘录入两个整数。
- 定义一个main()函数。
- 用if...elif..else判断条件并返回表达式。
- 输出返回值。
- 实验结果:
- 实验小结:
要看懂题目给的一系列数再去做题。
代码:
# 输入:两个整数(不大于 4 和 3),
#
# 输出:这两个整数的参数值
def main(m, n):
if (m == 0):
return n + 1
elif (n == 0):
return main(m - 1, 1)
else:
return main(m - 1, main(m, n - 1))
m = int(input('请输入m:'))
n = int(input('请输入n:'))
print(main(m, n))
- 实验内容:
编写函数,接收一个字符串,判断该字符串是否为回文。所谓回文是指,从前向后读和从后向前读是一样的。
- 实验过程:
- 从键盘录入一串字符串。
- 定义一个函数。
- 将参数转换为列表并赋值给str1
- 利用列表reverse函数进行反转。
- 将str1转换为字符串。
- 判断str和str1是否一样。
- 一样就是回文函数。
- 实验结果:
- 实验小结:
利用列表的性质做题就会容易多。
代码:
# 编写函数,接收一个字符串,判断该字符串是否为回文。所谓回文是指,从前向后读和从后向前读是一样的。
def test9(str):
# 先转化为一个 列表
str1 = list(str)
# 利用列表的reverse函数实现反转
str1.reverse()
# 最后在通过join方法实现转换为一个字符串;
str1 = "".join(str1)
if str == str1:
print("是一个回文串:", str1)
else:
print("不是一个回文串", str1)
a = input("请输入一串数字:")
test9(a)
一.****实验内容:
编写函数,接收参数 a 和 n,计算并返回形式如 a + aa + aaa + aaaa +…+ aaa…aaa 的表达式前 n 项的值,其中 a 为小于 10 的自然数。
二.实验过程:
1.定义一个函数main()
2.在函数里面定义一个变量sum。
3.用for...in遍历传进来的数。
4.再用if...else做判断。
三.实验结果:
- 实验小结
要知道如何将a变成aa,aaa等。
代码:
# 编写函数,接收参数 a 和 n,计算并返回形式如 a + aa + aaa + aaaa +…+ aaa…aaa 的表达式前 n 项的值,其中 a 为小于 10 的自然数。
def main(a, n):
flag = 0
m = a
sum = 0
for i in range(1, n + 1):
sum += m
if flag == 0:
print(m, end=" ")
else:
print("+ {}".format(m), end=" ")
m = 10 * m + a
flag += 1
print('值为',sum)
main(6,3)
版权归原作者 A-艺凡 所有, 如有侵权,请联系我们删除。