【Python项目文件报错】【Type Error】TypeError: ‘tuple‘ object does not support item assignment【及解决方法】

一、问题描述

笔者最近在做一个Python量子计算相关的项目时,遇到如下报错

TypeError: 'tuple' object does not support item assignment

报错截图:

【Python项目文件报错】【Type Error】TypeError: ‘tuple‘ object does not support item assignment【及解决方法】_第1张图片

出错的部分代码如下:

def integral_orthonomality(x, n1, n2):
    return verphi(n1, x) * x * verphi(n2, x)


for n1 in range(n_max + 1):
    for n2 in range(n_max + 1):
        result = integrate.quad(
            integral_orthonomality,
            x_min, x_max,
            args=(n1, n2)
        )

        result[0] /= L  # 出错行
        if result[0] < L:
            result[0] = 0

        print("(" + str(n1) + ", " + str(n2) + ") " + str(result[0]))

其中变量result为一个积分运算的数值结果,目的是将 result[0] 输出,且在输出前先除以一个定值,并做近似

二、解决过程

1、 从报错信息中看出,引发该问题的原因是“元组对象不支持赋值操作”。首先(注释掉问题代码),添加几句,看数据类型

for n1 in range(n_max + 1):
    for n2 in range(n_max + 1):
        result = integrate.quad(
            integral_orthonomality,
            x_min, x_max,
            args=(n1, n2)
        )

        print(result)
        print(type(result))
        print(type(result[0]))
        # result[0] /= L
        # if result[0] < L:
        #     result[0] = 0

        print("(" + str(n1) + ", " + str(n2) + ") " + str(result[0]))

运行结果:

【Python项目文件报错】【Type Error】TypeError: ‘tuple‘ object does not support item assignment【及解决方法】_第2张图片
可以看出,变量result为包含2个浮点数的元组,但元组对象无法直接对其进行赋值。

2、 解决方法比较容易,另外定义一个变量float_result来存储原本 result[0] 的值即可。修改后的代码如下:

for n1 in range(n_max + 1):
    for n2 in range(n_max + 1):
        result = integrate.quad(
            integral_orthonomality,
            x_min, x_max,
            args=(n1, n2)
        )

        float_result = float(result[0])
        float_result /= L
        if float_result < 1.0 * 10 ** -9:
            float_result = 0

        print("(" + str(n1) + ", " + str(n2) + ") " + str(float_result))

报错消失,问题解决。

三、参考文献

《14天自造量子计算机(Python版)》,【日】远藤理平 著,陈欢 译,北京,中国水利水电出版社,2023年9月。

你可能感兴趣的:(量子计算,python,项目管理,python,开发语言,量子计算)