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

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

时间:2023-05-23 12:11:40浏览次数:32  
标签:return 函数 text 编程 num 实验 print def

实验任务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)

实验结果:

实验任务2

task2_1.py

实验源码:

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

实验结果:

在line31后加一行函数调用,运行截图为:

在line36后面加一行函数调用,运行截图为:

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

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 
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()

实验结果:

在line23前面加一行代码,运行截图为:

实验任务4

task4.py

实验源码:

 1 def list_generator(start, stop, step=1):
 2 
 3     result = []
 4     num = start
 5     while num < stop:
 6         result.append(num)
 7         num += step
 8     return result
 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(num):
 2     if num == 1:
 3         return False
 4     elif num == 2:
 5         return True
 6     else:
 7         for i in range(2, num):
 8             if num % i == 0:
 9                 return False
10         return True
11 
12 def goldbach_conjecture(num):
13     primes = []
14     for i in range(2, num):
15         if is_prime(i):
16             primes.append(i)
17     for prime in primes:
18         if num - prime in primes:
19             return f"{num} = {prime} + {num-prime}"
20     return None
21 
22 for num in range(4, 21, 2):
23     expression = goldbach_conjecture(num)
24     if expression:
25         print(expression)

实验结果:

 

实验任务6

task6.py

实验源码:

 1 def encoder(text):
 2     result = ''
 3     for c in text:
 4         if c.isalpha():
 5             if c.islower():
 6                 result += chr((ord(c) - 97 + 5) % 26 + 97)
 7             else:
 8                 result += chr((ord(c) - 65 + 5) % 26 + 65)
 9         else:
10             result += c
11     return result
12 def decoder(text):
13     decoded_text = ""
14     for a in text:
15         if a.isalpha():
16             if a.islower():
17                 decoded_text += chr((ord(a) - 97 + 21) % 26 + 97)
18             else:
19                 decoded_text += chr((ord(a) - 65 + 21) % 26 + 65)
20         else:
21             decoded_text += a
22     return decoded_text
23 text = input('输入英文文本: ')
24 encoded_text = encoder(text)
25 print('编码后的文本: ', encoded_text)
26 decoded_text = decoder(encoded_text)
27 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 
 8 try:
 9     n=eval(input('Enter a positive integer:'))
10     if type(n) is float or type(n) is str or n<=0:
11         raise ValueError('Error:must be a positive integer')
12 except ValueError as e:
13     print(repr(e))
14     print()
15 except:
16     print('Error:must be a positive integer')
17 else:
18     num=collatz(n)
19     list=[n,num]
20     while True:
21         if num!=1:
22             num=collatz(num)
23             list.append(num)
24         else:
25             break
26     print(list)

 

实验结果:

 

实验任务8

task8.py

实验源码:

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

 

实验结果:

 

 

 

                                                          

标签:return,函数,text,编程,num,实验,print,def
From: https://www.cnblogs.com/gaoyue124/p/17408138.html

相关文章

  • 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、开始......
  • 实验一 数据库和表的建立、数据操作(1)
    建立数据库stumanage:SQLCopyCodeCREATEDATABASEstumanageON(NAME='stumanage_data',FILENAME='D:\stumanage\stumanage_data.mdf',SIZE=5MB,MAXSIZE=50MB,FILEGROWTH=5MB)LOGON(NAME='stumanage_log',FILENAME=&......