首页 > 编程语言 >实验4 函数与异常处理编程

实验4 函数与异常处理编程

时间:2023-05-23 12:11:50浏览次数:41  
标签:py return 函数 sum 编程 源码 实验 print def

实验任务1

task1.py

程序源码:

1 print(sum)
2 sum = 42
3 print(sum)
4 def inc(n):
5     sum = n+1
6     print(sum)
7     return sum
8 sum = inc(7) + inc(7)
9 print(sum)

运行测试截图:

 

1.task1.py源码中,共有4处有python语句 print(sum) (line1, line3, line7, line11)。 这4处使用的标识符sum是同一个对象的名称吗?如果不是,请以文字方式回答这4处中标识符 sum的作用域。 答:不是,line1是Built-in内置作用域,line3和line11是Global全局作用域,line7是Local局部作用域

实验任务2

task2_1.py

程序源码:

 1 def func1(a, b, c, d, e, f):
 2     return [a,b,c,d,e,f]
 3     #返回参数a,b,c,d,e,f构成的列表默认,参数按位置传递; 也支持关键字传递
 4 
 5 def func2(a, b, c,*, d, e, f):
 6     return [a,b,c,d,e,f]
 7     #返回参数a,b,c,d,e,f构成的列表,*后面的参数只能按关键字传递
 8 
 9 def func3(a, b, c, /, d, e, f):
10     return [a,b,c,d,e,f]
11     # 返回参数a,b,c,d,e,f构成的列表,/前面的参数只能按位置传递
12 
13 # func1调用:按位置传递、按参数传递都可以
14 print( func1(1,9,2,0,5,3) )
15 print( func1(a=1, b=9, c=2, d=0, e=5, f=3) )
16 print( func1(1,9,2, f=3, d=0, e=5))
17 
18 # func2调用:d,e,f必须按关键字传递
19 print( func2(11, 99, 22, d=0, e=55, f=33) )
20 print( func2(a=11, b=99, c=22, d=0, e=55, f=33) )
21 
22 # func3调用:a,b,c必须按位置传递
23 print( func3(111, 999, 222, 0, 555, 333))
24 print( func3(111, 999, 222, d=0, e=555, f=333) )

运行测试截图:

 

task2_2.py

程序源码:

1 list1 = [1, 9, 8, 4]
2 print(sorted(list1) )
3 print(sorted(list1, reverse=True))
4 print(sorted(list1, True))

运行测试截图:

 

2.python内置函数sorted()中,参数reverse的传递方式是否必须使用关键字传递? 答:必须使用关键字传递

task2_3.py

程序源码:

1 def func(a, b, c, /, *, d, e, f):
2     return( [a,b,c,d,e,f] )
3 
4 print(func(1,2,3,d=4,e=5,f=6))

运行测试截图:

 

 

实验任务3

task3.py

程序源码:

 1 def solve(a, b, c):
 2     '''求解一元二次方程, 返回方程的两个根:para: a,b,c: float 方程系数:return: tuple'''
 3     delta = b*b - 4*a*c
 4     delta_sqrt = abs(delta)**0.5
 5     p1 = -b/2/a
 6     p2 = delta_sqrt/2/a
 7     if delta >= 0:
 8         root1 = p1 + p2
 9         root2 = p1 - p2
10     else:
11         root1 = complex(p1, p2)
12         root2 = complex(p1, -p2)
13     return root1, root2
14 
15 print(solve.__doc__)
16 while True:
17     try:
18         t = input('输入一元二次方程系数a b c, 或者,输入#结束: ')
19         if t == '#':
20             print('结束计算,退出')
21             break
22         a, b, c = map(float, t.split())
23         if a == 0:
24             raise ValueError('a = 0, 不是一元二次方程')
25     except ValueError as e:
26         print(repr(e))
27         print()
28     except:
29         print('有其它错误发生\n')
30     else:
31         root1, root2 = solve(a, b, c)
32         print(f'root1 = {root1:.2f}, root2 = {root2:.2f}')
33         print()

运行测试截图:

 

 

实验任务4

task4.py

程序源码:

 1 def list_generator(a,b,c=1):
 2     lst=[]
 3     while a<=b:
 4         lst.append(a)
 5         a+=c
 6     return lst
 7 
 8 
 9 
10 list1 = list_generator(-5, 5)
11 print(list1)
12 list2 = list_generator(-5, 5, 2)
13 print(list2)
14 list3 = list_generator(1, 5, 0.5)
15 print(list3)

 

运行测试截图:

 

 实验任务5:

task5.py

实验源码:

 1 def is_prime(n):
 2     i=2
 3     while i<n and n%i!=0:
 4         i+=1
 5     if i==n:
 6         return 'True'
 7     else:
 8         return 'False'
 9 
10 lst=[]
11 for i in range(2,21):
12     if is_prime(i)=='True':
13         lst.append(i)
14 
15 for j in range(4,21,2):
16     for k in lst:
17         if is_prime(j-k)=='True':
18             print(f'{j}={k}+{j-k}')
19             break

运行测试截图:

 

实验任务6

task6.py

程序源码:

 1 # 编码函数encoder()定义
 2 def encoder(text):
 3     lst = list(text)
 4     for i in range(len(lst)):
 5         if 'a' <= lst[i].lower() <= 'u':
 6             lst[i] = chr(ord(lst[i]) + 5)
 7         elif 'v' <= lst[i].lower() <= 'z':
 8             lst[i] = chr(ord(lst[i]) - 21)
 9         else:
