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

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

时间:2023-05-23 17:44:35浏览次数:40  
标签:11 func1 return 函数 编程 源码 实验 print def

task 1

程序源码:

 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 sum = inc(7) + inc(7)
10 print(sum)

运行截图:

Q1:  task1.py源码中,共有4处有python语句 print(sum) (line1, line3, line7, line11)。

这4处使用的标识符sum是同一个对象的名称吗?如果不是,请以文字方式回答这4行中标识符sum的作用域。 A1:不是,1.Built-in 2.Global 3.Local 4.Global   task2-1 程序源码:
 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 #func1调用:按位置传递、按参数传递都可以
23 print(func1(1,9,2,0,5,3))
24 print(func1(a=1,b=9,c=2,d=0,e=5,f=3))
25 print(func1(1,9,2,f=3,d=0,e=5))
26 
27 #func2调用:d,e,f必须按关键字传递
28 print(func2(11,99,22,d=0,e=55,f=33))
29 print(func2(a=11,b=99,c=22,d=0,e=55,f=33))
30 
31 #func3调用:a,b,c必须按位置传递
32 print(func3(111,999,222,0,555,333))
33 print(func3(111,999,222,d=0,e=555,f=333))

运行截图:

 

在line33后面加一行函数调用

程序源码:

 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 #func1调用:按位置传递、按参数传递都可以
23 print(func1(1,9,2,0,5,3))
24 print(func1(a=1,b=9,c=2,d=0,e=5,f=3))
25 print(func1(1,9,2,f=3,d=0,e=5))
26 
27 #func2调用:d,e,f必须按关键字传递
28 print(func2(11,99,22,d=0,e=55,f=33))
29 print(func2(a=11,b=99,c=22,d=0,e=55,f=33))
30 print(func2(11,99,22,0,55,33))
31 
32 #func3调用:a,b,c必须按位置传递
33 print(func3(111,999,222,0,555,333))
34 print(func3(111,999,222,d=0,e=555,f=333))

运行截图:

 

在line38后加一行函数调用

程序源码:

 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 #func1调用:按位置传递、按参数传递都可以
23 print(func1(1,9,2,0,5,3))
24 print(func1(a=1,b=9,c=2,d=0,e=5,f=3))
25 print(func1(1,9,2,f=3,d=0,e=5))
26 
27 #func2调用:d,e,f必须按关键字传递
28 print(func2(11,99,22,d=0,e=55,f=33))
29 print(func2(a=11,b=99,c=22,d=0,e=55,f=33))
30 
31 
32 #func3调用:a,b,c必须按位置传递
33 print(func3(111,999,222,0,555,333))
34 print(func3(111,999,222,d=0,e=555,f=333))
35 print(func3(a=111,b=999,c=222,0,555,333))

运行截图:

 

task2-2

程序源码:

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

运行截图:

 

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

A2: 是

task2-3

程序源码:

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

运行截图:

 

task3

程序源码:

 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 while True:
23     try:
24         t = input('输入一元二次方程系数a b c,或者,输出#结束:')
25         if t == '#':
26             print('结束计算,退出')
27             break
28         a,b,c = map(float,t.split())
29         if a == 0:
30             raise ValueError('a = 0,不是一元二次方程')
31     except ValueError as e:
32         print(repr(e))
33         print()
34     except:
35         print('有其他错误发生\n')
36     else:
37         root1,root2 = solve(a,b,c)
38         print(f'root1 = {root1:.2f},root2 = {root2:.2f}')
39         print()

运行截图:

在line23行前加一行代码:

程序源码:

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

运行截图:

 

task4

程序源码:

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

 

运行截图:

 

task5

程序源码:

 1 def is_prime(n):
 2     x = 2
 3     m = True
 4     if n == 2:
 5         return True
 6     while n > x:
 7         if n%x == 0 and m == True:
 8             m = False
 9         else:
10             x += 1
11     return m
12 
13 for number in range(2,21,2):
14     for x in range(2,int(number/2) + 1):
15         y = number-x
16         if is_prime(x) == True and is_prime(y) == True:
17             print('{} = {} +{}'.format(number,x,y))
18             break
19         

运行截图:

 

task6

程序源码:

 1 def encoder(text):
 2     list = []
 3     for i in text:
 4         if 65 <= ord(i) <= 85 or 97 <= ord(i) <= 117:
 5             list.append(chr(ord(i)+5))
 6         elif 86 <= ord(i) <= 90 or 118 <= ord(i) <= 122:
 7             list.append(chr(ord(i)-21))
 8         else:
 9             list.append(i)
