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

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

时间:2023-05-22 13:46:27浏览次数:34  
标签:return 函数 text sum 编程 实验 print def

实验任务1

task1-1

实验源码

print(sum)
sum = 42
print(sum)
def inc(n):
    sum = n+1
    print(sum)
    return sum
sum = inc(7) + inc(7)
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

task2-1

实验源码

def func1(a, b, c, d, e, f):
    return [a,b,c,d,e,f]
def func2(a, b, c,*, d, e, f):
    return [a,b,c,d,e,f]
def func3(a, b, c, /, d, e, f):
    return [a,b,c,d,e,f]
# func1调用:按位置传递、按参数传递都可以
print( func1(1,9,2,0,5,3) )
print( func1(a=1, b=9, c=2, d=0, e=5, f=3) )
print( func1(1,9,2, f=3, d=0, e=5))
# func2调用:d,e,f必须按关键字传递
print( func2(11, 99, 22, d=0, e=55, f=33) )
print( func2(a=11, b=99, c=22, d=0, e=55, f=33) )
# func3调用:a,b,c必须按位置传递
print( func3(111, 999, 222, 0, 555, 333))
print( func3(111, 999, 222, d=0, e=555, f=333) )

  实验截图

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

回答:是的。

task2-2

实验源码

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

  实验截图

实验任务3

task3-1

实验源码

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

  实验截图

实验任务4

task4-1

实验源码

def list_generator(x,y,z=1):
    list=[]
    while x<=y:
        list.append(x)
        x=x+z
    return list


list1=list_generator(-5,5)
print(list1)

list2=list_generator(-5,5,2)
print(list2)

list3=list_generator(1,5,0.5)
print(list3)

  实验截图

实验任务5

task5-1

实验源码

def is_prime(n):
    if n==2:
        return True
    else:
        for i in range(2,int((n**0.5)+1)):
            if n%i==0:
                return False
        return True


for i in range(4,21,2):
    for x in range(2,i):
        if is_prime(i-x):
            print(f'{i}={x}+{i-x}')
            break

  实验截图

实验任务6

task6-1

实验源码

def encoder(text):
    text=list(text)
    i=0
    while i< len(text):
        if text[i].isalpha():
            if text[i].islower():
                if ord(text[i])<=117:
                    text[i]=chr(ord(text[i])+5)
                else:
                    text[i]=chr(ord(text[i])+5-26)
            if text[i].isupper():
                if ord(text[i])<=85:
                    text[i] = chr(ord(text[i]) + 5)
                else:
                    text[i] = chr(ord(text[i]) + 5 - 26)
        i+=1
    return ''.join(text)
def decoder(text):
    text = list(text)
    i = 0
    while i < len(text):
        if text[i].isalpha():
            if text[i].islower():
                if ord(text[i]) >= 102:
                    text[i] = chr(ord(text[i]) - 5)
                else:
                    text[i] = chr(ord(text[i]) - 5 + 26)
            if text[i].isupper():
                if ord(text[i]) >= 46:
                    text[i] = chr(ord(text[i]) - 5)
                else:
                    text[i] = chr(ord(text[i]) - 5 + 26)
        i += 1
    return ''.join(text)
for i in range(3):
    title='Remote Interpreter Reinitialized'
    print(title.center(60,'*'))
    text=input('输入英文文本:')
    encoded_text=encoder(text)
    print('编码后的文本:',encoded_text)
    decoded_text=decoder(encoded_text)
    print('对编码后的文本解码:',decoded_text)

  实验截图

实验任务7

task7-1

实验源码

def collatz(n):
    lst = [n]
    while lst[-1] != 1:
        if lst[-1] % 2 == 0:
            lst.append(lst[-1]//2)
        else:
            lst.append(lst[-1]*3+1)
    return lst


try:
    n = int(input('Enter a positive integer:'))
    if n <= 0:
        raise
except:
    print('Error: must be a positive integer')
else:
    print(collatz(n))

  实验截图

实验任务8

task8-1

实验源码

def func(n):
    if n ==1:
        return 1
    else:
        return 1+2*func(n-1)


while True:
    x = input()
    if x == '#':
        print('计算结束')
        break
    n = int(x)
    ans = func(n)
    print(f'n = {n}, ans = {ans}')

  实验截图

 

标签:return,函数,text,sum,编程,实验,print,def
From: https://www.cnblogs.com/laix/p/17420380.html

相关文章

  • 打卡 c语言趣味编程 舍罕王的失算
    问题描述:相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋棋盘说:陛下,请您赏给我一些麦子吧。就在棋盘的第1格中放1粒,第2格放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依此放完棋盘上64格......
  • 编程
    编程是一项非常有趣和有用的技能,它可以帮助我们解决各种问题,并创造出令人惊叹的应用程序。在本文中,我将介绍一些编程的基础知识以及学习编程的好处。首先,编程是指使用计算机语言编写代码来创建应用程序或解决问题。计算机语言是一组特殊的指令,它们告诉计算机如何执行任务。编程语言......
  • 14-DSL查询语法-复合查询-算分函数查询
     复合(compound)查询:复合查询可以将其它简单查询组合起来,实现更复杂的搜索逻辑。常见的有两种:(1)fuctionscore:算分函数查询,可以控制文档相关性算分,控制文档排名(2)boolquery:布尔查询,利用逻辑关系组合多个其它的查询,实现复杂搜索 相关性算分当我们利用match查询时,文档结果会根据......
  • Perl:sprintf函数
    在Perl中,sprintf是一个用于格式化字符串的函数。它接受一个格式字符串和一系列参数,并返回根据格式字符串格式化后的字符串。sprintf的语法如下:sprintfFORMAT,LIST其中,FORMAT是格式字符串,指定了输出的格式。LIST是需要格式化的参数列表。sprintf将根据格式字符串对参数......
  • Python 2-04 匿名函数
    Python匿名函数一、匿名函数lambdaλlambda[args]:expression即lambda[参数列表]:表达式lambda_add=lambdax,y:x+ydefnormal_add(x,y):returnx+yassertlambda_add(2,3)==normal_add(2,3)注:assertexpression[,arguments]即:assert表达式......
  • Python 2-01 函数
    一、函数定义def函数名(参数列表):函数体判断一个数是不是素数?#方法一:for循环判断素数num=int(input('请输入一个正整数:'))foriinrange(2,int(num**0.5)+1):ifnotnum%i:print(f'{num}不是素数')breakelse: print(f'{num}是素数')......
  • Python 2-05 高阶函数
    一、函数式编程函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。而函数式编程(请注意多了一个“式”字)——FunctionalProgrammi......
  • 【React工作记录五十八】函数方式渲染页面
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语项目中添加按钮的两种方式编辑核心实现代码......
  • 计算机组成原理:控制器实验
    实验名称:4控制器实验实验目的掌握微程序控制器的组成原理。掌握微程序的编制、写入,观察微程序的运行过程。基于数据通路图,掌握微程序控制器的工作原理。基于微程序流程图,掌握微程序控制器的工作原理。基于信号时序图,掌握微程序控制器的工作原理。掌握一个简单CPU的组成......
  • 计算机组成原理:运算器实验
    实验名称:1.1基本运算器实验实验目的了解运算器的组成结构。基于数据通路图,观测并分析运算器的工作原理。基于信号时序图,观测并分析运算器的工作原理。实验设备PC机一台,TDX-CMX实验系统一套。实验预习学习使用TDX-CMX实验台,然后回答下列问题。实验台上“时序与......