10             pass
11     return ''.join(lst)
12 # 解码函数decoder()定义
13 def decoder(text):
14     lst = list(text)
15     for i in range(len(lst)):
16         if 'f' <= lst[i].lower() <= 'z':
17             lst[i] = chr(ord(lst[i]) - 5)
18         elif 'a' <= lst[i].lower() <= 'e':
19             lst[i] = chr(ord(lst[i]) + 21)
20         else:
21             pass
22     return ''.join(lst)
23 
24 # 主体代码逻辑
25 text = input('输入英文文本: ')
26 encoded_text = encoder(text)
27 print('编码后的文本: ', encoded_text)
28 decoded_text = decoder(encoded_text)
29 print('对编码后的文本解码: ', decoded_text)

运行测试截图:

 

实验任务7

task7.py

程序源码:

 1 def collatz(n):
 2     if n%2==0:
 3         return n//2
 4     else:
 5         return n*3+1
 6 
 7 try:
 8     n=eval(input('Enter a positive integer:'))
 9     if n<=0 or n !=int(n):
10         raise
11 
12 except:
13     print('Error:must be a positive integer')
14 else:
15     lst=[n]
16     while n!=1:
17         n=collatz(n)
18         lst.append(n)
19     print(lst)

运行测试截图:

 

实验任务8

task8.py

程序源码:

 1 def func(n):
 2     if n==0:
 3         return 0
 4     else:
 5         return 2*func(n-1)+1
 6 
 7 
 8 while True:
 9     x=input()
10     if x=='#':
11         print('计算结束')
12         break
13     n=int(x)
14     ans=func(n)
15     print(f'n={n},ans={ans}')

运行测试截图:

 

 实验结论:

 

标签:py,return,函数,sum,编程,源码,实验,print,def
From: https://www.cnblogs.com/cl040302/p/17423113.html

相关文章

  • 实验4 函数与异常处理编程
    实验任务1task1.py实验源码:1print(sum)2sum=423print(sum)45definc(n):6sum=n+17print(sum)8returnsum910sum=inc(7)+inc(7)11print(sum)实验结果:实验任务2task2_1.py实验源码:1deffunc1(a,b,c,d,e,f):2......
  • OpenHarmony智能开发套件[内核编程·下]
    OpenHarmony智能开发套件[内核编程·下]前言本篇基于上一篇OpenHarmony智能开发套件[内核编程·上]继续介绍OpenHarmony在智能开发套件Hi3861上的内核编程学习。内核编程还不了解OpenHarmony内核的伙伴们可以参考上篇文章,上篇已经简单通俗地介绍了OpenHarmony的内核。OpenHarm......
  • 母函数详解(定义,模板代码,用法)
    本篇文章前半部分的母函数定义及讲解,和后面的题目推荐,在数学中,某个序列的母函数(Generatingfunction,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝......
  • 实验二 SQL 语言的使用(1)
    打开SQLServerManagementStudio。连接到测试数据库test1。在NewQuery窗口中输入以下SQL语句进行查询:(1)查询所有供应商情况,先按城市升序排列,城市相同按供应商名称降序排列。SELECT*FROMsORDERBYcityASC,snameDESC(2)查询所有零件情况,先按零件名称升序排列,零......
  • 实验二 SQL 语言的使用(实验体会)
    实验可以让学习者更深入地理解SQL语言的使用和操作。通过实验,学习者可以了解SQL语言的各种基础内容以及高级查询和操作方法。同时,实验也可以帮助学习者锻炼自己的问题解决能力和数据处理能力,让他们能够在日常工作中更加熟练地使用SQL语言完成自己的任务。总之,实验对于学习者来说是......
  • 数据库编程(SQL语言)实验体会
    首先需要在SQLServer数据库中创建一个名为[students]的数据库,在该数据库中创建三个表:Sudent表,包含字段Sno、Sname、Ssex、Sage、Sdept。Course表,包含字段Cno、Cname、Ccredit、Semester。SC表,包含字段Sno、Cno、Grade、XKLB。然后需要使用VB6设计一个......
  • 实验三 数据库完整性、安全性实现
    一、实验目的:使学生加深对数据库安全性和完整性的理解,并掌握SQLServer中有关用户、角色及操作权限的管理方法,学会创建和使用规则、缺省和触发器以及存储过程。二、实验要求:通过实验对数据进行完整性控制、安全性维护。三、实验步骤:1、开始→程序→MicrosoftSQLServe......
  • 实验三 数据库完整性、安全性实现(实验体会)
    在这个实验中,您将会学习如何创建数据库、表和触发器,并使用存储过程来实现一些数据查询和操作。此外,我们还将探讨如何授权用户和角色以保证数据库的安全性。在具体操作之前,请先下载并安装SQLServerManagementStudio(SSMS),然后按照以下步骤进行实验:打开SSMS,连接到本地数据库......
  • 实验三 数据库完整性、安全性实现(1)
    以下是可能的代码示例:创建数据库students、创建表Student、Course和SCCopyCodeCREATEDATABASEstudentsGOUSEstudentsGOCREATETABLEStudent(Snochar(7)PRIMARYKEY,Snamechar(10)NOTNULL,Ssexchar(2),Sagetinyint,Sdeptchar(20))G......
  • 实验一 数据库和表的建立、数据操作
    实验一数据库和表的建立、数据操作一、实验目的:掌握使用SQL语言进行数据定义和数据操纵的方法。二、实验要求:建立一个数据库stumanage,建立三个关系表student,course,sc。向表中插入数据,然后对数据进行删除、修改等操作,对关系、数据库进行删除操作。三、实验步骤:1、开始......