10     return ''.join(list)
11 
12 def decoder(text):
13     list = []
14     for i in text:
15         if 70 <= ord(i) <= 90 or 102 <= ord(i) <= 122:
16             list.append(chr(ord(i)-5))
17         elif 65 <= ord(i) <= 69 or 97 <= ord(i) <= 101:
18             list.append(chr(ord(i)+21))
19         else:
20             list.append(i)
21     return ''.join(list)
22 
23 text = input('输入英文文本:')
24 
25 encoded_text = encoder(text)
26 print('编码后的文本: ', encoded_text)
27 decoded_text = decoder(encoded_text)
28 print('对编码后的文本解码: ', decoded_text)

运行截图:

 

task7

程序源码:

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

运行截图:

 

task8

程序源码:

 

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

运行截图:

 

标签:11,func1,return,函数,编程,源码,实验,print,def
From: https://www.cnblogs.com/p-s-y-0309/p/17408135.html

相关文章

  • 函数进阶
    函数进阶函数的动态参数(万能参数)*args**kwargs为了扩展,对于传入的实参数量不固定,而创建的*args用法在函数定义的时候,*args聚合,即将所有实参的位置参数聚合到一个元组上,并将这个元组赋值给args.deffuc1(a,*args):print(a)print(args)fuc1(1,2,3,4,5,6,7)......
  • 函数名的作用:函数也是第一类对象
    函数名的作用:函数也是第一类对象​ 1.函数名就是函数的内存地址2.函数名可以作为变量3.函数名可以作为函数的参数4.函数名还可以当做函数的返回值5.函数名可以作为容器类型的元素(列表中的一个元素)globals()locals()​ globals()#作用是返回全局变......
  • memset() 函数的使用
    //Lvxin1-1 memset.cpp //memset()函数的使用 #include<stdio.h>#include<string.h> intmain(){   charstr[]="almosteveryprogrammershouldknowmemset!";   doubled;   memset(&d,0,sizeof(d));   memset(str,'......
  • 实验四
    任务一实验代码1print(sum)2sum=423print(sum)45definc(n):6sum=n+17print(sum)8returnsum91011sum=inc(7)+inc(7)12print(sum)task运行结果截图不是同一个对象名称 1.Built-in。2和3Global。4.Local任务二......
  • 实验四
    task1:1print(sum)2sum=423print(sum)45definc(n):6sum=n+17print(sum)8returnsum910sum=inc(7)+inc(7)11print(sum)截图:task2-1:1deffunc1(a,b,c,d,e,f):2return[a,b,c,d,e,f]345deffunc2(a,......
  • (转载)PYTHON修饰器的函数式编程--纪念下陈皓老师
    PYTHON修饰器的函数式编程2014年的时候陈老师就写了这个python装饰器的文章,比现在的很多的文章都好谨以此文纪念下陈皓老师Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟DesignPattern里的Decorator搞混了,其实这是完全不同的两个东西。虽然好......
  • 并发编程(上)
    day22并发编程(上)网络编程,了解网络相关的知识点并且要知道几乎所有网络的通信本质上都是通过socket模块实现。例如:网站、网络爬虫。并发编程,提升代码执行的效率。原来代码执行需要20分钟,学习并发编程后可以加快到1分钟执行完毕。今日课程目标:初步了解进程和线程并可以基于线程......
  • 实验四 函数与异常处理编程
    实验任务一程序源代码:1print(sum)2sum=423print(sum)45definc(n):6sum=n+17print(sum)8returnsum9sum=inc(7)+inc(7)10print(sum)实验结果:问题:task1.py源码中,共有4处有python语句print(sum)(line1,line3,line7,line11)。这4......
  • 实验4 函数与异常处理编程
    实验任务1task11print(sum)2sum=423print(sum)45definc(n):6sum=n+17print(sum)8returnsum91011sum=inc(7)+inc(7)12print(sum)ViewCode不是同一个对象名称 1.Built-in。2和3Global。4.Local实验任务2task2-......
  • 实验二报告
    目录数据库安全性与完整性设计与实现数据库描述数据库安全性设计描述安全性的实现过程与验证过程数据库完整性设计描述完整性的具体实现与验证过程问题分析实验感想数据库安全性与完整性设计与实现数据库描述根据我国的行政机关人事基本信息管理体系,建立数据库针对有关人员、......