首页 > 其他分享 >实验4

实验4

时间:2023-05-20 13:11:21浏览次数:27  
标签:return text sum num 实验 print def

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)

运行结果:

Answer:4处标识符sum不是同一个对象名称。

line1:指内置函数sum

line3:sum是赋值变量

line7:sum是局部变量,只在函数内部有效

line11:sum是全局变量

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

运行结果:

在line33后增加print(func2(11,99,22,0,555,333)),错误信息:

错误原因:*后的参数必须使用关键字传递,即d,e,f必须用关键字传递

在line38后增加print(func3(a=111,b=222,c=999,0,555,333)),错误信息:

错误原因:a,b,c必须用位置传递,上述使用了关键字传递

task2_2.py:

实验源码:

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

运行结果:

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

运行结果:

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前增加代码print(solve._doc_):

task3'.py:

实验源码:

def solve(a, b, c):
    '''
    求解一元二次方程, 返回方程的两个根

    :para: a,b,c: float 方程系数
    :return: tuple
    '''
    delta = b*b - 4*a*c
    delta_sqrt = abs(delta)**0.5
    p1 = -b/2/a
    p2 = delta_sqrt/2/a

    if delta >= 0:
        root1 = p1 + p2
        root2 = p1 - p2
    else:
        root1 = complex(p1, p2)
        root2 = complex(p1, -p2)

    return root1, root2

print(solve.__doc__)
while True:
    try:
        t = input('输入一元二次方程系数a b c, 或者,输入#结束: ')
        if t == '#':
            print('结束计算,退出')
            break
        a, b, c = map(float, t.split())
        if a == 0:
            raise ValueError('a = 0, 不是一元二次方程')
    except ValueError as e:
        print(repr(e))
        print()
    except:
        print('有其它错误发生\n')
    else:
        root1, root2 = solve(a, b, c)
        print(f'root1 = {root1:.2f}, root2 = {root2:.2f}')
        print()

运行结果:

solve()的说明信息被打印出来了

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)

运行结果:

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)

运行结果:

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)

运行结果:

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     num = int(input("Enter a positive integer:"))
 9     if num <= 0:
10         raise ValueError
11     nums_list = [num]
12     while num != 1:
13         num = collatz(num)
14         nums_list.append(num)
15     print(nums_list)
16 except ValueError:
17     print("Error: must be a positive integer")

运行结果:

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

运行结果:

实验总结:

1.函数的命名应该清晰明了,能够准确地表达函数的功能。

2.函数的参数应该尽可能的少,以避免混淆和错误。

3.函数应该尽可能的短小精悍,每个函数都应该只做一件事情。这样可以提高代码的可读性和可维护性。

4.函数应该有明确的返回值,以便于调用时可以清楚地知道函数的执行结果。

 

标签:return,text,sum,num,实验,print,def
From: https://www.cnblogs.com/lsh111111/p/17417068.html

相关文章

  • 实验4
    实验任务1实验源码:print(sum)sum=42print(sum)definc(n):sum=n+1print(sum)returnsumsum=inc(7)+inc(7)print(sum) 测试截图:不是line1:内置函数名称line3:赋值名称line7:局部变量line11:全局变量 实验任务2(1)实验源码:deffunc1(a,b,c,d,e,......
  • 实验二十 128×64点阵型液晶显示实验
    实验二十128×64点阵型液晶显示实验实验目的1、了解点阵型液晶显示器的工作原理。2、了解点阵型液晶显示器控制方式。实验说明1、本实验箱采用内置控制器、不带字库的图形点阵液晶显示模块,点阵数为128×64。它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成,可完成......
  • 实验四
    task1.pyprint(sum)sum=42print(sum)definc(n):sum=n+1print(sum)returnsumsum=inc(7)+inc(7)print(sum) task2_1.pydeffunc1(a,b,c,d,e,f):return[a,b,c,d,e,f]deffunc2(a,b,c,*,d,e,f):return[a,b,c,d,e,f]deffunc3(a,b,c......
  • 实验4 函数与异常处理编程
    实验任务1:实验源码:print(sum)sum=42print(sum)definc(n):sum=n+1print(sum)returnsumsum=inc(7)+inc(7)print(sum)实验运行截图:答:line1:内置函数line3:变量名line7:局部变量line11:全局变量 实验任务2:task2_1:实验源码:deffunc1(a......
  • 实验四 函数与异常处理编程
      task.1print(sum)sum=42print(sum)definc(n):sum=n+1print(sum)returnsumsum=inc(7)+inc(7)print(sum) Aboutsum:1.内置函数名称      2.赋值名称           3.局部变量       ......
  • “Linux 基础入门(新版)”实验报告 Linux 目录结构及文件基本操作
    Linux目录结构及文件基本操作来Linux目录结构UNIX是以目录为主的,Linux也继承了这一优良特性。Linux是以树形目录结构的形式来构建整个系统的,可以理解为树形目录是一个用户可操作系统的骨架。虽然本质上无论是目录结构还是操作系统内核都是存储在磁盘上的,但从逻辑上来说Linux......
  • Linux 基础入门(新版)”实验报告 基本概念及操作
    实验2基本概念及操作1.Linux桌面环境介绍UNIX/Linux本身是没有图形界面的,UNIX/Linux发行版上看到的图形界面实际都只是运行在Linux系统之上的一套软件。现在这套软件为xorg(X.Org),而这套软件又是通过X窗口系统(XWindowSystem,也常被称为X11或X)实现的,X本身只是工具包及......
  • “Linux 基础入门(新版)”实验报告 用户及文件权限管理
    用户及文件权限管理1.查看用户$whoami或者$whomomlikes输出的第一列表示打开当前伪终端的用户的用户名,第二列的pts/0中pts表示伪终端,pts/0后面那个数字就表示打开的伪终端序号,你可以尝试再打开一个终端,然后在里面输入whoami,看第二列是不是就变成pts/1了,第......
  • 实验四 函数与异常处理
    print(sum)sum=42print(sum)definc(n):sum=n+1print(sum)returnsumsum=inc(7)+inc(7)print(sum) deffunc1(a,b,c,d,e,f):return[a,b,c,d,e,f]deffunc2(a,b,c,*,d,e,f):return[a,b,c,d,e,f]deffunc3(a,b,c,/,d,e,f):......
  • 实验十七 实时时钟实验
    实验十七实时时钟实验实验目的1.学习模拟I2C总线的软件实现方法。2.了解实时芯片PCF8563的读写方法。3.掌握单片机读写实时时钟芯片PCF8563的模块程序设计方法。实验说明实时时钟(RTC)器件介绍实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种......