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

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

时间:2023-05-20 15:44:22浏览次数:36  
标签:截图 py return 函数 sum 编程 源码 实验 print

一、实验结论:

 1.实验任务1:task1.py

程序源码:

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

运行结果截图:

问题:task1.py源码中,共有4处有python语句 print(sum) (line1, line3, line7, line11)。 这4处使用的标识符sum是同一个对象的名称吗?如果不是,请以文字方式回答这4行中标识符sum的作用域。 

回答:不是,line1是Built-in内置作用域,line3和line11是Global全局作用域,line7是Local局部作用域。

 

2.实验任务2:task2_2.py

程序源码:

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

运行结果截图:

问题: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.实验任务3:task3.py

程序源码:

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

运行结果截图:

 

4.实验任务4:task4.py

程序源码:

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

运行结果截图:

 

5.实验任务5:task5.py

程序源码:

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

运行结果截图:

 

6.实验任务6:task6.py

程序源码:

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

运行结果截图:

 

7.实验任务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 except:
12     print('Error: must be a positive integer')
13 else:
14     ls=[n]
15     while n!=1:
16         n=collatz(n)
17         ls.append(n)
18     print(ls)

运行结果截图:

 

8.实验任务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 
14     n = int(x)
15     ans = func(n)
16     print(f'n = {n}, ans = {ans}')

运行结果截图:

 

二、实验总结:

1. 复习python中函数定义、调用的语法规则,及,位置参数、关键字参数 2. 练习python中try...except...else, raise语句用法,及,异常处理机制 3. 复习标识符在命名空间作用域的判定准则:L-E-G-B (Local, Enclosing, Global, Built-in)  4. 能识别适合用递归求解的问题,正确编写递归函数  5. 能正确分析标识符的作用域,合理使用局部对象、全局对象   

标签:截图,py,return,函数,sum,编程,源码,实验,print
From: https://www.cnblogs.com/myf-/p/17407655.html

相关文章

  • 面向对象编程OOP
    面向对象编程OOP面向过程思想步骤清晰简单,第一步作什么,第二步做什么....面对过程适合处理一些较为简单的问题。面向对象思想物以类聚,分类是思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。面向对象适......
  • day13-14 函数对象与装饰器
    【三】名称空间与闭包【1】名称空间名称空间即存放名字与对象映射/绑定关系的地方。对于x=3,Python会申请内存空间存放对象3,然后将名字x与3的绑定关系存放于名称空间中,delx表示清除该绑定关系。在程序执行期间最多会存在三种名称空间(1)内建名称空间伴随python解释器的......
  • day10-12 函数语法铺垫&函数的参数
    第八节函数【一】函数初识【一】函数的基本使用基于前一部分的学习,我们已经能开发一些功能简单的小程序了,但随着程序功能的增多,代码量随之增大,此时仍不加区分地把所有功能的实现代码放到一起,将会使得程序的组织结构不清晰,可读性变差,且程序中需要频繁使用同一功能时,只能重复......
  • 标准库中的生成器函数——用于映射的生成器函数
      aa 1#演示itertools.accumulate生成器函数23importitertools4importoperator567sample=[5,4,2,8,7,6,3,0,9,1]89e1=list(itertools.accumulate(sample))10print("默认求累计和:",e1)#[5,9,11,19,26,32,35,35,44,......
  • Jmeter函数助手9-char
    char函数用于将数字转换为unicode字符。Unicode字符数(十进制或0xhex):必填,填入数字 1、如果把各种文字编码形容为各地的方言,那么unicode统一码就是世界各国合作开发的一种语言。下图是unicode十进制对照表2、那么我们根据表格传入十进制${__char(35,81,90)},结果会输出对照......
  • From Java To Kotlin:空安全、扩展、函数、Lambda很详细,这次终于懂了
    FromJavaToKotlin,空安全、扩展、函数、Lambda概述(Summarize)• Kotlin是什么?• 可以做什么?• Android官方开发语言从Java变为Kotlin,Java有哪些问题?• Kotlin的优点• Kotlin特性(Features)Kotlin是什么?Kotlin出自于捷克一家软件研发公司 JetB......
  • gmpy2库常用函数------2023.5.20
    1.mpz():初始化大整数importgmpy2gmpy2.mpz(909090)result:mpz(909090)2.gcd(a,b):求大整数a,b的最大公因数importgmpy2gmpy2.gcd(6,18)result:mpz(6) 3.invert(x,m):求大整数x模m的逆元yimportgmpy2#4*6≡1mod23gmpy2.invert(4,23)result:mpz(6)4.is_eve......
  • COMP3009J 信息检索编程
    COMP3009J–InformationRetrievalProgrammingAssignmentThisassignmentisworth30%ofthefinalgradeforthemodule.DueDate:Sunday28thMay2023at23:55(i.e.beforebeginningofWeek15)Beforeyoubegin,downloadandextractthefiles``small_corpus......
  • 标准库中的生成器函数——用于过滤的生成器函数
    用于过滤的生成器函数:从输入的可迭代对象中产出元素的子集,而且不修改元素。 importitertoolsdefvowel(c):returnc.lower()in'aeiou'#返回所有真值对应的元素e1=list(filter(vowel,'Aardvark'))print("返回所有真值位置对应的元素:",e1)#['A','a','......
  • 实验4
    task1.py实验源码:1print(sum)2sum=423print(sum)45definc(n):6sum=n+17print(sum)8returnsum910sum=inc(7)+inc(7)11print(sum)运行结果:Answer:4处标识符sum不是同一个对象名称。line1:指内置函数sumline3:sum是赋值......