Python保留了之前执行的值

这是一个寻找二次方程根的程序,但是当我多次执行程序时,前一次执行的值仍然保留在根列表中。如何清除它?

当我把 del root 在函数中 quad(),它给出了一个错误 UnboundLocalError: local variable 'root' referenced before assignment. 为什么?

import math
import cmath
root=[]
def roots(a:int,b:int,c:int):
    if ((b**2)-4*a*c)>=0:
        x1=(-b+(math.sqrt((b**2)-4*a*c)))/(2*a)
        x2=(-b-(math.sqrt((b**2)-4*a*c)))/(2*a)
    else:
        x1=(-b+cmath.sqrt((b**2)-4*a*c))/(2*a)
        x2=(-b-cmath.sqrt((b**2)-4*a*c))/(2*a)  
    root.append(x1)
    root.append(x2)
    return root

def quad():   
    a=int(input("enter the co-efficient of x^2-integer"))
    b=int(input("enter the co-efficient of x-integer"))
    c=int(input("enter the constant-integer"))
    roots(a,b,c)
    print(root)
    del root

解决方案:

转换 root 到一个局部变量。

import math
import cmath


def calculate_roots(a: int, b: int, c: int):
    roots = []
    if ((b ** 2) - 4 * a * c) >= 0:
        x1 = (-b + (math.sqrt((b ** 2) - 4 * a * c))) / (2 * a)
        x2 = (-b - (math.sqrt((b ** 2) - 4 * a * c))) / (2 * a)
    else:
        x1 = (-b + cmath.sqrt((b ** 2) - 4 * a * c)) / (2 * a)
        x2 = (-b - cmath.sqrt((b ** 2) - 4 * a * c)) / (2 * a)
    roots.append(x1)
    roots.append(x2)
    return roots


def quad():
    a = int(input("enter the co-efficient of x^2-integer"))
    b = int(input("enter the co-efficient of x-integer"))
    c = int(input("enter the constant-integer"))
    roots = calculate_roots(a, b, c)

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何在C#上使用Costum对象创建一个arrayList?

2022-9-8 22:11:32

未分类

如何将测试用例包括步骤从excel导出到Azure?

2022-9-8 22:22:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索