Python实验报告三 python基础试题练习

Python实验报告三 python基础试题练习,第1张

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

输入: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)

  • 实验过程:
  1. 用input()先从键盘上录入三个整数
  2. 定义一个max3()函数,并传入三个参数。
  3. 定义两个局部变量temp,max1
  4. 用if..else判断
  5. 先前两个数比较,将较大的数存入temp中。
  6. 再用temp和另一个数比较
  7. 将较大的数存入max1中。
  8. 输出max1
  9. 调用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不是列表或者列表中不都是整数,就返回‘数据不符合要求’

  • 实验过程:
  1. 用input()先从键盘上录入n值a.
  2. 定义一个sum_n()函数,传入参数a。
  3. 定义一个sum1变量
  4. 用for循环遍历。
  5. 返回sum1。
  6. 输出值。

  • 实验结果:

 

  • 实验小结:

求连续的和时,要会运用遍历思想。

代码:

# 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.可导入必要的标准库。

  • 实验过程:
  1. 导入import包datetime
  2. 在键盘录入年月日
  3. 定义函数main()
  4. 利用datetime.strptime().weekday()求出天数是周几
  5. 输出天数。
  6. 调用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)所有素数的和,要求定义并调用函数 is_prime(x)来判断 是否为素数(素数是除 以外只能被自身整除的自然数)。例如,输入 和 10,那么这两个数之间的素数有 2357,其和是 17

输入:m n

输出:素数和

样例输入:1 10

样例输出:17

二.实验过程:

1.从键盘录入两个整数m,n(m

2.定义一个空列表lst

3.定义函数is_prime()

4.遍历m,n之间的数,判断是否为素数。

5.将符合条件的用append函数添加到列表中。

6.遍历is_prime函数。

7.用sum()函数将列表内的值相加。

 

三.实验结果:

 

四.实验小结:

要了解何为素数(只有一和它本身),然后接下来要对两个数之间的数进行遍历,筛选出满足条件的数,最后再用sum()函数进行相加。

代码:

# 5、输入两个正整数 m 和 n(m

一.实验内容:

编写程序,利用元组作为函数的返回值,求系列类型中的最大值、最小值和元素个数,并编写测试代码,假设测试数据分别为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

提示:函数形参为系列类型,返回值是形如“(最大值,最小值,元素个数)”的元组

二.实验过程:

  1. 将题意给的三组数分别定义为s1,s2,s3。
  2. 定义函数print_info()
  3. 分别用max(),min(),len().求出对应的值。
  4. 输出。
  5.  

三.实验结果:

 

四.实验小结:

主要需要掌握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)

  • 实验内容:

 

  • 实验过程;
  1. 输入列表
  2. 用max()函数。
  3. 再用lambda函数。
  4. 输出

 

  • 实验结果:

​​​​​​​

 

  • 实验小结:

要知道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),中间以空格分开

输出:这两个整数的参数值

  • 实验过程:
  1. 从键盘录入两个整数。
  2. 定义一个main()函数。
  3. 用if...elif..else判断条件并返回表达式。
  4. 输出返回值。

 

  • 实验结果:

​​​​​​​

 

  • 实验小结:

要看懂题目给的一系列数再去做题。

代码:

# 输入:两个整数(不大于 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))

​​​​​​​

  • 实验内容:

编写函数,接收一个字符串,判断该字符串是否为回文。所谓回文是指,从前向后读和从后向前读是一样的。

  • 实验过程:
  1. 从键盘录入一串字符串。
  2. 定义一个函数。
  3. 将参数转换为列表并赋值给str1
  4. 利用列表reverse函数进行反转。
  5. 将str1转换为字符串。
  6. 判断str和str1是否一样。
  7. 一样就是回文函数。

 

  • 实验结果:

​​​​​​​

 

  • 实验小结:

利用列表的性质做题就会容易多。

代码:

# 编写函数,接收一个字符串,判断该字符串是否为回文。所谓回文是指,从前向后读和从后向前读是一样的。
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)

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/798399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)